儘管這很不幸,但在隱私瀏覽模式下使用ntfy Web應用程式也沒有多大意義,因為所有東西都存儲在瀏覽器存儲中。你可以在本GitHub問題中閱讀有關它的更多資訊,或者在Discord或Matrix上與我們交談。",
+ "message_bar_error_publishing": "發佈通知時出錯",
+ "nav_button_settings": "設定",
+ "notifications_delete": "刪除",
+ "notifications_attachment_copy_url_title": "將附件中連結地址複製到剪貼板",
+ "notifications_attachment_copy_url_button": "複製連結地址",
+ "notifications_attachment_open_title": "轉到 {{url}}",
+ "notifications_actions_http_request_title": "發送 HTTP {{method}} 到 {{url}}",
+ "notifications_actions_failed_notification": "通知失敗",
+ "notifications_actions_open_url_title": "轉到 {{url}}",
+ "notifications_none_for_topic_description": "要向此主題發送通知,只需使用 PUT 或 POST 到主題連結即可。",
+ "subscribe_dialog_subscribe_topic_placeholder": "主題名,例如 phil_alerts",
+ "notifications_no_subscriptions_description": "點擊 \"{{linktext}}\" 連結以建立或訂閱主題。之後,你可以使用 PUT 或 POST 發送訊息,你將在這裡收到通知。",
+ "publish_dialog_attachment_limits_file_reached": "超過 {{fileSizeLimit}} 文件限制",
+ "publish_dialog_title_placeholder": "主題標題,例如 磁碟空間警告",
+ "publish_dialog_email_label": "電子郵件",
+ "publish_dialog_button_send": "發送",
+ "publish_dialog_checkbox_markdown": "格式化為 Markdown",
+ "publish_dialog_attachment_limits_quota_reached": "超過配額,剩餘 {{remainingBytes}}",
+ "publish_dialog_attach_label": "附件連結地址",
+ "publish_dialog_click_reset": "移除點擊連結地址",
+ "publish_dialog_button_cancel": "取消",
+ "subscribe_dialog_subscribe_button_cancel": "取消",
+ "subscribe_dialog_subscribe_base_url_label": "服務地址地址",
+ "subscribe_dialog_subscribe_use_another_background_info": "當網頁程式未開啟, 將不會收到來自其他伺服器的通知",
+ "prefs_notifications_min_priority_description_any": "顯示所有通知,無論優先級如何",
+ "prefs_notifications_delete_after_title": "刪除通知",
+ "prefs_notifications_delete_after_three_hours": "三小時後",
+ "prefs_users_delete_button": "刪除用戶",
+ "prefs_users_table_user_header": "用戶",
+ "common_add": "新增",
+ "prefs_notifications_delete_after_one_day": "一天後",
+ "error_boundary_description": "這顯然不應該發生。對此非常抱歉。 如果你有時間,請在GitHub上報告,或通過Discord或Matrix告訴我們。",
+ "prefs_users_table": "用戶表",
+ "prefs_users_edit_button": "編輯用戶",
+ "publish_dialog_tags_placeholder": "英文逗號分隔標記列表,例如 warning, srv1-backup",
+ "publish_dialog_details_examples_description": "有關所有發送功能的範例和詳細說明,請參閱文檔。",
+ "subscribe_dialog_subscribe_description": "主題可能不受密碼保護,因此請選擇一個不容易被猜中的名字。訂閱後,你可以使用 PUT/POST 通知。",
+ "publish_dialog_delay_placeholder": "延期投遞,例如 {{unixTimestamp}}、{{relativeTime}}或「{{naturalLanguage}}」(僅限英語)",
+ "account_usage_basis_ip_description": "此帳戶的使用統計資訊和限制基於你的 IP 地址,因此可能會與其他用戶共享。上面顯示的限制是基於現有速率限制的近似值。",
+ "account_usage_cannot_create_portal_session": "無法打開計費門戶",
+ "account_delete_title": "刪除帳戶",
+ "account_delete_description": "永久刪除你的帳戶",
+ "signup_error_username_taken": "用戶名 {{username}} 已被取用",
+ "signup_error_creation_limit_reached": "已達到帳戶創建限制",
+ "login_title": "請登錄你的 ntfy 帳戶",
+ "action_bar_change_display_name": "更改顯示名稱",
+ "action_bar_reservation_add": "保留主題",
+ "action_bar_reservation_delete": "移除保留",
+ "action_bar_reservation_limit_reached": "達到限制",
+ "action_bar_profile_title": "個人資料",
+ "action_bar_profile_settings": "設定",
+ "action_bar_profile_logout": "登出",
+ "action_bar_mute_notifications": "靜音",
+ "action_bar_sign_in": "登錄",
+ "action_bar_sign_up": "註冊",
+ "nav_button_account": "帳戶",
+ "nav_upgrade_banner_label": "升級到 ntfy Pro",
+ "nav_upgrade_banner_description": "保留主題,更多訊息和郵件,以及更大的附件",
+ "alert_not_supported_context_description": "通知僅支援 HTTPS。這是 Notifications API 的限制。",
+ "display_name_dialog_title": "更改顯示名稱",
+ "display_name_dialog_description": "為訂閱列表中顯示的主題設置一個替代名稱。這有助於更輕鬆地識別名稱複雜的主題。",
+ "display_name_dialog_placeholder": "顯示名稱",
+ "reserve_dialog_checkbox_label": "保留主題並配置訪問",
"subscribe_dialog_subscribe_button_generate_topic_name": "生成名稱",
- "subscribe_dialog_login_title": "需要登入",
- "subscribe_dialog_login_username_label": "用戶名稱,例如 phil",
- "subscribe_dialog_error_topic_already_reserved": "主題已被保留",
+ "account_basics_username_description": "嘿,那是你 ❤",
+ "account_basics_password_description": "更改你的帳戶密碼",
+ "account_basics_password_dialog_title": "更改密碼",
+ "account_basics_password_dialog_current_password_label": "當前密碼",
+ "account_basics_password_dialog_new_password_label": "新密碼",
+ "account_basics_password_dialog_confirm_password_label": "確認密碼",
+ "account_basics_password_dialog_button_submit": "更改密碼",
+ "account_basics_password_dialog_current_password_incorrect": "密碼錯誤",
+ "account_usage_title": "使用量",
+ "account_usage_of_limit": "{{limit}} 的",
+ "account_usage_unlimited": "無限",
+ "account_usage_limits_reset_daily": "使用限制每天午夜 (UTC) 重置",
+ "account_basics_tier_title": "帳戶類型",
+ "account_basics_tier_description": "你帳戶的權限級別",
+ "account_basics_tier_admin": "管理員",
+ "account_basics_tier_admin_suffix_with_tier": "(有 {{tier}} 等級)",
+ "account_basics_tier_admin_suffix_no_tier": "(無等級)",
+ "account_basics_tier_basic": "基礎版",
+ "account_basics_tier_free": "免費",
+ "account_basics_tier_upgrade_button": "升級到專業版",
+ "account_basics_tier_change_button": "改變",
+ "account_basics_tier_paid_until": "訂閱已支付至 {{date}},並將自動續訂",
+ "account_basics_tier_manage_billing_button": "管理計費",
+ "account_usage_messages_title": "已發布訊息",
+ "account_usage_emails_title": "已發送電子郵件",
+ "account_usage_reservations_title": "保留主題",
+ "account_usage_reservations_none": "此帳戶沒有保留主題",
+ "account_usage_attachment_storage_title": "附件存儲",
+ "account_usage_attachment_storage_description": "每個文件 {{filesize}},在 {{expiry}} 後刪除",
+ "account_upgrade_dialog_button_pay_now": "立即付款並訂閱",
+ "account_upgrade_dialog_button_cancel_subscription": "取消訂閱",
+ "account_upgrade_dialog_button_update_subscription": "更新訂閱",
+ "account_tokens_dialog_title_create": "創建訪問令牌",
+ "account_tokens_dialog_title_edit": "編輯訪問令牌",
+ "account_tokens_dialog_title_delete": "刪除訪問令牌",
+ "account_tokens_dialog_button_cancel": "取消",
+ "account_tokens_dialog_expires_label": "訪問令牌過期於",
+ "account_tokens_dialog_expires_unchanged": "保持過期日期不變",
+ "account_tokens_dialog_expires_x_hours": "令牌在 {{hours}} 小時後過期",
+ "account_tokens_dialog_expires_x_days": "令牌在 {{days}} 天後過期",
+ "account_tokens_dialog_expires_never": "令牌永不過期",
+ "account_tokens_delete_dialog_title": "刪除訪問令牌",
+ "account_tokens_delete_dialog_description": "在刪除訪問令牌之前,請確保沒有應用程序或腳本正在活躍使用它。 此操作無法撤銷。",
+ "account_tokens_delete_dialog_submit_button": "永久删除令牌",
+ "prefs_users_description_no_sync": "用戶和密碼不會同步到你的賬戶。",
+ "prefs_users_table_cannot_delete_or_edit": "無法刪除或編輯已登錄用戶",
+ "prefs_reservations_title": "保留主題",
+ "prefs_reservations_description": "你可以在此處保留主題名稱供個人使用。保留主題使你擁有該主題的所有權,並允許你為其他用戶定義對該主題的訪問權限。",
+ "prefs_reservations_limit_reached": "你已達到保留主題限制。",
+ "prefs_reservations_add_button": "新增保留主題",
+ "prefs_reservations_edit_button": "編輯主題訪問",
+ "prefs_reservations_delete_button": "重置主題訪問",
+ "prefs_reservations_table": "保留主題表格",
+ "prefs_reservations_table_topic_header": "主題",
+ "prefs_reservations_table_access_header": "訪問",
+ "prefs_reservations_table_everyone_deny_all": "只有我可以發佈和訂閱",
+ "prefs_reservations_table_everyone_read_only": "我可以發佈和訂閱,每個人都可以訂閱",
+ "prefs_reservations_table_everyone_write_only": "我可以發佈和訂閱,每個人都可以發佈",
+ "prefs_reservations_table_everyone_read_write": "每個人都可以發佈和訂閱",
+ "prefs_reservations_table_not_subscribed": "未訂閱",
+ "prefs_reservations_table_click_to_subscribe": "點擊以訂閱",
+ "prefs_reservations_dialog_title_add": "保留主題",
+ "prefs_reservations_dialog_title_edit": "編輯保留主題",
+ "prefs_reservations_dialog_title_delete": "刪除主題保留",
+ "prefs_reservations_dialog_description": "保留主題使你擁有該主題的所有權,並允許你為其他用戶定義對該主題的訪問權限。",
+ "prefs_reservations_dialog_topic_label": "主題",
+ "prefs_reservations_dialog_access_label": "訪問",
+ "reservation_delete_dialog_description": "刪除保留會放棄對該主題的所有權,並允許其他人保留它。你可以保留或刪除現有郵件和附件。",
+ "reservation_delete_dialog_action_keep_title": "保留緩存的郵件和附件",
+ "reservation_delete_dialog_action_keep_description": "緩存在伺服器上的訊息和附件將對知道主題名稱的人公開可見。",
+ "reservation_delete_dialog_action_delete_title": "刪除緩存的郵件和附件",
+ "reservation_delete_dialog_action_delete_description": "緩存的郵件和附件將被永久刪除。此操作無法撤銷。",
+ "reservation_delete_dialog_submit_button": "刪除保留",
+ "account_delete_dialog_description": "這將永久刪除你的帳戶,包括存儲在伺服器上的所有數據。刪除後,你的用戶名將在 7 天內不可用。如果你真的想繼續,請在下面的框中使用你的密碼作確認。",
+ "account_delete_dialog_label": "密碼",
+ "account_delete_dialog_button_cancel": "取消",
+ "account_delete_dialog_button_submit": "永久刪除帳戶",
+ "account_delete_dialog_billing_warning": "刪除你的帳戶也會立即取消你的計費訂閱。你將無法再訪問計費儀錶板。",
+ "account_upgrade_dialog_title": "更改帳戶等級",
+ "account_upgrade_dialog_cancel_warning": "這將取消你的訂閱,並在 {{date}} 降級你的帳戶。在那一天,主題保留以及緩存在伺服器上的訊息將被刪除。",
+ "account_upgrade_dialog_proration_info": "按比例分配:在付費計劃之間升級時,差價將被立刻收取。在降級到較低級別時,餘額將被用於支付未來的賬單周期。",
+ "account_upgrade_dialog_reservations_warning_one": "所選等級允許的保留主題少於當前等級。在更改你的等級之前,請至少刪除 1 項保留。你可以在設置中刪除保留。",
+ "account_upgrade_dialog_reservations_warning_other": "所選等級允許的保留主題少於當前等級。在更改你的等級之前,請至少刪除 {{count}} 項保留。你可以在設置中刪除保留。",
+ "account_upgrade_dialog_tier_features_reservations_other": "保留 {{reservations}} 條主題",
+ "account_upgrade_dialog_tier_features_messages_other": "每日 {{messages}} 條訊息",
+ "account_upgrade_dialog_tier_features_emails_other": "每日 {{emails}} 條郵件",
+ "account_upgrade_dialog_tier_features_attachment_file_size": "每個文件 {{filesize}} ",
+ "signup_form_confirm_password": "確認密碼",
+ "signup_form_button_submit": "註冊",
+ "signup_form_toggle_password_visibility": "切換密碼可見性",
+ "signup_title": "創建一個 ntfy 帳戶",
+ "signup_form_username": "用戶名",
+ "signup_form_password": "密碼",
+ "signup_already_have_account": "已有帳戶?登錄!",
+ "signup_disabled": "註冊已禁用",
+ "login_form_button_submit": "登錄",
+ "login_link_signup": "註冊",
+ "login_disabled": "登錄已禁用",
+ "action_bar_account": "帳戶",
+ "action_bar_reservation_edit": "更改保留",
+ "subscribe_dialog_error_topic_already_reserved": "主題已保留",
"account_basics_title": "帳戶",
- "account_basics_username_title": "用戶名稱",
- "account_basics_username_description": "這就是你了❤",
+ "account_basics_username_title": "用戶名",
"account_basics_username_admin_tooltip": "你是管理員",
"account_basics_password_title": "密碼",
- "account_basics_password_description": "更變你的密碼",
- "account_basics_password_dialog_title": "更變密碼",
- "account_basics_password_dialog_new_password_label": "新的密碼",
- "account_basics_password_dialog_confirm_password_label": "確認密碼",
- "account_basics_password_dialog_button_submit": "更變密碼",
- "account_usage_unlimited": "無限制",
- "account_usage_title": "已經使用",
- "account_usage_limits_reset_daily": "使用限制每天午夜重置",
- "account_basics_tier_title": "帳戶類型",
- "account_basics_tier_description": "你的能量值",
- "account_basics_tier_admin": "管理員",
- "account_basics_tier_admin_suffix_with_tier": "(擁有 {{tier}})",
- "account_basics_tier_admin_suffix_no_tier": "(無層)",
- "account_basics_tier_basic": "基礎",
- "account_basics_tier_free": "免費",
- "account_basics_tier_upgrade_button": "升級至專業版",
- "publish_dialog_email_placeholder": "轉發到電郵,例如 phil@example.com",
- "subscribe_dialog_subscribe_topic_placeholder": "主題名稱,例如 phil_alerts",
- "publish_dialog_attached_file_remove": "移除附件",
- "subscribe_dialog_subscribe_description": "主題可能不受到密碼保護, 所以盡量選擇一個不會容易被猜中的主題名稱。 一旦已訂閱,你能夠 PUT/POST 通訊。",
- "subscribe_dialog_login_description": "這個主題受密碼保護,請輸入用戶名稱及密碼以訂閱主題。",
- "account_basics_password_dialog_current_password_label": "現在的密碼",
- "account_basics_password_dialog_current_password_incorrect": "密碼不正確",
- "account_basics_tier_change_button": "更變",
- "common_add": "新增",
- "signup_form_confirm_password": "確認密碼",
- "publish_dialog_drop_file_here": "拖曳檔案到此",
+ "account_basics_tier_payment_overdue": "你的付款已逾期。請更新你的付款方式,否則你的帳戶將很快被降級。",
+ "account_basics_tier_canceled_subscription": "你的訂閱已取消,並將在 {{date}} 降級為免費帳戶。",
+ "account_upgrade_dialog_tier_features_attachment_total_size": "{{totalsize}} 總存儲空間",
+ "account_upgrade_dialog_tier_selected_label": "已選",
+ "account_upgrade_dialog_tier_current_label": "當前",
+ "account_upgrade_dialog_button_cancel": "取消",
+ "account_upgrade_dialog_button_redirect_signup": "立即註冊",
+ "account_tokens_title": "訪問令牌",
+ "account_tokens_description": "通過 ntfy API 發布和訂閱時使用訪問令牌,因此你不必發送你的帳戶憑證。查看文檔以了解更多資訊。",
+ "account_tokens_table_token_header": "令牌",
+ "account_tokens_table_label_header": "標籤",
+ "account_tokens_table_last_access_header": "最後訪問",
+ "account_tokens_table_expires_header": "過期",
+ "account_tokens_table_never_expires": "永不過期",
+ "account_tokens_table_current_session": "當前瀏覽器會話",
+ "common_copy_to_clipboard": "複製到剪貼板",
+ "account_tokens_table_copied_to_clipboard": "已複製訪問令牌",
+ "account_tokens_table_cannot_delete_or_edit": "無法編輯或刪除當前會話令牌",
+ "account_tokens_table_create_token_button": "創建訪問令牌",
+ "account_tokens_table_last_origin_tooltip": "於IP地址 {{ip}},點擊查找",
+ "account_tokens_dialog_label": "標籤,例如:Radarr 通知",
+ "account_tokens_dialog_button_create": "創建令牌",
+ "account_tokens_dialog_button_update": "更新令牌",
"account_basics_tier_interval_monthly": "每月",
- "common_copy_to_clipboard": "複製到剪貼簿",
- "publish_dialog_call_label": "電話",
- "publish_dialog_call_reset": "移除電話",
- "publish_dialog_chip_call_label": "電話",
- "account_usage_reservations_none": "此帳戶沒有預留主題",
- "account_usage_attachment_storage_title": "附件容量",
- "account_basics_tier_canceled_subscription": "你的付費訂閱已取消,並於 {{date}} 下調為免費帳戶。",
- "account_usage_messages_title": "已發佈的信息",
- "publish_dialog_chip_call_no_verified_numbers_tooltip": "沒有已驗證的電話號碼",
"account_basics_tier_interval_yearly": "每年",
- "account_usage_emails_title": "已發送電郵",
- "account_usage_attachment_storage_description": "每個檔案約 {{filesize}},將於 {{expiry}} 後刪除",
- "publish_dialog_attachment_limits_file_and_quota_reached": "已超過 {{fileSizeLimit}} 檔案上限,尚餘 {{remainingBytes}}",
- "account_basics_tier_paid_until": "已付費訂閱至 {{date}} 並自動續期",
- "account_basics_tier_payment_overdue": "你的費用已逾期。請更新付款方法,否則你的戶口等級將會下調。",
- "publish_dialog_call_item": "致電 {{number}}",
- "account_basics_tier_manage_billing_button": "管理付款方式"
+ "account_upgrade_dialog_interval_monthly": "每月",
+ "account_upgrade_dialog_interval_yearly": "每年",
+ "account_upgrade_dialog_interval_yearly_discount_save": "節省 {{discount}}%",
+ "account_upgrade_dialog_interval_yearly_discount_save_up_to": "節省高達 {{discount}}%",
+ "account_upgrade_dialog_tier_features_no_reservations": "無保留主題",
+ "account_upgrade_dialog_tier_price_per_month": "月",
+ "account_upgrade_dialog_tier_price_billed_monthly": "{{price}} 每年。按月計費。",
+ "account_upgrade_dialog_tier_price_billed_yearly": "{{價格}} 按年計費。節省 {{save}}。",
+ "account_upgrade_dialog_billing_contact_email": "有關賬單問題,請直接聯繫我們 。",
+ "account_upgrade_dialog_billing_contact_website": "有關賬單問題,請參考我們的網站 。",
+ "publish_dialog_call_item": "撥打電話 {{number}}",
+ "publish_dialog_call_label": "撥號",
+ "publish_dialog_chip_call_label": "撥號",
+ "publish_dialog_chip_call_no_verified_numbers_tooltip": "未驗證的電話號碼",
+ "account_basics_phone_numbers_title": "電話號碼",
+ "account_basics_phone_numbers_description": "電話通知",
+ "account_basics_phone_numbers_dialog_description": "要使用來電通知功能,你需要新增並驗證至少一個電話號碼。可以通過短信或電話驗證。",
+ "account_basics_phone_numbers_dialog_code_label": "驗證碼",
+ "account_basics_phone_numbers_dialog_code_placeholder": "例如:123456",
+ "account_basics_phone_numbers_dialog_check_verification_button": "確認碼",
+ "account_basics_phone_numbers_dialog_channel_sms": "短信",
+ "account_basics_phone_numbers_dialog_channel_call": "撥打",
+ "publish_dialog_call_reset": "清空撥號",
+ "account_basics_phone_numbers_no_phone_numbers_yet": "無可執行的電話號碼",
+ "account_basics_phone_numbers_dialog_title": "新增電話號碼",
+ "account_basics_phone_numbers_copied_to_clipboard": "電話號碼已複製到剪貼板",
+ "account_basics_phone_numbers_dialog_number_label": "電話號碼",
+ "account_basics_phone_numbers_dialog_number_placeholder": "例如:+1222333444",
+ "account_usage_calls_title": "已撥打電話",
+ "account_usage_calls_none": "此帳號無法撥打電話",
+ "account_upgrade_dialog_tier_features_reservations_one": "保留一條主題",
+ "account_upgrade_dialog_tier_features_emails_one": "每日一封郵件",
+ "account_upgrade_dialog_tier_features_calls_one": "每日一通電話",
+ "account_basics_phone_numbers_dialog_verify_button_sms": "發送資訊",
+ "account_basics_phone_numbers_dialog_verify_button_call": "撥打電話",
+ "account_upgrade_dialog_tier_features_messages_one": "每日一條訊息",
+ "account_upgrade_dialog_tier_features_calls_other": "每日{{calls}} 通電話",
+ "account_upgrade_dialog_tier_features_no_calls": "沒有電話",
+ "web_push_subscription_expiring_title": "通知會被暫停",
+ "web_push_subscription_expiring_body": "開啟ntfy以繼續接收通知",
+ "web_push_unknown_notification_title": "接收到不明通知",
+ "web_push_unknown_notification_body": "你可能需要開啟網頁來更新ntfy"
}
From 1bd77a83bddf9fbc7aa4aa13559eb54cc573af63 Mon Sep 17 00:00:00 2001
From: "vardy.ng"
Date: Sat, 2 Sep 2023 17:34:44 -0400
Subject: [PATCH 16/92] Updated translation for Traditional and Simplified
Chinese, simplified translation for "higher"
---
web/public/static/langs/zh_Hans.json | 6 +++---
web/public/static/langs/zh_Hant.json | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/web/public/static/langs/zh_Hans.json b/web/public/static/langs/zh_Hans.json
index f9a9fbcd..e26e7f14 100644
--- a/web/public/static/langs/zh_Hans.json
+++ b/web/public/static/langs/zh_Hans.json
@@ -123,9 +123,9 @@
"prefs_notifications_min_priority_description_x_or_higher": "仅显示优先级为{{number}}({{name}})或以上的通知",
"prefs_notifications_min_priority_description_max": "仅显示最高优先级的通知",
"prefs_notifications_min_priority_any": "任意优先级",
- "prefs_notifications_min_priority_low_and_higher": "低优先级和更高优先级",
- "prefs_notifications_min_priority_default_and_higher": "默认优先级和更高优先级",
- "prefs_notifications_min_priority_high_and_higher": "高优先级和更高优先级",
+ "prefs_notifications_min_priority_low_and_higher": "低优先级或更高",
+ "prefs_notifications_min_priority_default_and_higher": "默认优先级或更高",
+ "prefs_notifications_min_priority_high_and_higher": "高优先级或更高",
"prefs_notifications_min_priority_max_only": "仅最高优先级",
"prefs_notifications_delete_after_never": "从不",
"prefs_notifications_delete_after_one_month": "一月后",
diff --git a/web/public/static/langs/zh_Hant.json b/web/public/static/langs/zh_Hant.json
index ae32e765..a42b0292 100644
--- a/web/public/static/langs/zh_Hant.json
+++ b/web/public/static/langs/zh_Hant.json
@@ -123,9 +123,9 @@
"prefs_notifications_min_priority_description_x_or_higher": "僅顯示優先級為{{number}}({{name}})或以上的通知",
"prefs_notifications_min_priority_description_max": "僅顯示最高優先級的通知",
"prefs_notifications_min_priority_any": "任意優先級",
- "prefs_notifications_min_priority_low_and_higher": "低優先級和更高優先級",
- "prefs_notifications_min_priority_default_and_higher": "默認優先級和更高優先級",
- "prefs_notifications_min_priority_high_and_higher": "高優先級和更高優先級",
+ "prefs_notifications_min_priority_low_and_higher": "低優先級或更高",
+ "prefs_notifications_min_priority_default_and_higher": "默認優先級或更高",
+ "prefs_notifications_min_priority_high_and_higher": "高優先級或更高",
"prefs_notifications_min_priority_max_only": "僅最高優先級",
"prefs_notifications_delete_after_never": "從不",
"prefs_notifications_delete_after_one_month": "一個月後",
From 59bf3885341ab0da090ecab4cc9852ee817cc055 Mon Sep 17 00:00:00 2001
From: binwiederhier
Date: Sun, 3 Sep 2023 07:13:04 -0400
Subject: [PATCH 17/92] FAQ
---
docs/faq.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/docs/faq.md b/docs/faq.md
index 8844566f..6ff97cfe 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -76,6 +76,18 @@ However, if you still want to disable it, you can do so with the `web-root: disa
Think of the ntfy web app like an Android/iOS app. It is freely available and accessible to anyone, yet useless without
a proper backend. So as long as you secure your backend with ACLs, exposing the ntfy web app to the Internet is harmless.
+## If topic names are public, could I not just brute force them?
+If you don't have [ACLs set up](config.md#access-control), the topic name is your password, it says so everywhere. If you
+choose a easy-to-guess/dumb topic name, people will be able to guess it. If you choose a randomly generated topic name,
+the topic is as good as a good password.
+
+As for brute forcing: It's not possible to brute force a ntfy server for very long, as you'll get quickly rate limited.
+In the default configuration, you'll be able to do 60 requests as a burst, and then 1 request per 10 seconds. Assuming you
+choose a random 10 digit topic name using only A-Z, a-z, 0-9, _ and -, there are 64^10 possible topic names. Even if you
+could do hundreds of requests per seconds (which you cannot), it would take many years to brute force a topic name.
+
+For ntfy.sh, there's even a fail2ban in place which will ban your IP pretty quickly.
+
## Where can I donate?
I have just very recently started accepting donations via [GitHub Sponsors](https://github.com/sponsors/binwiederhier).
I would be humbled if you helped me carry the server and developer account costs. Even small donations are very much
From 2305ebca244fb60aa784a3b79270ae6f33b8ee48 Mon Sep 17 00:00:00 2001
From: binwiederhier
Date: Sun, 3 Sep 2023 09:33:54 -0400
Subject: [PATCH 18/92] Add known issues
---
docs/known-issues.md | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/docs/known-issues.md b/docs/known-issues.md
index 401d82a1..190e2bce 100644
--- a/docs/known-issues.md
+++ b/docs/known-issues.md
@@ -27,6 +27,13 @@ Be sure that in your selfhosted server:
* Set `upstream-base-url: "https://ntfy.sh"` (**not your own hostname!**)
* Ensure that the URL you set in `base-url` **matches exactly** what you set the Default Server in iOS to
+## iOS app seeing "New message", but not real message content
+If you see `New message` notifications on iOS, your iPhone can likely not talk to your self-hosted server. Be sure that
+your iOS device and your ntfy server are either on the same network, or that your phone can actually reach the server.
+
+Turn on tracing/debugging on the server (via `log-level: trace` or `log-level: debug`, see [troubleshooting](troubleshooting.md)),
+and read docs on [iOS instant notifications](https://docs.ntfy.sh/config/#ios-instant-notifications).
+
## Firefox on Android not automatically subscribing to web push (see [#789](https://github.com/binwiederhier/ntfy/issues/789))
ntfy defaults to web-push based subscriptions when installed as a [progressive web app](./subscribe/pwa.md). Firefox
Android has an [open bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1796434) where it reports the PWA mode incorrectly.
From 85740d810bf0f6c2e243ce70967c3a7a7981ed0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gustavo=20de=20Le=C3=B3n?=
Date: Sun, 3 Sep 2023 18:55:57 -0600
Subject: [PATCH 19/92] Fix cloudflarePriorityIgnore
- Now, only if the header being processed is the "priority" header, the cloudflarePriorityIgnore function is called, solving problems with that header injected by CF
- we make the check with regex now.
---
server/util.go | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/server/util.go b/server/util.go
index ee87f2ed..9cbae2e4 100644
--- a/server/util.go
+++ b/server/util.go
@@ -9,7 +9,7 @@ import (
"net/http"
"net/netip"
"strings"
- /*"regexp"*/
+ "regexp"
)
var mimeDecoder mime.WordDecoder
@@ -51,7 +51,7 @@ func readParam(r *http.Request, names ...string) string {
func readHeaderParam(r *http.Request, names ...string) string {
for _, name := range names {
- value := maybeDecodeHeader(r.Header.Get(name))
+ value := maybeDecodeHeader(r.Header.Get(name), name)
if value != "" {
return strings.TrimSpace(value)
}
@@ -127,12 +127,19 @@ func fromContext[T any](r *http.Request, key contextKey) (T, error) {
return t, nil
}
-func maybeDecodeHeader(header string) string {
+func maybeDecodeHeader(header string, name string) string {
decoded, err := mimeDecoder.DecodeHeader(header)
if err != nil {
- return cloudflarePriorityIgnore(header)
+ if name == "priority"{
+ return cloudflarePriorityIgnore(header)
+ }
+ return header
}
- return cloudflarePriorityIgnore(decoded)
+
+ if name == "priority"{
+ return cloudflarePriorityIgnore(decoded)
+ }
+ return decoded
}
// Ignore new HTTP Priority header (see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-priority)
@@ -140,15 +147,10 @@ func maybeDecodeHeader(header string) string {
// If the Priority header is set to "u=*, i" or "u=*" (by cloudflare), the header will be ignored.
// And continue searching for another header (x-priority, prio, p) or in the Query parameters.
func cloudflarePriorityIgnore(value string) string {
- if strings.HasPrefix(value, "u=") {
- return ""
- }
-
- // The same but with regex
- /* pattern := `^u=\d+\s*,\s*i|u=\d+$`
+ pattern := `^u=\d,\s(i|\d)$|^u=\d$`
regex := regexp.MustCompile(pattern)
if regex.MatchString(value) {
return ""
- } */
+ }
return value
}
From 4c4d772a5f1b3a6d6c90b1a3654bee4220d1f92d Mon Sep 17 00:00:00 2001
From: Bastien S
Date: Thu, 31 Aug 2023 13:59:14 +0000
Subject: [PATCH 20/92] Translated using Weblate (French)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/fr/
---
web/public/static/langs/fr.json | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/web/public/static/langs/fr.json b/web/public/static/langs/fr.json
index cf4bb721..91f1b65a 100644
--- a/web/public/static/langs/fr.json
+++ b/web/public/static/langs/fr.json
@@ -272,7 +272,7 @@
"account_delete_dialog_button_submit": "Supprimer définitivement le compte",
"account_delete_dialog_billing_warning": "Supprimer votre compte annule aussi immédiatement votre facturation. Vous n'aurez plus accès à votre tableau de bord de facturation.",
"account_upgrade_dialog_title": "Changer le tarif du compte",
- "account_upgrade_dialog_proration_info": "Facturation : Lors d'un changement entre un plan payant et un autre, la différence de prix sera créditée ou remboursée sur la prochaine facture. Vous ne recevrez pas d'autre facture avant la fin de la prochaine période de facturation.",
+ "account_upgrade_dialog_proration_info": "Facturation : Lors d'un changement vers un tiers payant, la différence de prix sera débitée immédiatement. En passant d'un tiers payant a gratuit, votre solde sera utilisé pour payer de futur factures.",
"account_upgrade_dialog_reservations_warning_other": "Le tarif sélectionné autorise moins de sujets réservés que votre tarif actuel. Avant de changer de tarif, veuillez supprimer au moins {{count}} sujets réservés. Vous pouvez supprimer des sujets réservés dans les Paramètres.",
"account_upgrade_dialog_tier_features_reservations_other": "{{reservations}} sujets réservés",
"account_upgrade_dialog_tier_features_messages_other": "{{messages}} messages journaliers",
@@ -368,8 +368,17 @@
"account_basics_phone_numbers_dialog_code_placeholder": "Ex : 123456",
"account_basics_phone_numbers_dialog_check_verification_button": "Code de confirmarion",
"account_basics_phone_numbers_dialog_channel_sms": "SMS",
- "account_basics_phone_numbers_dialog_channel_call": "Appel",
+ "account_basics_phone_numbers_dialog_channel_call": "Appeler",
"account_usage_calls_none": "Aucun appels téléphoniques ne peut être fait avec ce compte",
"publish_dialog_call_reset": "Supprimer les appels téléphoniques",
- "publish_dialog_chip_call_label": "Appel téléphonique"
+ "publish_dialog_chip_call_label": "Appel téléphonique",
+ "account_upgrade_dialog_tier_features_messages_one": "{{messages}} message journalier",
+ "account_upgrade_dialog_tier_features_emails_one": "{{emails}} mail journalier",
+ "account_upgrade_dialog_tier_features_calls_other": "{{calls}} appels journaliers",
+ "account_upgrade_dialog_tier_features_no_calls": "Aucun appel",
+ "publish_dialog_call_item": "Appeler le numéro {{number}}",
+ "publish_dialog_chip_call_no_verified_numbers_tooltip": "Aucun numéro de téléphone vérifié",
+ "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} sujet réservé",
+ "account_upgrade_dialog_tier_features_calls_one": "{{calls}} appels journaliers",
+ "account_usage_calls_title": "Appels téléphoniques passés"
}
From 6748a2f2f30d73b546a8d2bd174c1ef0bd223509 Mon Sep 17 00:00:00 2001
From: Max Oliver
Date: Sat, 2 Sep 2023 19:43:47 +0000
Subject: [PATCH 21/92] Translated using Weblate (Portuguese (Brazil))
Currently translated at 57.5% (220 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/pt_BR/
---
web/public/static/langs/pt_BR.json | 35 +++++++++++++++++++++++++-----
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/web/public/static/langs/pt_BR.json b/web/public/static/langs/pt_BR.json
index 16ba3a14..1bb0cd92 100644
--- a/web/public/static/langs/pt_BR.json
+++ b/web/public/static/langs/pt_BR.json
@@ -191,10 +191,33 @@
"error_boundary_unsupported_indexeddb_description": "O ntfy web app precisa do IndexedDB para funcionar, e seu navegador não suporta IndexedDB no modo de navegação privada.
Embora isso seja lamentável, também não faz muito sentido usar o ntfy web app no modo de navegação privada de qualquer maneira, porque tudo é armazenado no armazenamento do navegador. Você pode ler mais sobre isso nesta edição do GitHub, ou falar conosco em Discord ou Matrix.",
"action_bar_reservation_add": "Reserve topic",
"action_bar_reservation_edit": "Change reservation",
- "signup_disabled": "Signup is disabled",
- "signup_error_username_taken": "Username {{username}} is already taken",
- "signup_error_creation_limit_reached": "Account creation limit reached",
- "action_bar_reservation_delete": "N",
- "action_bar_account": "Account",
- "action_bar_change_display_name": "Change display name"
+ "signup_disabled": "Registrar está desativado",
+ "signup_error_username_taken": "Usuário {{username}} já existe",
+ "signup_error_creation_limit_reached": "Limite de criação de contas atingido",
+ "action_bar_reservation_delete": "Remover reserva",
+ "action_bar_account": "Conta",
+ "action_bar_change_display_name": "Change display name",
+ "common_copy_to_clipboard": "Copiar para área de transferência",
+ "login_link_signup": "Registrar",
+ "login_title": "Entrar na sua conta ntfy",
+ "login_form_button_submit": "Entrar",
+ "login_disabled": "Login está desabilitado",
+ "action_bar_reservation_limit_reached": "Limite atingido",
+ "action_bar_profile_title": "Perfil",
+ "action_bar_profile_settings": "Configurações",
+ "action_bar_profile_logout": "Sair",
+ "action_bar_sign_in": "Entrar",
+ "action_bar_sign_up": "Registrar",
+ "nav_button_account": "Conta",
+ "signup_title": "Criar uma conta ntfy",
+ "signup_form_username": "Usuário",
+ "signup_form_password": "Senha",
+ "signup_form_confirm_password": "Confirmar senha",
+ "signup_form_button_submit": "Registrar",
+ "account_basics_phone_numbers_title": "Telefones",
+ "signup_form_toggle_password_visibility": "Ativar visibilidade de senha",
+ "signup_already_have_account": "Já possui uma conta? Entrar!",
+ "nav_upgrade_banner_label": "Atualizar para ntfy Pro",
+ "account_basics_phone_numbers_dialog_description": "Para usar o recurso de notificação de chamada, é necessários adicionar e verificar pelo menos um número de telefone. A verificação pode ser feita por SMS ou chamada telefônica.",
+ "account_basics_phone_numbers_description": "Para notificações de chamada telefônica"
}
From 4b0d1e448dbaf45222d63cd2e828f5f2c93c2cea Mon Sep 17 00:00:00 2001
From: Mattia
Date: Fri, 1 Sep 2023 09:37:08 +0000
Subject: [PATCH 22/92] Translated using Weblate (Italian)
Currently translated at 70.6% (270 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/it/
---
web/public/static/langs/it.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/web/public/static/langs/it.json b/web/public/static/langs/it.json
index a895e1a6..72cee7d6 100644
--- a/web/public/static/langs/it.json
+++ b/web/public/static/langs/it.json
@@ -267,5 +267,6 @@
"publish_dialog_chip_call_label": "Chiamata telefonica",
"publish_dialog_chip_call_no_verified_numbers_tooltip": "Nessun numero verificato",
"account_basics_phone_numbers_title": "Numeri di telefono",
- "account_basics_phone_numbers_dialog_description": "Per usare la funzionalità di notifica tramite chiamata telefonica, devi aggiungere e verificare almeno un numero di telefono. La verifica può essere fatta tramite SMS o chiamata telefonica."
+ "account_basics_phone_numbers_dialog_description": "Per usare la funzionalità di notifica tramite chiamata telefonica, devi aggiungere e verificare almeno un numero di telefono. La verifica può essere fatta tramite SMS o chiamata telefonica.",
+ "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} topic riservato"
}
From 8a8023fcf8a0bfd60c0c31bef744140a86142511 Mon Sep 17 00:00:00 2001
From: Ron
Date: Sun, 3 Sep 2023 14:47:34 +0000
Subject: [PATCH 23/92] Translated using Weblate (Chinese (Traditional))
Currently translated at 64.1% (245 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/zh_Hant/
---
web/public/static/langs/zh_Hant.json | 35 ++++++++++++++++++++++++----
1 file changed, 31 insertions(+), 4 deletions(-)
diff --git a/web/public/static/langs/zh_Hant.json b/web/public/static/langs/zh_Hant.json
index b3d506d1..0d7f3f48 100644
--- a/web/public/static/langs/zh_Hant.json
+++ b/web/public/static/langs/zh_Hant.json
@@ -79,7 +79,7 @@
"common_save": "儲存",
"common_cancel": "取消",
"error_boundary_title": "歐買尬,ntfy 壞掉了",
- "notifications_none_for_any_description": "要開始發送通知到一個主題,只需要對主題 URL 發送 HTTP PUT 或者 POST,例如:",
+ "notifications_none_for_any_description": "要開始發送通知到一個主題,只需要對主題 URL 發送 HTTP PUT 或者 POST。例如:",
"notifications_no_subscriptions_description": "點選 「{{linktext}}」 連結以建立或訂閱主題。完成後,你就可以使用 HTTP PUT 或者 POST 發送通知到這裡了!",
"error_boundary_description": "很抱歉 ntfy 發生錯誤了。 如果你有時間,煩請到 Github 回報錯誤,或者到 Discord 或者 Matrix 聊天室裡面告訴我們。",
"publish_dialog_tags_placeholder": "逗號分隔的標籤,例如 e.g. warning, srv1-backup",
@@ -102,7 +102,7 @@
"login_title": "登入 ntfy 帳戶",
"action_bar_reservation_add": "保留主題",
"action_bar_profile_logout": "登出",
- "alert_not_supported_context_description": "訊息只支援 HTTPS. 這是受 Notifications API 的限制",
+ "alert_not_supported_context_description": "訊息只支援 HTTPS。這是受 Notifications API 的限制。",
"publish_dialog_base_url_placeholder": "服務網址,例如 https://example.com",
"signup_title": "創建 ntfy 賬戶",
"signup_form_username": "用戶名稱",
@@ -212,9 +212,36 @@
"account_basics_tier_interval_yearly": "每年",
"account_usage_emails_title": "已發送電郵",
"account_usage_attachment_storage_description": "每個檔案約 {{filesize}},將於 {{expiry}} 後刪除",
- "publish_dialog_attachment_limits_file_and_quota_reached": "已超過 {{fileSizeLimit}} 檔案上限,尚餘 {{remainingBytes}}",
+ "publish_dialog_attachment_limits_file_and_quota_reached": "已超過 {{fileSizeLimit}} 檔案上限,尚餘 {{remainingBytes}}。",
"account_basics_tier_paid_until": "已付費訂閱至 {{date}} 並自動續期",
"account_basics_tier_payment_overdue": "你的費用已逾期。請更新付款方法,否則你的戶口等級將會下調。",
"publish_dialog_call_item": "致電 {{number}}",
- "account_basics_tier_manage_billing_button": "管理付款方式"
+ "account_basics_tier_manage_billing_button": "管理付款方式",
+ "prefs_notifications_title": "通知",
+ "prefs_notifications_sound_title": "通知提示聲",
+ "prefs_notifications_sound_description_none": "收到通知時不使用任何提示音",
+ "prefs_notifications_sound_description_some": "收到通知時播放 {{sound}}",
+ "prefs_notifications_sound_play": "播放選擇的聲音",
+ "account_basics_phone_numbers_dialog_description": "若要啟用來電通知功能,您需要增加至少一組電話號碼,並透過簡訊或是語音完成驗證。",
+ "account_basics_phone_numbers_description": "來電通知",
+ "account_basics_phone_numbers_dialog_verify_button_call": "播號",
+ "account_basics_phone_numbers_dialog_number_placeholder": "範例:+1222333444",
+ "account_basics_phone_numbers_dialog_verify_button_sms": "傳送簡訊",
+ "account_basics_phone_numbers_dialog_code_label": "驗證碼",
+ "account_basics_phone_numbers_dialog_code_placeholder": "範例:123456",
+ "account_basics_phone_numbers_dialog_check_verification_button": "確認碼",
+ "account_basics_phone_numbers_dialog_channel_sms": "簡訊",
+ "account_usage_calls_none": "您無法使用此帳戶進行通話",
+ "account_usage_reservations_title": "保留的標題",
+ "account_usage_of_limit": "{{limit}} 的",
+ "account_basics_phone_numbers_no_phone_numbers_yet": "尚未擁有任何電話號碼",
+ "account_basics_phone_numbers_dialog_title": "增加電話號碼",
+ "prefs_notifications_sound_no_sound": "靜音",
+ "prefs_notifications_min_priority_title": "最小優先度",
+ "prefs_notifications_min_priority_description_any": "忽略優先度,顯示所有通知",
+ "account_basics_phone_numbers_title": "電話號碼",
+ "account_basics_phone_numbers_copied_to_clipboard": "電話號碼已複製到剪貼簿",
+ "account_basics_phone_numbers_dialog_number_label": "電話號碼",
+ "account_basics_phone_numbers_dialog_channel_call": "通話",
+ "account_usage_calls_title": "已播出電話"
}
From 76146c4e74b2b48c42cd84aa24bc434633ce47c1 Mon Sep 17 00:00:00 2001
From: Mazurky
Date: Thu, 31 Aug 2023 20:15:20 +0000
Subject: [PATCH 24/92] Translated using Weblate (Slovak)
Currently translated at 45.8% (175 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/sk/
---
web/public/static/langs/sk.json | 178 +++++++++++++++++++++++++++++++-
1 file changed, 177 insertions(+), 1 deletion(-)
diff --git a/web/public/static/langs/sk.json b/web/public/static/langs/sk.json
index 0967ef42..e2a54dba 100644
--- a/web/public/static/langs/sk.json
+++ b/web/public/static/langs/sk.json
@@ -1 +1,177 @@
-{}
+{
+ "common_save": "Uložiť",
+ "common_back": "Späť",
+ "common_copy_to_clipboard": "Kopírovať do schránky",
+ "signup_title": "Vytvoriť ntfy účet",
+ "signup_form_username": "Používateľské meno",
+ "signup_form_confirm_password": "Potvrdenie hesla",
+ "signup_form_button_submit": "Zaregistrovať sa",
+ "signup_form_toggle_password_visibility": "Prepnúť viditeľnosť hesla",
+ "signup_error_username_taken": "Používateľské meno {{username}} je už obsadené",
+ "login_form_button_submit": "Prihlásiť sa",
+ "login_disabled": "Prihlásenie je zakázané",
+ "action_bar_logo_alt": "ntfy logo",
+ "action_bar_settings": "Nastavenia",
+ "action_bar_account": "Účet",
+ "action_bar_sign_in": "Prihlásiť sa",
+ "action_bar_profile_settings": "Nastavenia",
+ "action_bar_reservation_edit": "Zmeniť rezerváciu",
+ "action_bar_unsubscribe": "Odhlásiť odber",
+ "action_bar_toggle_mute": "Stlmiť/zrušiť stlmenie upozornení",
+ "action_bar_toggle_action_menu": "Otvoriť/zavrieť akčné menu",
+ "action_bar_profile_title": "Profil",
+ "nav_button_settings": "Nastavenia",
+ "nav_button_account": "Účet",
+ "message_bar_show_dialog": "Zobraziť okno pre odosielanie oznámení",
+ "message_bar_publish": "Zverejniť správu",
+ "nav_topics_title": "Odoberané témy",
+ "nav_button_all_notifications": "Všetky oznámenia",
+ "alert_grant_description": "Udeliť prehliadaču povolenie na zobrazovanie oznámení na ploche.",
+ "alert_not_supported_context_description": "Oznámenia sú podporované len cez HTTPS. Ide o obmedzenie rozhrania Notifications API.",
+ "notifications_list": "Zoznam oznámení",
+ "notifications_list_item": "Oznámenie",
+ "notifications_mark_read": "Označiť ako prečítané",
+ "notifications_delete": "Zmazať",
+ "notifications_copied_to_clipboard": "Skopírované do schránky",
+ "notifications_tags": "Štítky",
+ "notifications_priority_x": "Priorita {{priority}}",
+ "notifications_new_indicator": "Nové oznámenie",
+ "notifications_attachment_image": "Obrázok prílohy",
+ "notifications_attachment_link_expired": "odkaz na stiahnutie vypršal",
+ "notifications_attachment_file_image": "súbor s obrázkom",
+ "notifications_attachment_file_video": "video súbor",
+ "notifications_attachment_file_audio": "zvukový súbor",
+ "notifications_attachment_file_app": "Súbor aplikácie pre Android",
+ "notifications_attachment_file_document": "iný dokument",
+ "notifications_click_copy_url_title": "Skopírovať URL adresu odkazu do schránky",
+ "notifications_click_copy_url_button": "Kopírovať odkaz",
+ "notifications_click_open_button": "Otvoriť odkaz",
+ "notifications_actions_not_supported": "Akcia nie je podporovaná vo webovej aplikácii",
+ "notifications_none_for_topic_title": "K tejto téme ste zatiaľ nedostali žiadne upozornenia.",
+ "notifications_none_for_any_title": "Nedostali ste žiadne upozornenia.",
+ "notifications_none_for_any_description": "Ak chcete posielať oznámenia do témy, jednoducho zadajte adresu PUT alebo POST na adresu URL témy. Tu je príklad s použitím jednej z vašich tém.",
+ "notifications_no_subscriptions_title": "Zdá sa, že zatiaľ nemáte žiadne prihlásenia na odber.",
+ "display_name_dialog_title": "Zmeniť zobrazovaný názov",
+ "notifications_no_subscriptions_description": "Kliknutím na odkaz \"{{text odkazu}}\" vytvoríte tému alebo sa na ňu prihlásite. Potom môžete posielať správy prostredníctvom PUT alebo POST a budete tu dostávať oznámenia.",
+ "notifications_example": "Príklad",
+ "notifications_more_details": "Ďalšie informácie nájdete na webovej stránke alebo v dokumentácií.",
+ "display_name_dialog_placeholder": "Zobrazený názov",
+ "reserve_dialog_checkbox_label": "Rezervovať tému a nakonfigurovať prístup",
+ "notifications_loading": "Načítavanie oznámení …",
+ "publish_dialog_title_no_topic": "Zverejniť oznámenie",
+ "publish_dialog_title_topic": "Zverejniť v {{topic}}",
+ "publish_dialog_progress_uploading": "Nahrávanie…",
+ "publish_dialog_progress_uploading_detail": "Nahrávanie {{loaded}}/{{total}} ({{percent}}%) …",
+ "publish_dialog_message_published": "Oznámenie zverejnené",
+ "publish_dialog_attachment_limits_file_and_quota_reached": "prekročí {{fileSizeLimit}} limit súboru a kvótu, {{remainingBytes}} zostáva",
+ "publish_dialog_attachment_limits_file_reached": "prekračuje {{fileSizeLimit}} limit súboru",
+ "publish_dialog_attachment_limits_quota_reached": "prekračuje kvótu, {{remainingBytes}} zostáva",
+ "publish_dialog_emoji_picker_show": "Vyberte emoji",
+ "publish_dialog_priority_min": "Min. priorita",
+ "publish_dialog_priority_low": "Nízka priorita",
+ "publish_dialog_priority_default": "Predvolená priorita",
+ "publish_dialog_priority_high": "Vysoká priorita",
+ "publish_dialog_priority_max": "Max. priorita",
+ "publish_dialog_base_url_label": "URL Adresa služby",
+ "publish_dialog_base_url_placeholder": "URL adresa služby, napr. https://example.com",
+ "publish_dialog_topic_label": "Názov témy",
+ "publish_dialog_topic_placeholder": "Názov témy, napr. phil_alerts",
+ "publish_dialog_topic_reset": "Resetovať tému",
+ "publish_dialog_title_label": "Názov",
+ "publish_dialog_title_placeholder": "Názov oznámenia, napr. Upozornenie na miesto na disku",
+ "publish_dialog_tags_label": "Štítky",
+ "publish_dialog_message_label": "Správa",
+ "publish_dialog_priority_label": "Priorita",
+ "publish_dialog_click_label": "Kliknite na URL",
+ "publish_dialog_click_placeholder": "URL adresa sa otvorí po kliknutí na oznámenie",
+ "publish_dialog_email_label": "Email",
+ "publish_dialog_email_placeholder": "Emailová adresa, na ktorú sa má oznámenie zaslať, napr. phil@example.com",
+ "publish_dialog_call_label": "Telefonovať",
+ "publish_dialog_call_item": "Zavolať na telefónne číslo {{number}}",
+ "publish_dialog_call_reset": "Odstrániť telefón",
+ "publish_dialog_attach_label": "URL prílohy",
+ "publish_dialog_attach_reset": "Odstrániť URL prílohy",
+ "publish_dialog_filename_label": "Názov súboru",
+ "publish_dialog_filename_placeholder": "Názov súboru prílohy",
+ "publish_dialog_delay_label": "Oneskorenie",
+ "publish_dialog_delay_placeholder": "Oneskorenie doručenia, napr. {{unixTimestamp}}, {{relativeTime}} alebo \"{{naturalLanguage}}\" (len v angličtine)",
+ "publish_dialog_delay_reset": "Odstrániť oneskorené doručenie",
+ "publish_dialog_chip_call_label": "Telefonovať",
+ "publish_dialog_other_features": "Ďalšie funkcie:",
+ "publish_dialog_chip_call_no_verified_numbers_tooltip": "Žiadne overené telefónne čísla",
+ "publish_dialog_chip_attach_url_label": "Pripojiť súbor pomocou adresy URL",
+ "publish_dialog_chip_delay_label": "Oneskoriť doručenie",
+ "publish_dialog_chip_topic_label": "Zmeniť tému",
+ "publish_dialog_button_cancel_sending": "Zrušiť odosielanie",
+ "publish_dialog_button_send": "Odoslať",
+ "publish_dialog_checkbox_publish_another": "Zverejniť ďalšie",
+ "publish_dialog_attached_file_title": "Priložený súbor:",
+ "subscribe_dialog_subscribe_button_cancel": "Zrušiť",
+ "subscribe_dialog_subscribe_title": "Odoberať tému",
+ "subscribe_dialog_subscribe_base_url_label": "URL Adresa služby",
+ "subscribe_dialog_subscribe_topic_placeholder": "Názov témy, napr. phil_alerts",
+ "publish_dialog_attached_file_filename_placeholder": "Názov súboru prílohy",
+ "publish_dialog_attached_file_remove": "Odstrániť priložený súbor",
+ "publish_dialog_drop_file_here": "Vložiť súbor",
+ "subscribe_dialog_login_password_label": "Heslo",
+ "account_basics_password_dialog_confirm_password_label": "Potvrdenie hesla",
+ "account_basics_title": "Účet",
+ "account_delete_dialog_button_cancel": "Zrušiť",
+ "account_delete_dialog_label": "Heslo",
+ "prefs_reservations_dialog_title_add": "Rezervovať tému",
+ "publish_dialog_button_cancel": "Zrušiť",
+ "account_upgrade_dialog_button_cancel": "Zrušiť",
+ "account_tokens_dialog_button_cancel": "Zrušiť",
+ "common_cancel": "Zrušiť",
+ "common_add": "Pridať",
+ "account_basics_username_title": "Používateľské meno",
+ "signup_form_password": "Heslo",
+ "signup_error_creation_limit_reached": "Dosiahnutý limit na vytvorenie konta",
+ "account_basics_password_title": "Heslo",
+ "action_bar_change_display_name": "Zmeniť zobrazovaný názov",
+ "prefs_users_dialog_password_label": "Heslo",
+ "action_bar_sign_up": "Zaregistrovať sa",
+ "login_link_signup": "Zaregistrovať sa",
+ "signup_already_have_account": "Už máte účet? Prihláste sa!",
+ "signup_disabled": "Registrácia je vypnutá",
+ "login_title": "Prihláste sa do svojho konta ntfy",
+ "action_bar_show_menu": "Zobraziť menu",
+ "action_bar_reservation_add": "Rezervovať tému",
+ "action_bar_reservation_delete": "Odstrániť rezerváciu",
+ "action_bar_reservation_limit_reached": "Dosiahnutý limit",
+ "action_bar_send_test_notification": "Odoslať testovacie oznámenie",
+ "action_bar_clear_notifications": "Vymazať všetky oznámenia",
+ "publish_dialog_message_placeholder": "Sem napíšte správu",
+ "action_bar_profile_logout": "Odhlásiť sa",
+ "message_bar_type_message": "Sem napíšte správu",
+ "message_bar_error_publishing": "Chyba pri zverejňovaní oznámenia",
+ "nav_button_documentation": "Dokumentácia",
+ "nav_button_publish_message": "Zverejniť oznámenie",
+ "nav_button_subscribe": "Odoberať tému",
+ "nav_button_muted": "Oznámenia stlmené",
+ "nav_button_connecting": "pripájanie",
+ "nav_upgrade_banner_description": "Rezervovať témy, viac správ a e-mailov a väčšie prílohy",
+ "nav_upgrade_banner_label": "Vylepšiť na ntfy Pro",
+ "alert_grant_title": "Oznámenia sú vypnuté",
+ "alert_grant_button": "Prideliť teraz",
+ "alert_not_supported_title": "Oznámenia nie sú podporované",
+ "alert_not_supported_description": "Oznámenia nie sú vo vašom prehliadači podporované.",
+ "notifications_attachment_copy_url_title": "Kopírovať URL adresu prílohy do schránky",
+ "notifications_attachment_copy_url_button": "Kopírovať adresu URL",
+ "notifications_attachment_open_title": "Prejsť na {{url}}",
+ "notifications_actions_open_url_title": "Prejsť na {{url}}",
+ "notifications_attachment_open_button": "Otvoriť prílohu",
+ "notifications_attachment_link_expires": "platnosť odkazu vyprší {{date}}",
+ "notifications_none_for_topic_description": "Ak chcete posielať oznámenia do tejto témy, jednoducho zadajte adresu PUT alebo POST na URL adresu témy.",
+ "notifications_actions_http_request_title": "Odoslať HTTP {{method}} na {{url}}",
+ "display_name_dialog_description": "Nastavenie alternatívneho názvu témy, ktorá sa zobrazuje v zozname odberov. Pomáha to ľahšie identifikovať témy so zložitými názvami.",
+ "prefs_users_table_base_url_header": "URL Adresa služby",
+ "publish_dialog_tags_placeholder": "Zoznam štítkov oddelených čiarkou, napr. varovanie, srv1-backup",
+ "publish_dialog_chip_click_label": "Kliknite na URL",
+ "publish_dialog_email_reset": "Odstrániť email na preposielanie",
+ "publish_dialog_click_reset": "Odobrať URL kliknutím",
+ "publish_dialog_attach_placeholder": "Pripojiť súbor pomocou URL adresy, napr. https://f-droid.org/F-Droid.apk",
+ "publish_dialog_chip_email_label": "Preposlanie na email",
+ "publish_dialog_chip_attach_file_label": "Pripojiť miestny súbor",
+ "publish_dialog_details_examples_description": "Príklady a podrobný opis všetkých funkcií odosielania nájdete v dokumentácii."
+}
From 9959d1aa4375393ee1b72f53836ac9394dcda536 Mon Sep 17 00:00:00 2001
From: jonnysemon
Date: Tue, 5 Sep 2023 17:53:34 +0000
Subject: [PATCH 25/92] Translated using Weblate (Arabic)
Currently translated at 85.6% (327 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/ar/
---
web/public/static/langs/ar.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/web/public/static/langs/ar.json b/web/public/static/langs/ar.json
index 0c9fcc7d..301ae5eb 100644
--- a/web/public/static/langs/ar.json
+++ b/web/public/static/langs/ar.json
@@ -152,7 +152,7 @@
"publish_dialog_chip_delay_label": "تأخير التسليم",
"subscribe_dialog_login_description": "هذا الموضوع محمي بكلمة مرور. الرجاء إدخال اسم المستخدم وكلمة المرور للاشتراك.",
"subscribe_dialog_subscribe_button_cancel": "إلغاء",
- "common_back": "العودة",
+ "common_back": "الرجوع",
"prefs_notifications_sound_play": "تشغيل الصوت المحدد",
"prefs_notifications_min_priority_title": "أولوية دنيا",
"prefs_notifications_min_priority_max_only": "الأولوية القصوى فقط",
From dee16f543d234fbb7f67991b730e4c766ad5adc6 Mon Sep 17 00:00:00 2001
From: Helly <73737531+InvitedToHell@users.noreply.github.com>
Date: Wed, 6 Sep 2023 00:52:46 +0200
Subject: [PATCH 26/92] Add ios shortcut to the integrations docs
---
docs/integrations.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/integrations.md b/docs/integrations.md
index 68bc4c46..e689427e 100644
--- a/docs/integrations.md
+++ b/docs/integrations.md
@@ -129,7 +129,8 @@ I've added a ⭐ to projects or posts that have a significant following, or had
- [vigilant](https://github.com/VerifiedJoseph/vigilant) - Monitor RSS/ATOM and JSON feeds, and send push notifications on new entries (PHP)
- [ansible-role-ntfy-alertmanager](https://github.com/bleetube/ansible-role-ntfy-alertmanager) - Ansible role to install xenrox/ntfy-alertmanager
- [NtfyMe-Blender](https://github.com/NotNanook/NtfyMe-Blender) - Blender addon to send notifications to NtfyMe (Python)
-
+- [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that let's you share files from your share feed to a topic of your choice.
+
## Blog + forum posts
- [NetworkChunk - how did I NOT know about this?](https://www.youtube.com/watch?v=poDIT2ruQ9M) ⭐ - youtube.com - 8/2023
From 528a67722b6b27f0772acdabb88da502e9ddfd93 Mon Sep 17 00:00:00 2001
From: binwiederhier
Date: Sun, 10 Sep 2023 11:23:18 -0400
Subject: [PATCH 27/92] Thank you @LuckVintage for your sponsorship
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index a6e0e8da..6379c7d2 100644
--- a/README.md
+++ b/README.md
@@ -148,6 +148,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank
+
I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/),
and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project:
From 25a60969fb73a7899993c2edea78e02cfa56154e Mon Sep 17 00:00:00 2001
From: Christian Meis
Date: Thu, 7 Sep 2023 12:20:49 +0000
Subject: [PATCH 28/92] Translated using Weblate (German)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/de/
---
web/public/static/langs/de.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/web/public/static/langs/de.json b/web/public/static/langs/de.json
index d29760f1..4af63501 100644
--- a/web/public/static/langs/de.json
+++ b/web/public/static/langs/de.json
@@ -25,7 +25,7 @@
"notifications_click_copy_url_title": "Link-URL in Zwischenablage kopieren",
"publish_dialog_priority_low": "Niedrige Priorität",
"publish_dialog_message_label": "Nachricht",
- "action_bar_unsubscribe": "Von Thema abmelden",
+ "action_bar_unsubscribe": "Abmelden",
"notifications_copied_to_clipboard": "In Zwischenablage kopiert",
"notifications_loading": "Benachrichtigungen werden geladen …",
"notifications_attachment_open_title": "Gehe zu {{url}}",
@@ -154,7 +154,7 @@
"notifications_actions_not_supported": "Diese Aktion wird in der Web-App nicht unterstützt",
"notifications_actions_http_request_title": "Sende HTTP {{method}} an {{url}}",
"action_bar_show_menu": "Menü anzeigen",
- "action_bar_toggle_mute": "Stummschaltung der Benachrichtigungen an/aus",
+ "action_bar_toggle_mute": "Stummschaltung an/aus",
"message_bar_show_dialog": "Dialog zur Veröffentlichung anzeigen",
"message_bar_publish": "Benachrichtigung veröffentlichen",
"nav_button_connecting": "verbinde",
From bae30d79c9609bc3eace0199b9a8c0a270405f7b Mon Sep 17 00:00:00 2001
From: SinecKers
Date: Wed, 6 Sep 2023 22:00:45 +0000
Subject: [PATCH 29/92] Translated using Weblate (Turkish)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/tr/
---
web/public/static/langs/tr.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/web/public/static/langs/tr.json b/web/public/static/langs/tr.json
index 07fba528..4e73cfb7 100644
--- a/web/public/static/langs/tr.json
+++ b/web/public/static/langs/tr.json
@@ -77,7 +77,7 @@
"notifications_example": "Örnek",
"notifications_more_details": "Daha fazla bilgi için web sitesine veya belgelendirmeye bakın.",
"publish_dialog_chip_attach_url_label": "URL ile dosya ekle",
- "prefs_notifications_min_priority_default_and_higher": "Öntanımlı öncelik ve üstü",
+ "prefs_notifications_min_priority_default_and_higher": "Varsayılan öncelik ve üstü",
"prefs_notifications_delete_after_three_hours": "Üç saat sonra",
"notifications_none_for_any_description": "Bir konuya bildirim göndermek için konu URL'sine PUT veya POST göndermeniz yeterlidir. İşte konularınızdan birini kullanan bir örnek.",
"notifications_no_subscriptions_title": "Henüz aboneliğiniz yok gibi görünüyor.",
From 044f4182d028f79777762374ccc9bedef45bd913 Mon Sep 17 00:00:00 2001
From: Jag_k
Date: Thu, 7 Sep 2023 00:17:25 +0000
Subject: [PATCH 30/92] Translated using Weblate (Russian)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/ru/
---
web/public/static/langs/ru.json | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/web/public/static/langs/ru.json b/web/public/static/langs/ru.json
index d2c8d7fc..16ddfe74 100644
--- a/web/public/static/langs/ru.json
+++ b/web/public/static/langs/ru.json
@@ -354,7 +354,7 @@
"account_upgrade_dialog_billing_contact_email": "По вопросам оплаты, пожалуйста свяжитесь с нами.",
"account_upgrade_dialog_billing_contact_website": "По вопросам оплаты, пожалуйста обратитесь к нашему сайту.",
"publish_dialog_call_reset": "Удалить вызов",
- "account_basics_phone_numbers_dialog_description": "Для использования уведомлений необходимо добавить и подтвердить хотя бы один номер телефона. Проверить можно используя SMS или звонок.",
+ "account_basics_phone_numbers_dialog_description": "Для того что бы использовать возможность уведомлений о вызовах, нужно добавить и проверить хотя бы один номер телефона. Проверить можно используя SMS или звонок.",
"account_basics_phone_numbers_dialog_title": "Добавить номер телефона",
"account_basics_phone_numbers_dialog_number_placeholder": "например +1222333444",
"account_basics_phone_numbers_dialog_code_placeholder": "например 123456",
@@ -363,5 +363,22 @@
"account_usage_calls_none": "Невозможно совершать вызовы с этим аккаунтом",
"publish_dialog_chip_call_no_verified_numbers_tooltip": "Нет проверенных номеров",
"account_basics_phone_numbers_copied_to_clipboard": "Номер телефона скопирован в буфер обмена",
- "account_upgrade_dialog_tier_features_no_calls": "Нет вызовов"
+ "account_upgrade_dialog_tier_features_no_calls": "Нет вызовов",
+ "account_upgrade_dialog_tier_features_calls_one": "{{calls}} ежедневный звонок",
+ "account_basics_phone_numbers_dialog_number_label": "Номер телефона",
+ "account_basics_phone_numbers_dialog_check_verification_button": "Подтвердить код",
+ "account_upgrade_dialog_tier_features_calls_other": "{{calls}} ежедневных звонков",
+ "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} зарезервированная тема",
+ "account_basics_phone_numbers_no_phone_numbers_yet": "Телефонных номеров пока нет",
+ "publish_dialog_chip_call_label": "Звонок",
+ "account_upgrade_dialog_tier_features_emails_one": "{{emails}} ежедневное письмо",
+ "account_upgrade_dialog_tier_features_messages_one": "{{messages}} ежедневное сообщения",
+ "account_basics_phone_numbers_description": "Для уведомлений о телефонных звонках",
+ "publish_dialog_call_label": "Звонок",
+ "account_basics_phone_numbers_dialog_channel_call": "Позвонить",
+ "account_basics_phone_numbers_title": "Номера телефонов",
+ "account_basics_phone_numbers_dialog_code_label": "Проверочный код",
+ "account_basics_phone_numbers_dialog_verify_button_call": "Позвонить мне",
+ "publish_dialog_call_item": "Вызов телефонного номера {{number}}",
+ "account_basics_phone_numbers_dialog_channel_sms": "SMS"
}
From 6ec1ccf7a3d9052cb3d9e67c1ac86cd7c97149b4 Mon Sep 17 00:00:00 2001
From: jonnysemon
Date: Tue, 5 Sep 2023 18:08:50 +0000
Subject: [PATCH 31/92] Translated using Weblate (Arabic)
Currently translated at 85.8% (328 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/ar/
---
web/public/static/langs/ar.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/web/public/static/langs/ar.json b/web/public/static/langs/ar.json
index 301ae5eb..d9d44a98 100644
--- a/web/public/static/langs/ar.json
+++ b/web/public/static/langs/ar.json
@@ -329,5 +329,6 @@
"publish_dialog_attachment_limits_quota_reached": "يتجاوز الحصة، {{remainingBytes}} متبقية",
"account_basics_tier_paid_until": "تم دفع مبلغ الاشتراك إلى غاية {{date}}، وسيتم تجديده تِلْقائيًا",
"account_basics_tier_canceled_subscription": "تم إلغاء اشتراكك وسيتم إعادته إلى مستوى حساب مجاني بداية مِن {{date}}.",
- "account_delete_dialog_billing_warning": "إلغاء حسابك أيضاً يلغي اشتراكك في الفوترة فوراً ولن تتمكن من الوصول إلى لوح الفوترة بعد الآن."
+ "account_delete_dialog_billing_warning": "إلغاء حسابك أيضاً يلغي اشتراكك في الفوترة فوراً ولن تتمكن من الوصول إلى لوح الفوترة بعد الآن.",
+ "nav_upgrade_banner_description": "حجز المواضيع والمزيد من الرسائل ورسائل البريد الإلكتروني والمرفقات الأكبر حجمًا"
}
From a407a2e0f8fc5655a42005f1bf41c0640d69ebd2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?jos=C3=A9=20m?=
Date: Fri, 8 Sep 2023 04:01:07 +0000
Subject: [PATCH 32/92] Translated using Weblate (Galician)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/gl/
---
web/public/static/langs/gl.json | 151 +++++++++++++++++++++++++++++++-
1 file changed, 150 insertions(+), 1 deletion(-)
diff --git a/web/public/static/langs/gl.json b/web/public/static/langs/gl.json
index efc418ff..1f816cf4 100644
--- a/web/public/static/langs/gl.json
+++ b/web/public/static/langs/gl.json
@@ -160,5 +160,154 @@
"publish_dialog_checkbox_publish_another": "Publicar outra",
"emoji_picker_search_clear": "Limpar busca",
"publish_dialog_chip_call_no_verified_numbers_tooltip": "Números de teléfono non verificados",
- "publish_dialog_attached_file_remove": "Retirar ficheiro anexo"
+ "publish_dialog_attached_file_remove": "Retirar ficheiro anexo",
+ "account_upgrade_dialog_tier_features_no_calls": "Sen chamadas",
+ "account_upgrade_dialog_billing_contact_email": "Para preguntas sobre pagamentos, contacta con nós directamente.",
+ "account_tokens_dialog_title_create": "Crear token de acceso",
+ "prefs_reservations_dialog_title_edit": "Editar tema reservado",
+ "priority_default": "por defecto",
+ "prefs_notifications_min_priority_title": "Prioridade mínima",
+ "account_upgrade_dialog_tier_features_calls_one": "{{calls}} chamadas de teléfono diarias",
+ "account_upgrade_dialog_tier_current_label": "Actual",
+ "account_tokens_table_token_header": "Token",
+ "prefs_notifications_delete_after_never": "Nunca",
+ "prefs_users_description": "Engadir/eliminar usuarias dos temas protexidos. Ten en conta que as credenciais gárdanse na almacenaxe local do navegador.",
+ "subscribe_dialog_subscribe_description": "Os temas poderían non estar proxetidos con contrasinal, así que elixe un nome complicado de adiviñar. Unha vez subscrita, podes PUT/POST notificacións.",
+ "account_upgrade_dialog_interval_yearly_discount_save_up_to": "aforro ata un {{discount}}%",
+ "account_tokens_dialog_label": "Etiqueta, ex. notificación de Radarr",
+ "account_tokens_table_expires_header": "Caducidade",
+ "account_upgrade_dialog_proration_info": "Axuste: ao mellorar a un plan de pagamento superior, a diferencia vaise cobrar inmediatamente. Se degradas a conta a un plan inferior a diferencia usarase para pagar futuros períodos de pagamento.",
+ "prefs_reservations_dialog_access_label": "Acceso",
+ "account_usage_attachment_storage_title": "Almacenaxe dos anexos",
+ "prefs_users_dialog_username_label": "Identificador, ex. xoana",
+ "prefs_reservations_table_not_subscribed": "Non subscrita",
+ "account_upgrade_dialog_tier_features_emails_other": "{{emails}} correos diarios",
+ "prefs_notifications_min_priority_max_only": "Só prioridade máxima",
+ "account_upgrade_dialog_tier_features_calls_other": "{{calls}} chamadas de teléfono diarias",
+ "prefs_notifications_sound_description_some": "As notificacións sonan co ton {{sound}} ao chegar",
+ "prefs_reservations_edit_button": "Editar acceso ao tema",
+ "account_tokens_dialog_expires_never": "O token non caduca",
+ "subscribe_dialog_login_title": "Require inciar sesión",
+ "account_tokens_dialog_expires_x_days": "O token caduca en {{days}} días",
+ "prefs_reservations_table_everyone_read_only": "Podo publicar e subscribirme, calquera pode subscribirse",
+ "prefs_reservations_table_everyone_deny_all": "Só eu podo publicar e subscribirme",
+ "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} tema reservado",
+ "subscribe_dialog_login_button_login": "Acceder",
+ "account_upgrade_dialog_tier_features_no_reservations": "Sen temas reservados",
+ "prefs_users_table_cannot_delete_or_edit": "Non se pode eliminar ou editar unha usuaria coa sesión iniciada",
+ "prefs_notifications_delete_after_three_hours_description": "As notificacións autoelimínanse após tres horas",
+ "prefs_notifications_delete_after_three_hours": "Após tres horas",
+ "prefs_notifications_min_priority_description_x_or_higher": "Mostrar as notificacións se a prioridade é {{number}} {{name}} ou superior",
+ "reservation_delete_dialog_description": "Ao eliminar a reserva cedes a propiedade do tema, e permites que outras persoas poidan reservalo. Podes manter ou eliminar as mensaxes e anexos existentes.",
+ "prefs_reservations_table_everyone_read_write": "Calquera pode publicar e subscribirse",
+ "prefs_reservations_dialog_title_delete": "Eliminar a reserva do tema",
+ "prefs_users_table": "Táboa de usuarias",
+ "prefs_reservations_table_topic_header": "Tema",
+ "reservation_delete_dialog_submit_button": "Eliminar a reserva",
+ "prefs_reservations_limit_reached": "Acadaches o límite de temas que podes reservar.",
+ "account_upgrade_dialog_interval_monthly": "Mensual",
+ "prefs_users_add_button": "Engadir usuaria",
+ "account_upgrade_dialog_tier_features_messages_other": "{{messages}} mensaxes diarias",
+ "prefs_appearance_language_title": "Idioma",
+ "prefs_notifications_delete_after_one_day_description": "As notificacións autoelimínanse após un día",
+ "account_tokens_table_never_expires": "Non caduca",
+ "account_tokens_delete_dialog_title": "Desbotar token de acceso",
+ "prefs_notifications_delete_after_one_month": "Após un mes",
+ "account_tokens_delete_dialog_description": "Antes de borrar o token de acceso mira que ningunha aplicación ou programa o está usando. Esta acción non pode desfacerse.",
+ "account_upgrade_dialog_button_cancel": "Cancelar",
+ "account_tokens_table_label_header": "Etiqueta",
+ "account_upgrade_dialog_billing_contact_website": "Para preguntas sobre pagamentos, vai ao noso sitiio web.",
+ "prefs_notifications_delete_after_never_description": "As notificacións non se eliminarán nunca automáticamente",
+ "account_upgrade_dialog_tier_features_reservations_other": "{{reservations}} temas reservados",
+ "prefs_notifications_sound_description_none": "As notificacións non reproducen un ton ao chegar",
+ "account_tokens_description": "Usar tokens de acceso ao publicar e subscribirte a través da API de ntfy, así non tes que enviar as credenciais. Le a documentación para saber máis.",
+ "prefs_reservations_table": "Táboa cos temas reservados",
+ "account_upgrade_dialog_button_cancel_subscription": "Cancelar subscrición",
+ "account_upgrade_dialog_tier_features_emails_one": "{{emails}} correo diario",
+ "account_upgrade_dialog_tier_features_attachment_file_size": "{{filesize}} por ficheiro",
+ "prefs_reservations_description": "Podes reservar nomes de temas para uso personal. Ao reservar un tema tes a propiedade sobre del, e permíteche definir os permisos de acceso para outras usuarias sobre o tema.",
+ "prefs_users_description_no_sync": "Usuarias e contrasinais non están sincronizados coa túa conta.",
+ "account_tokens_dialog_title_edit": "Editar token de acceso",
+ "prefs_users_table_base_url_header": "URL do servizo",
+ "account_upgrade_dialog_tier_features_messages_one": "{{mensaxes}} mensaxe diaria",
+ "account_upgrade_dialog_reservations_warning_one": "O nivel seleccionado permite reservar menos temas que o nivel actual. Antes de cambiar de nivel, elimina unha reserva polo menos. Podes eliminar as reservas nos Axustes.",
+ "prefs_users_table_user_header": "Usuaria",
+ "error_boundary_stack_trace": "Trazas do problema",
+ "prefs_users_dialog_password_label": "Contrasinal",
+ "prefs_notifications_delete_after_one_week": "Após unha semana",
+ "prefs_reservations_delete_button": "Restablecer acceso ao tema",
+ "prefs_notifications_delete_after_one_week_description": "As notificacións autoelimínanse após unha semana",
+ "error_boundary_unsupported_indexeddb_description": "A app ntfy web precisa a función IndexedDB, e o teu navegador non ten soporte para IndexedDB no modo privado.
Aínda que é unha mágoa, tampouco ten moito senso usar a app ntfy web en modo privado, porque todo se garda na almacenaxe do navegador. Podes aprender máis sobre isto neste tema de GitHub, ou comentarnos o que che parece en Discord ou Matrix.",
+ "subscribe_dialog_subscribe_button_cancel": "Cancelar",
+ "account_basics_tier_description": "O nivel da túa conta",
+ "prefs_reservations_dialog_title_add": "Reservar tema",
+ "account_upgrade_dialog_cancel_warning": "Isto vai cancelar a túa subscrición, e degradar a túa conta o {{date}}. Nesa data, as reservas de temas así como as mensaxes na caché do servidor van ser eliminadas.",
+ "prefs_notifications_sound_title": "Ton da notificación",
+ "prefs_notifications_min_priority_default_and_higher": "Prioridade por defecto e superior",
+ "prefs_reservations_table_access_header": "Acceso",
+ "account_tokens_table_copied_to_clipboard": "Copiouse o token de acceso",
+ "account_tokens_dialog_expires_x_hours": "O token caduca en {{hours}} horas",
+ "prefs_users_edit_button": "Editar usuaria",
+ "account_upgrade_dialog_title": "Cambiar facturación da conta",
+ "priority_low": "baixa",
+ "prefs_reservations_table_click_to_subscribe": "Preme para subscribirte",
+ "error_boundary_description": "Isto non debería pasar. Lamentámolo. Se tes un minuto, informa en GitHub, ou fáinolo saber en Discord ou Matrix.",
+ "priority_min": "min",
+ "prefs_notifications_min_priority_description_any": "Mostrar todas as notificacións, obviando a prioridade",
+ "error_boundary_gathering_info": "Obter máis info…",
+ "error_boundary_unsupported_indexeddb_title": "Non hai soporte para a navegación privada",
+ "prefs_notifications_delete_after_one_day": "Após un día",
+ "error_boundary_title": "vaite!, ntfy fallou",
+ "reservation_delete_dialog_action_keep_description": "As mensaxes e anexos que están no servidor serán visibles públicamente para quen saiba o nome do tema.",
+ "prefs_reservations_add_button": "Engadir tema reservado",
+ "prefs_reservations_title": "Temas reservados",
+ "prefs_reservations_dialog_description": "Ao reservar un tema tes a propiedade sobre el, e permíteche definir os permisos de acceso para outras usuarias.",
+ "account_tokens_delete_dialog_submit_button": "Eliminar definitivamente o token",
+ "prefs_notifications_title": "Notificacións",
+ "account_tokens_title": "Tokens de acceso",
+ "prefs_reservations_dialog_topic_label": "Tema",
+ "prefs_users_title": "Xestionar usuarias",
+ "account_upgrade_dialog_tier_price_billed_monthly": "{{price}} anual. Pagamento mensual.",
+ "account_tokens_dialog_expires_unchanged": "Deixar a data de caducidade sen cambiar",
+ "error_boundary_button_copy_stack_trace": "Copiar trazas do problema",
+ "account_tokens_dialog_title_delete": "Eliminar token de acceso",
+ "reservation_delete_dialog_action_keep_title": "Manter as mensaxes e anexos gardados",
+ "prefs_notifications_sound_no_sound": "Sen ton",
+ "account_upgrade_dialog_interval_yearly": "Anual",
+ "account_upgrade_dialog_button_redirect_signup": "Crea unha conta",
+ "account_tokens_dialog_button_cancel": "Cancelar",
+ "account_upgrade_dialog_tier_price_billed_yearly": "{{price}} cobrado anualmente. Aforro {{save}}.",
+ "prefs_notifications_min_priority_high_and_higher": "Prioridade alta e superior",
+ "priority_max": "máx",
+ "prefs_users_delete_button": "Eliminar usuaria",
+ "prefs_notifications_min_priority_any": "Calquera prioridade",
+ "account_tokens_dialog_expires_label": "O token caduca o",
+ "prefs_notifications_delete_after_title": "Desbotar notificacións",
+ "account_upgrade_dialog_interval_yearly_discount_save": "aforro {{discount}}%",
+ "prefs_users_dialog_title_edit": "Editar usuaria",
+ "prefs_notifications_min_priority_low_and_higher": "Prioridade baixa e superior",
+ "account_tokens_dialog_button_update": "Actualizar token",
+ "account_upgrade_dialog_tier_features_attachment_total_size": "{{totalsize}} almacenaxe total",
+ "prefs_reservations_table_everyone_write_only": "Podo publicar e subscribirme, calquera pode publicar",
+ "prefs_appearance_title": "Aparencia",
+ "account_tokens_table_cannot_delete_or_edit": "Non se pode editar ou desbotar o token da sesión actual",
+ "prefs_notifications_sound_play": "Reproducir ton seleccionado",
+ "account_tokens_table_last_access_header": "Último acceso",
+ "account_tokens_table_last_origin_tooltip": "Desde o enderezo IP {{ip}}, preme para detalles",
+ "account_upgrade_dialog_tier_price_per_month": "mes",
+ "account_tokens_table_current_session": "Sesión do navegador actual",
+ "account_upgrade_dialog_button_pay_now": "Paga e subscríbete",
+ "reservation_delete_dialog_action_delete_title": "Eliminar mensaxes e anexos gardados",
+ "reservation_delete_dialog_action_delete_description": "As mensaxes e anexos vanse borrar definitivamente. Esta acción non ten volta.",
+ "prefs_notifications_delete_after_one_month_description": "As notificacións autoelimínanse após un mes",
+ "prefs_users_dialog_base_url_label": "URL do servizo, ex. https://ntfy.sh",
+ "account_upgrade_dialog_tier_selected_label": "Seleccionado",
+ "account_upgrade_dialog_button_update_subscription": "Actualizar subscrición",
+ "priority_high": "alta",
+ "account_delete_dialog_billing_warning": "Ao eliminar a conta tamén cancelas o pagamento das subscricións. Non poderás volver acceder ao taboleiro de pagamentos.",
+ "prefs_notifications_min_priority_description_max": "Mostrar notificacións se a prioridade é 5 (máx)",
+ "account_upgrade_dialog_reservations_warning_other": "O nivel seleccionado permite reservar menos temas que o nivel actual. Antes de cambiar de nivel, elimina {{count}} reservas polo menos. Podes eliminar as reservas nos Axustes.",
+ "prefs_users_dialog_title_add": "Engadir usuaria",
+ "account_tokens_dialog_button_create": "Crear token",
+ "account_tokens_table_create_token_button": "Crear token de acceso"
}
From 42063cbd5c2f254e28270cfb2a609e092cc1eabd Mon Sep 17 00:00:00 2001
From: Jose Boullosa
Date: Tue, 5 Sep 2023 23:54:30 +0000
Subject: [PATCH 33/92] Translated using Weblate (Galician)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/gl/
---
web/public/static/langs/gl.json | 77 +++++++++++++++++++++++++++++++--
1 file changed, 74 insertions(+), 3 deletions(-)
diff --git a/web/public/static/langs/gl.json b/web/public/static/langs/gl.json
index 1f816cf4..92d35610 100644
--- a/web/public/static/langs/gl.json
+++ b/web/public/static/langs/gl.json
@@ -114,7 +114,7 @@
"publish_dialog_title_topic": "Publicar en {{topic}}",
"publish_dialog_title_no_topic": "Publicar notificación",
"publish_dialog_progress_uploading": "Enviando…",
- "publish_dialog_progress_uploading_detail": "Enviando {{loaded}}/{{total}} ({{percent}}%) …",
+ "publish_dialog_progress_uploading_detail": "Enviando {{loaded}}/{{total}} ({{percent}}%) …",
"publish_dialog_message_published": "Notificación publicada",
"publish_dialog_attachment_limits_file_and_quota_reached": "supera o límite de ficheiros e cota {{fileSizeLimit}}, quedan {{remainingBytes}}",
"publish_dialog_attachment_limits_file_reached": "supera o límite para ficheiros {{fileSizeLimit}}",
@@ -125,7 +125,7 @@
"publish_dialog_priority_default": "Prioridade por defecto",
"publish_dialog_priority_high": "Prioridade alta",
"publish_dialog_priority_max": "Prioridade Máxima",
- "publish_dialog_base_url_label": "URL de servizo",
+ "publish_dialog_base_url_label": "URL do servizo",
"notifications_more_details": "Para máis información, visita o sitio web ou le a documentación.",
"publish_dialog_call_label": "Chamada de teléfono",
"publish_dialog_call_reset": "Retirar chamada de teléfono",
@@ -309,5 +309,76 @@
"account_upgrade_dialog_reservations_warning_other": "O nivel seleccionado permite reservar menos temas que o nivel actual. Antes de cambiar de nivel, elimina {{count}} reservas polo menos. Podes eliminar as reservas nos Axustes.",
"prefs_users_dialog_title_add": "Engadir usuaria",
"account_tokens_dialog_button_create": "Crear token",
- "account_tokens_table_create_token_button": "Crear token de acceso"
+ "account_tokens_table_create_token_button": "Crear token de acceso",
+ "account_basics_tier_interval_monthly": "mensual",
+ "account_basics_tier_canceled_subscription": "A sua suscripción foi cancelada e vostede será degradado a unha conta gratuita o {{date}}.",
+ "account_basics_password_dialog_current_password_incorrect": "Contrasinal incorrecto",
+ "account_basics_phone_numbers_dialog_number_label": "Número de teléfono",
+ "account_basics_password_dialog_button_submit": "Modificar contrasinal",
+ "account_basics_username_title": "Usuario",
+ "account_basics_phone_numbers_dialog_check_verification_button": "Código de confirmación",
+ "account_usage_messages_title": "Mesaxes publicados",
+ "account_basics_phone_numbers_dialog_verify_button_sms": "Enviar SMS",
+ "account_basics_tier_change_button": "Cambiar",
+ "account_basics_phone_numbers_dialog_description": "Para usar a característica de chamadas de teléfono, vostede debe engadir e verificar ao menos un número de teléfono. A verificación pode ser realizada vía SMS ou a través de chamada.",
+ "account_delete_title": "Borrar conta",
+ "account_delete_dialog_label": "Contrasinal",
+ "account_basics_tier_admin_suffix_with_tier": "(con tier {{tier}})",
+ "subscribe_dialog_login_username_label": "Nome de usuario, ex. phil",
+ "subscribe_dialog_error_user_not_authorized": "Usuario {{username}} non autorizado",
+ "account_basics_title": "Conta",
+ "account_basics_phone_numbers_no_phone_numbers_yet": "Aínda non hay números de teléfono",
+ "subscribe_dialog_subscribe_button_generate_topic_name": "Xerar nome",
+ "subscribe_dialog_login_password_label": "Contrasinal",
+ "subscribe_dialog_subscribe_button_subscribe": "Subscribirse",
+ "account_basics_phone_numbers_dialog_title": "Engadir número de teléfono",
+ "account_basics_username_admin_tooltip": "É vostede Admin",
+ "account_delete_dialog_description": "Isto borrará permanentemente a túa conta, incluido todos os datos almacenados no servidor. Despois do borrado, o teu nome de usuario non estará dispoñible durante 7 días. Se realmente queres proceder, por favor confirme co seu contrasinal na caixa inferior.",
+ "account_usage_reservations_none": "Non hai temas reservados para esta conta",
+ "subscribe_dialog_subscribe_topic_placeholder": "Nome do tema, ex. phil_alertas",
+ "account_usage_title": "Uso",
+ "account_basics_tier_upgrade_button": "Mexorar a Pro",
+ "subscribe_dialog_error_topic_already_reserved": "Tema xa reservado",
+ "account_basics_tier_admin_suffix_no_tier": "(sen tier)",
+ "account_basics_tier_payment_overdue": "O pago está retrasado. Por favor, revise o seu método de pago o a súa conta será degradada pronto.",
+ "account_basics_phone_numbers_description": "Para notificacións telefónicas",
+ "account_basics_tier_free": "De balde",
+ "account_basics_tier_admin": "Admin",
+ "account_delete_dialog_button_cancel": "Cancelar",
+ "account_basics_password_description": "Modificar o contrasinal da conta",
+ "account_usage_calls_title": "Chamadas realizadas",
+ "account_basics_tier_basic": "Básico",
+ "account_basics_phone_numbers_copied_to_clipboard": "Número de teléfono copiado no portapapeis",
+ "account_basics_tier_title": "Tipo de conta",
+ "account_usage_cannot_create_portal_session": "Non foi posible abrir o portal de pagos",
+ "account_delete_description": "Borrar permanentemente a túa conta",
+ "account_basics_phone_numbers_dialog_number_placeholder": "ex. +1222333444",
+ "account_basics_phone_numbers_dialog_code_placeholder": "ex. 123456",
+ "account_basics_tier_manage_billing_button": "Xestionar pagos",
+ "account_basics_username_description": "Ei, ese eres ti ❤",
+ "account_basics_password_dialog_confirm_password_label": "Confirmar contrasinal",
+ "account_basics_tier_interval_yearly": "anual",
+ "account_delete_dialog_button_submit": "Borrar permanentemente a conta",
+ "account_basics_phone_numbers_dialog_channel_call": "Chamada",
+ "account_basics_password_title": "Contrasinal",
+ "account_basics_password_dialog_new_password_label": "Novo contrasinal",
+ "account_usage_of_limit": "de {{limit}}",
+ "subscribe_dialog_error_user_anonymous": "anónimo",
+ "account_usage_basis_ip_description": "Estadísticas de uso e límites para esta conta están basados na sua IP, polo que poden estar compartidos con outros usuarios. Os limites mostrados son aproximados, basados nos ratios de limite existentes.",
+ "account_basics_password_dialog_title": "Modificar contrasinal",
+ "account_usage_limits_reset_daily": "Límite de uso é reiniciado diariamente a medianoite (UTC(",
+ "account_usage_unlimited": "Sen límites",
+ "account_basics_phone_numbers_title": "Números de teléfono",
+ "account_basics_password_dialog_current_password_label": "Contrasinal actual",
+ "subscribe_dialog_subscribe_base_url_label": "URL do servizo",
+ "account_usage_reservations_title": "Temas reservados",
+ "account_usage_calls_none": "Non se poden realizar chamadas con esta conta",
+ "subscribe_dialog_subscribe_use_another_label": "Usar outro servidor",
+ "account_basics_phone_numbers_dialog_code_label": "Código de verificación",
+ "account_basics_tier_paid_until": "Suscripción pagada ata {{date}}, e vaise auto-renovar",
+ "account_usage_attachment_storage_description": "{{filesize}} por arquivo, borrado despois de {{expiry}}",
+ "account_basics_phone_numbers_dialog_verify_button_call": "Chámame",
+ "account_usage_emails_title": "Emails enviados",
+ "account_basics_phone_numbers_dialog_channel_sms": "SMS",
+ "subscribe_dialog_login_description": "Este tema está protexido por contrasinal. Por favor, introduza o usuario e contrasinal para subscribirse."
}
From 68a7756621946c366ebfb99c614f7255e0494183 Mon Sep 17 00:00:00 2001
From: Mazurky
Date: Sat, 9 Sep 2023 15:29:57 +0000
Subject: [PATCH 34/92] Translated using Weblate (Slovak)
Currently translated at 100.0% (382 of 382 strings)
Translation: ntfy/Web app
Translate-URL: https://hosted.weblate.org/projects/ntfy/web/sk/
---
web/public/static/langs/sk.json | 209 +++++++++++++++++++++++++++++++-
1 file changed, 208 insertions(+), 1 deletion(-)
diff --git a/web/public/static/langs/sk.json b/web/public/static/langs/sk.json
index e2a54dba..8ea1b45f 100644
--- a/web/public/static/langs/sk.json
+++ b/web/public/static/langs/sk.json
@@ -173,5 +173,212 @@
"publish_dialog_attach_placeholder": "Pripojiť súbor pomocou URL adresy, napr. https://f-droid.org/F-Droid.apk",
"publish_dialog_chip_email_label": "Preposlanie na email",
"publish_dialog_chip_attach_file_label": "Pripojiť miestny súbor",
- "publish_dialog_details_examples_description": "Príklady a podrobný opis všetkých funkcií odosielania nájdete v dokumentácii."
+ "publish_dialog_details_examples_description": "Príklady a podrobný opis všetkých funkcií odosielania nájdete v dokumentácii.",
+ "account_upgrade_dialog_tier_features_no_calls": "Žiadne telefonáty",
+ "account_upgrade_dialog_billing_contact_email": "V prípade otázok týkajúcich sa fakturácie nás prosím kontaktujte tu.",
+ "account_tokens_dialog_title_create": "Vytvoriť prístupový token",
+ "prefs_reservations_dialog_title_edit": "Upraviť rezervovanú tému",
+ "account_basics_tier_interval_monthly": "mesačne",
+ "account_basics_tier_canceled_subscription": "Vaše predplatné bolo zrušené a bude preradené na bezplatné konto k dátumu {{date}}.",
+ "priority_default": "predvolená",
+ "prefs_notifications_min_priority_title": "Najnižšia priorita",
+ "account_upgrade_dialog_tier_features_calls_one": "{{calls}} denný telefonát",
+ "account_upgrade_dialog_tier_current_label": "Aktuálne",
+ "account_basics_password_dialog_current_password_incorrect": "Nesprávne heslo",
+ "account_tokens_table_token_header": "Token",
+ "prefs_notifications_delete_after_never": "Nikdy",
+ "prefs_users_description": "Tu môžete pridávať/odstraňovať používateľov pre svoje chránené témy. Upozorňujeme, že používateľské meno a heslo sú uložené v lokálnom úložisku prehliadača.",
+ "account_basics_phone_numbers_dialog_number_label": "Telefónne číslo",
+ "subscribe_dialog_subscribe_description": "Témy nemusia byť chránené heslom, preto vyberte názov, ktorý nie je ľahké uhádnuť. Po prihlásení sa na odber môžete PUT/POST oznámenia.",
+ "account_basics_password_dialog_button_submit": "Zmeniť heslo",
+ "account_basics_phone_numbers_dialog_check_verification_button": "Potvrdiť kód",
+ "account_upgrade_dialog_interval_yearly_discount_save_up_to": "ušetrite až {{discount}}%",
+ "account_tokens_dialog_label": "Označenie, napr. Radarr notifications",
+ "account_tokens_table_expires_header": "Vyprší",
+ "account_upgrade_dialog_proration_info": "Vyhlásenie: Pri prechode medzi platenými plánmi sa rozdiel v cene účtuje okamžite. Pri prechode na nižšiu úroveň sa zostatok použije na platbu za budúce fakturačné obdobia.",
+ "prefs_reservations_dialog_access_label": "Prístup",
+ "account_usage_attachment_storage_title": "Ukladanie príloh",
+ "prefs_users_dialog_username_label": "Používateľské meno, napr. phil",
+ "account_usage_messages_title": "Zverejnené správy",
+ "emoji_picker_search_clear": "Vymazať vyhľadávanie",
+ "prefs_reservations_table_not_subscribed": "Odber nie je prihlásený",
+ "account_upgrade_dialog_tier_features_emails_other": "{{emails}} denné emaily",
+ "prefs_notifications_min_priority_max_only": "Iba najvyššia priorita",
+ "account_upgrade_dialog_tier_features_calls_other": "{{calls}} denné telefonáty",
+ "prefs_notifications_sound_description_some": "Oznámenia pri príchode prehrávajú zvuk {{sound}}",
+ "prefs_reservations_edit_button": "Upraviť prístup k téme",
+ "account_basics_phone_numbers_dialog_verify_button_sms": "Poslať SMS",
+ "account_basics_tier_change_button": "Zmeniť",
+ "account_tokens_dialog_expires_never": "Platnosť tokenu nikdy nevyprší",
+ "subscribe_dialog_login_title": "Vyžaduje sa prihlásenie",
+ "account_tokens_dialog_expires_x_days": "Token vyprší za {{days}} dní",
+ "prefs_reservations_table_everyone_read_only": "Môžem publikovať a odoberať, každý môže odoberať",
+ "prefs_reservations_table_everyone_deny_all": "Iba ja môžem publikovať a odoberať",
+ "account_basics_phone_numbers_dialog_description": "Ak chcete používať funkciu oznamovanie hovorom, musíte pridať a overiť aspoň jedno telefónne číslo. Overenie je možné vykonať prostredníctvom SMS alebo telefonického hovoru.",
+ "account_upgrade_dialog_tier_features_reservations_one": "{{reservations}} rezervovaná téma",
+ "account_delete_title": "Odstrániť účet",
+ "subscribe_dialog_login_button_login": "Prihlásenie",
+ "account_upgrade_dialog_tier_features_no_reservations": "Žiadne rezervované témy",
+ "prefs_users_table_cannot_delete_or_edit": "Nie je možné odstrániť alebo upraviť prihláseného používateľa",
+ "account_basics_tier_admin_suffix_with_tier": "(s úrovňou {{tier}})",
+ "prefs_notifications_delete_after_three_hours_description": "Oznámenia sa automaticky odstránia po troch hodinách",
+ "prefs_notifications_delete_after_three_hours": "Po troch hodinách",
+ "prefs_notifications_min_priority_description_x_or_higher": "Zobraziť oznámenia, ak je priorita {{number}} ({{name}}) alebo vyššia",
+ "reservation_delete_dialog_description": "Odstránením rezervácie sa vzdáte vlastníctva témy a umožníte ostatným, aby si ju rezervovali. Existujúce správy a prílohy si môžete ponechať alebo odstrániť.",
+ "subscribe_dialog_login_username_label": "Používateľské meno, napr. phil",
+ "subscribe_dialog_error_user_not_authorized": "Používateľ {{username}} nie je autorizovaný",
+ "prefs_reservations_table_everyone_read_write": "Každý môže publikovať a odoberať",
+ "prefs_reservations_dialog_title_delete": "Odstrániť rezervovanú tému",
+ "prefs_users_table": "Tabuľka používateľov",
+ "prefs_reservations_table_topic_header": "Téma",
+ "reservation_delete_dialog_submit_button": "Odstrániť rezerváciu",
+ "prefs_reservations_limit_reached": "Dosiahli ste limit rezervovaných tém.",
+ "account_upgrade_dialog_interval_monthly": "Mesačne",
+ "prefs_users_add_button": "Pridať používateľa",
+ "account_upgrade_dialog_tier_features_messages_other": "{{messages}} denné správy",
+ "account_basics_phone_numbers_no_phone_numbers_yet": "Zatiaľ žiadne telefónne čísla",
+ "subscribe_dialog_subscribe_button_generate_topic_name": "Vygenerovať názov",
+ "prefs_appearance_language_title": "Jazyk",
+ "prefs_notifications_delete_after_one_day_description": "Oznámenia sa automaticky odstránia po jednom dni",
+ "subscribe_dialog_subscribe_button_subscribe": "Odoberať",
+ "account_tokens_table_never_expires": "Nikdy nevyprší",
+ "account_tokens_delete_dialog_title": "Odstrániť prístupový token",
+ "prefs_notifications_delete_after_one_month": "Po jednom mesiaci",
+ "account_basics_phone_numbers_dialog_title": "Pridať telefónne číslo",
+ "account_tokens_delete_dialog_description": "Pred odstránením prístupového tokenu sa uistite, že ho aktívne nepoužívajú žiadne aplikácie ani skripty. Túto akciu nie je možné vrátiť späť.",
+ "account_tokens_table_label_header": "Označenie",
+ "account_upgrade_dialog_billing_contact_website": "Otázky týkajúce sa fakturácie nájdete na našej webovej stránke.",
+ "account_basics_username_admin_tooltip": "Ste Admin",
+ "prefs_notifications_delete_after_never_description": "Oznámenia sa nikdy automaticky neodstránia",
+ "account_delete_dialog_description": "Tým sa vaše konto natrvalo odstráni vrátane všetkých údajov uložených na serveri. Po vymazaní bude vaše používateľské meno 7 dní nedostupné. Ak naozaj chcete pokračovať, potvrďte svoje heslo v poli nižšie.",
+ "account_upgrade_dialog_tier_features_reservations_other": "{{reservations}} rezervované témy",
+ "account_usage_reservations_none": "Žiadne rezervované témy pre toto konto",
+ "prefs_notifications_sound_description_none": "Pri príchode oznámení sa neprehráva žiadny zvuk",
+ "account_tokens_description": "Pri publikovaní a prihlasovaní prostredníctvom rozhrania ntfy API používajte prístupové tokeny, aby ste nemuseli posielať prihlasovacie údaje k účtu. Viacej informácií nájdete v dokumentácií.",
+ "prefs_reservations_table": "Tabuľka rezervovaných tém",
+ "emoji_picker_search_placeholder": "Vyhľadať emoji",
+ "account_upgrade_dialog_button_cancel_subscription": "Zrušiť predplatné",
+ "account_upgrade_dialog_tier_features_emails_one": "{{emails}} denný email",
+ "account_upgrade_dialog_tier_features_attachment_file_size": "{{filesize}} na jeden súbor",
+ "prefs_reservations_description": "Tu si môžete rezervovať názvy tém na osobné použitie. Rezervovaním témy získate vlastníctvo nad témou a môžete definovať prístupové práva pre ostatných používateľov k téme.",
+ "account_usage_title": "Používanie",
+ "account_basics_tier_upgrade_button": "Vylepšiť na PRO verziu",
+ "prefs_users_description_no_sync": "Používatelia a heslá nie sú synchronizované s vaším účtom.",
+ "account_tokens_dialog_title_edit": "Upraviť prístupový token",
+ "account_upgrade_dialog_tier_features_messages_one": "{{messages}} denná správa",
+ "account_upgrade_dialog_reservations_warning_one": "Vybraná úroveň umožňuje menej rezervovaných tém ako vaša aktuálna úroveň. Pred zmenou úrovne vymažte aspoň jednu rezerváciu. Rezervácie môžete odstrániť v Nastaveniach.",
+ "subscribe_dialog_error_topic_already_reserved": "Téma je už rezervovaná",
+ "prefs_users_table_user_header": "Používateľ",
+ "error_boundary_stack_trace": "Výpis zásobníka",
+ "prefs_notifications_delete_after_one_week": "Po jednom týždni",
+ "prefs_reservations_delete_button": "Resetovať prístup k téme",
+ "account_basics_tier_admin_suffix_no_tier": "(bez úrovne)",
+ "prefs_notifications_delete_after_one_week_description": "Oznámenia sa automaticky odstránia po jednom týždni",
+ "error_boundary_unsupported_indexeddb_description": "Webová aplikácia ntfy potrebuje na fungovanie IndexedDB a váš prehliadač nepodporuje IndexedDB v režime súkromného prehliadania.
## [ntfy Pro](https://ntfy.sh/app) 💸 🎉
-I now offer paid plans for [ntfy.sh](https://ntfy.sh/) if you don't want to self-host, or you want to support the development of ntfy (→ [Purchase via web app](https://ntfy.sh/app)). You can **buy a plan for as low as $3.33/month** (if you use promo code `MYTOPIC`, limited time only). You can also donate via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), and [Liberapay](https://liberapay.com/ntfy). I would be very humbled by your sponsorship. ❤️
+I now offer paid plans for [ntfy.sh](https://ntfy.sh/) if you don't want to self-host, or you want to support the development of
+ntfy (→ [Purchase via web app](https://ntfy.sh/app)). You can **buy a plan for as low as $5/month**.
+You can also donate via [GitHub Sponsors](https://github.com/sponsors/binwiederhier), and [Liberapay](https://liberapay.com/ntfy).
+I would be very humbled by your sponsorship. ❤️
## **[Documentation](https://ntfy.sh/docs/)**
diff --git a/docs/integrations.md b/docs/integrations.md
index cf3d7880..6da0f63f 100644
--- a/docs/integrations.md
+++ b/docs/integrations.md
@@ -129,17 +129,25 @@ I've added a ⭐ to projects or posts that have a significant following, or had
- [vigilant](https://github.com/VerifiedJoseph/vigilant) - Monitor RSS/ATOM and JSON feeds, and send push notifications on new entries (PHP)
- [ansible-role-ntfy-alertmanager](https://github.com/bleetube/ansible-role-ntfy-alertmanager) - Ansible role to install xenrox/ntfy-alertmanager
- [NtfyMe-Blender](https://github.com/NotNanook/NtfyMe-Blender) - Blender addon to send notifications to NtfyMe (Python)
-- [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that let's you share files from your share feed to a topic of your choice.
-
+- [ntfy-ios-filesharing](https://www.icloud.com/shortcuts/fe948d151b2e4ae08fb2f9d6b27d680b) - An iOS shortcut that lets you share files from your share feed to a topic of your choice.
+- [systemd-ntfy](https://hackage.haskell.org/package/systemd-ntfy) - monitor a set of systemd services an send a notification to ntfy.sh whenever their status changes
+
## Blog + forum posts
+- [Installing Self Host NTFY On Linux Using Docker Container](https://www.pinoylinux.org/topicsplus/containers/installing-self-host-ntfy-on-linux-using-docker-container/) - pinoylinux.org - 9/2023
+- [Homelab Notifications with ntfy](https://blog.alexsguardian.net/posts/2023/09/12/selfhosting-ntfy/) ⭐ - alexsguardian.net - 9/2023
- [Why NTFY is the Ultimate Push Notification Tool for Your Needs](https://osintph.medium.com/why-ntfy-is-the-ultimate-push-notification-tool-for-your-needs-e767421c84c5) - osintph.medium.com - 9/2023
- [Supercharge Your Alerts: Ntfy — The Ultimate Push Notification Solution](https://medium.com/spring-boot/supercharge-your-alerts-ntfy-the-ultimate-push-notification-solution-a3dda79651fe) - spring-boot.medium.com - 9/2023
- [Deploy Ntfy using Docker](https://www.linkedin.com/pulse/deploy-ntfy-mohamed-sharfy/) - linkedin.com - 9/2023
- [Send Notifications With Ntfy for New WordPress Posts](https://www.activepieces.com/blog/ntfy-notifications-for-wordpress-new-posts) - activepieces.com - 9/2023
- [Get Ntfy Notifications About New Zendesk Ticket](https://www.activepieces.com/blog/ntfy-notifications-about-new-zendesk-tickets) - activepieces.com - 9/2023
+- [Set reminder for recurring events using ntfy & Cron](https://www.youtube.com/watch?v=J3O4aQ-EcYk) - youtube.com - 9/2023
+- [ntfy - Installation and full configuration setup](https://www.youtube.com/watch?v=QMy14rGmpFI) - youtube.com - 9/2023
+- [How to install Ntfy.sh on Portainer / Docker Compose](https://www.youtube.com/watch?v=utD9GNbAwyg) - youtube.com - 9/2023
+- [ntfy - Push-Benachrichtigungen // Push Notifications](https://www.youtube.com/watch?v=LE3vRPPqZOU) - youtube.com - 9/2023
- [Podman Update Notifications via Ntfy](https://rair.dev/podman-upadte-notifications-ntfy/) - rair.dev - 9/2023
- [NetworkChunk - how did I NOT know about this?](https://www.youtube.com/watch?v=poDIT2ruQ9M) ⭐ - youtube.com - 8/2023
+- [NTFY - Command-Line Notifications](https://academy.networkchuck.com/blog/ntfy/) - academy.networkchuck.com - 8/2023
- [Open Source Push Notifications! Get notified of any event you can imagine. Triggers abound!](https://www.youtube.com/watch?v=WJgwWXt79pE) ⭐ - youtube.com - 8/2023
- [How to install and self host an Ntfy server on Linux](https://linuxconfig.org/how-to-install-and-self-host-an-ntfy-server-on-linux) - linuxconfig.org - 7/2023
- [Basic website monitoring using cronjobs and ntfy.sh](https://burkhardt.dev/2023/website-monitoring-cron-ntfy/) - burkhardt.dev - 6/2023
From 19c30fc41157b6793e1199b5c97ff32962825f27 Mon Sep 17 00:00:00 2001
From: binwiederhier
Date: Sun, 24 Sep 2023 20:44:57 -0400
Subject: [PATCH 49/92] Add Alex's post in the install guide
---
docs/install.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/docs/install.md b/docs/install.md
index bc5b7a0d..ed101554 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -20,8 +20,9 @@ To run the ntfy server, then just run `ntfy serve` (or `systemctl start ntfy` wh
To send messages, use `ntfy publish`. To subscribe to topics, use `ntfy subscribe` (see [subscribing via CLI](subscribe/cli.md)
for details).
-If you like video tutorials, check out :simple-youtube: [Kris Occhipinti's ntfy install guide](https://www.youtube.com/watch?v=bZzqrX05mNU).
-It's short and to the point. _I am not affiliated with Kris, I just liked the video._
+If you like tutorials, check out :simple-youtube: [Kris Occhipinti's ntfy install guide](https://www.youtube.com/watch?v=bZzqrX05mNU) on YouTube, or
+[Alex's Docker-based setup guide](https://blog.alexsguardian.net/posts/2023/09/12/selfhosting-ntfy/). Both are great
+resources to get started. _I am not affiliated with Kris or Alex, I just liked their video/post._
## Linux binaries
Please check out the [releases page](https://github.com/binwiederhier/ntfy/releases) for binaries and
From 66ef28c2e299b8736e2a749c512abdd2f9001be8 Mon Sep 17 00:00:00 2001
From: Nihal Gonsalves
Date: Wed, 27 Sep 2023 23:16:05 +0200
Subject: [PATCH 50/92] fix(pwa): hide install prompt on macos 14 safari
---
.../pwa-install-macos-safari-add-to-dock.png | Bin 0 -> 166445 bytes
docs/subscribe/pwa.md | 7 +++++++
web/src/app/Notifier.js | 12 ++++++++++--
3 files changed, 17 insertions(+), 2 deletions(-)
create mode 100644 docs/static/img/pwa-install-macos-safari-add-to-dock.png
diff --git a/docs/static/img/pwa-install-macos-safari-add-to-dock.png b/docs/static/img/pwa-install-macos-safari-add-to-dock.png
new file mode 100644
index 0000000000000000000000000000000000000000..8a780605f1db305cd95418bf502a82aeb7f10def
GIT binary patch
literal 166445
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