mirror of
https://github.com/binwiederhier/ntfy.git
synced 2024-10-04 22:04:09 +02:00
Compare commits
17 commits
31d0c812ce
...
ffd7645c0b
Author | SHA1 | Date | |
---|---|---|---|
|
ffd7645c0b | ||
|
043738a475 | ||
|
fb52ad6fdb | ||
|
29318f9d61 | ||
|
030f7266f7 | ||
|
9692de1469 | ||
|
eab90a0275 | ||
|
e6f70f8e41 | ||
|
499b0dd839 | ||
|
f68ad6acdf | ||
|
a533bf9efb | ||
|
66ea805cde | ||
|
7c3b6e4521 | ||
|
9cb3d056fe | ||
|
69d6e0f890 | ||
|
ecab7fbf65 | ||
|
75887e4a62 |
12 changed files with 220 additions and 27 deletions
|
@ -195,6 +195,7 @@ account costs. Even small donations are very much appreciated. A big fat **Thank
|
||||||
<a href="https://github.com/IMarkoMC"><img src="https://github.com/IMarkoMC.png" width="40px" /></a>
|
<a href="https://github.com/IMarkoMC"><img src="https://github.com/IMarkoMC.png" width="40px" /></a>
|
||||||
<a href="https://github.com/rubund"><img src="https://github.com/rubund.png" width="40px" /></a>
|
<a href="https://github.com/rubund"><img src="https://github.com/rubund.png" width="40px" /></a>
|
||||||
<a href="https://github.com/Riolku"><img src="https://github.com/Riolku.png" width="40px" /></a>
|
<a href="https://github.com/Riolku"><img src="https://github.com/Riolku.png" width="40px" /></a>
|
||||||
|
<a href="https://github.com/arnbrhm"><img src="https://github.com/arnbrhm.png" width="40px" /></a>
|
||||||
|
|
||||||
I'd also like to thank JetBrains for their awesome [IntelliJ IDEA](https://www.jetbrains.com/idea/),
|
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:
|
and [DigitalOcean](https://m.do.co/c/442b929528db) (*referral link*) for supporting the project:
|
||||||
|
|
|
@ -1374,8 +1374,10 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release
|
||||||
|
|
||||||
* Swedish (thanks to [@hellbown](https://hosted.weblate.org/user/hellbown/))
|
* Swedish (thanks to [@hellbown](https://hosted.weblate.org/user/hellbown/))
|
||||||
|
|
||||||
### ntfy server v2.11.0
|
### ntfy server v2.11.0 (UNRELEASED)
|
||||||
|
|
||||||
**Bug fixes + maintenance:**
|
**Bug fixes + maintenance:**
|
||||||
|
|
||||||
* Re-add database index `idx_topic` to the `messages` table to fix performance issues on ntfy.sh (no ticket, big thanks to [@tcaputi](https://github.com/tcaputi) for finding this issue)
|
* Re-add database index `idx_topic` to the `messages` table to fix performance issues on ntfy.sh (no ticket, big thanks to [@tcaputi](https://github.com/tcaputi) for finding this issue)
|
||||||
|
* Do not set rate visitor for non-eligible topics (no ticket)
|
||||||
|
* Do not cache `config.js` ([#1098](https://github.com/binwiederhier/ntfy/pull/1098), thanks to [@wunter8](https://github.com/wunter8))
|
||||||
|
|
|
@ -593,6 +593,7 @@ func (s *Server) handleWebConfig(w http.ResponseWriter, _ *http.Request, _ *visi
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
w.Header().Set("Content-Type", "text/javascript")
|
w.Header().Set("Content-Type", "text/javascript")
|
||||||
|
w.Header().Set("Cache-Control", "no-cache")
|
||||||
_, err = io.WriteString(w, fmt.Sprintf("// Generated server configuration\nvar config = %s;\n", string(b)))
|
_, err = io.WriteString(w, fmt.Sprintf("// Generated server configuration\nvar config = %s;\n", string(b)))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1499,6 +1500,9 @@ func (s *Server) maybeSetRateVisitors(r *http.Request, v *visitor, topics []*top
|
||||||
// - topic is not reserved, and v.user has write access
|
// - topic is not reserved, and v.user has write access
|
||||||
writableRateTopics := make([]*topic, 0)
|
writableRateTopics := make([]*topic, 0)
|
||||||
for _, t := range topics {
|
for _, t := range topics {
|
||||||
|
if !util.Contains(eligibleRateTopics, t) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
ownerUserID, err := s.userManager.ReservationOwner(t.ID)
|
ownerUserID, err := s.userManager.ReservationOwner(t.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -2306,6 +2306,22 @@ func TestServer_SubscriberRateLimiting_Success(t *testing.T) {
|
||||||
require.Equal(t, 429, rr.Code)
|
require.Equal(t, 429, rr.Code)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestServer_SubscriberRateLimiting_NotWrongTopic(t *testing.T) {
|
||||||
|
c := newTestConfigWithAuthFile(t)
|
||||||
|
c.VisitorSubscriberRateLimiting = true
|
||||||
|
s := newTestServer(t, c)
|
||||||
|
|
||||||
|
subscriberFn := func(r *http.Request) {
|
||||||
|
r.RemoteAddr = "1.2.3.4"
|
||||||
|
}
|
||||||
|
rr := request(t, s, "GET", "/alerts,upAAAAAAAAAAAA,upBBBBBBBBBBBB/json?poll=1", "", nil, subscriberFn)
|
||||||
|
require.Equal(t, 200, rr.Code)
|
||||||
|
require.Equal(t, "", rr.Body.String())
|
||||||
|
require.Nil(t, s.topics["alerts"].rateVisitor)
|
||||||
|
require.Equal(t, "1.2.3.4", s.topics["upAAAAAAAAAAAA"].rateVisitor.ip.String())
|
||||||
|
require.Equal(t, "1.2.3.4", s.topics["upBBBBBBBBBBBB"].rateVisitor.ip.String())
|
||||||
|
}
|
||||||
|
|
||||||
func TestServer_SubscriberRateLimiting_NotEnabled_Failed(t *testing.T) {
|
func TestServer_SubscriberRateLimiting_NotEnabled_Failed(t *testing.T) {
|
||||||
c := newTestConfigWithAuthFile(t)
|
c := newTestConfigWithAuthFile(t)
|
||||||
c.VisitorRequestLimitBurst = 3
|
c.VisitorRequestLimitBurst = 3
|
||||||
|
|
|
@ -330,5 +330,34 @@
|
||||||
"account_basics_tier_paid_until": "تم دفع مبلغ الاشتراك إلى غاية {{date}}، وسيتم تجديده تِلْقائيًا",
|
"account_basics_tier_paid_until": "تم دفع مبلغ الاشتراك إلى غاية {{date}}، وسيتم تجديده تِلْقائيًا",
|
||||||
"account_basics_tier_canceled_subscription": "تم إلغاء اشتراكك وسيتم إعادته إلى مستوى حساب مجاني بداية مِن {{date}}.",
|
"account_basics_tier_canceled_subscription": "تم إلغاء اشتراكك وسيتم إعادته إلى مستوى حساب مجاني بداية مِن {{date}}.",
|
||||||
"account_delete_dialog_billing_warning": "إلغاء حسابك أيضاً يلغي اشتراكك في الفوترة فوراً ولن تتمكن من الوصول إلى لوح الفوترة بعد الآن.",
|
"account_delete_dialog_billing_warning": "إلغاء حسابك أيضاً يلغي اشتراكك في الفوترة فوراً ولن تتمكن من الوصول إلى لوح الفوترة بعد الآن.",
|
||||||
"nav_upgrade_banner_description": "حجز المواضيع والمزيد من الرسائل ورسائل البريد الإلكتروني والمرفقات الأكبر حجمًا"
|
"nav_upgrade_banner_description": "حجز المواضيع والمزيد من الرسائل ورسائل البريد الإلكتروني والمرفقات الأكبر حجمًا",
|
||||||
|
"prefs_appearance_theme_dark": "الوضع الليلي",
|
||||||
|
"prefs_appearance_theme_light": "الوضع النهاري",
|
||||||
|
"publish_dialog_checkbox_markdown": "تنسيق على هيئة ماركداون",
|
||||||
|
"alert_not_supported_context_description": "الإشعارات مسموحة فقط على بروتوكول HTTPS المأمن, هذه القيود <mdnLink>خصائص الإشعارات</mdnLink>",
|
||||||
|
"publish_dialog_call_reset": "حذف اتصال بالهاتف",
|
||||||
|
"publish_dialog_call_label": "اتصال هاتفي",
|
||||||
|
"publish_dialog_chip_call_label": "اتصال هاتفي",
|
||||||
|
"publish_dialog_delay_placeholder": "تأخير التوصيل, مثال {{unixTimestamp}}, {{relativeTime}}, او \"{{naturalLanguage}}\" (اللغة الإنجليزية فقط)",
|
||||||
|
"publish_dialog_attachment_limits_file_and_quota_reached": "تجاوز حجم {{fileSizeLimit}} الملف, {{remainingBytes}} متبقي",
|
||||||
|
"prefs_reservations_dialog_title_delete": "حذف حجز موضوع",
|
||||||
|
"publish_dialog_call_item": "اتصل برقم الهاتف {{number}}",
|
||||||
|
"publish_dialog_chip_call_no_verified_numbers_tooltip": "لا يوجد ارقام هواتف معرفة",
|
||||||
|
"action_bar_mute_notifications": "كتم الإشعارات",
|
||||||
|
"action_bar_unmute_notifications": "إلغاء كتم الإشعارات",
|
||||||
|
"alert_notification_ios_install_required_description": "اضغط على زر المشاركة ثم إضافة إلى الصفحة الرئيسية لتستقبل الإشعارات على أجهزة أبل",
|
||||||
|
"alert_notification_ios_install_required_title": "يجب تثبيت الصفحة",
|
||||||
|
"alert_notification_permission_denied_description": "الرجاء اعادة منح الصلاحيات في المتصفح",
|
||||||
|
"alert_notification_permission_denied_title": "الإشعارات مغلقة",
|
||||||
|
"notifications_actions_failed_notification": "حدث غير منفذ",
|
||||||
|
"prefs_notifications_web_push_disabled": "ملغي",
|
||||||
|
"account_basics_phone_numbers_dialog_channel_call": "اتصل",
|
||||||
|
"account_basics_phone_numbers_title": "أرقام الهواتف",
|
||||||
|
"account_basics_phone_numbers_dialog_channel_sms": "رسالة نصية قصيرة",
|
||||||
|
"account_basics_phone_numbers_dialog_check_verification_button": "رمز التأكيد",
|
||||||
|
"account_basics_phone_numbers_dialog_number_label": "رقم الهاتف",
|
||||||
|
"account_basics_phone_numbers_dialog_verify_button_call": "اتصل بي",
|
||||||
|
"account_basics_phone_numbers_dialog_code_label": "رمز التحقّق",
|
||||||
|
"account_upgrade_dialog_tier_price_per_month": "شهر",
|
||||||
|
"prefs_appearance_theme_title": "الحُلّة"
|
||||||
}
|
}
|
||||||
|
|
|
@ -380,5 +380,8 @@
|
||||||
"account_basics_phone_numbers_dialog_check_verification_button": "Code bestätigen",
|
"account_basics_phone_numbers_dialog_check_verification_button": "Code bestätigen",
|
||||||
"account_usage_calls_title": "Getätigte Anrufe",
|
"account_usage_calls_title": "Getätigte Anrufe",
|
||||||
"account_usage_calls_none": "Noch keine Anrufe mit diesem Account getätigt",
|
"account_usage_calls_none": "Noch keine Anrufe mit diesem Account getätigt",
|
||||||
"account_upgrade_dialog_tier_features_calls_one": "{{calls}} Telefonanrufe pro Tag"
|
"account_upgrade_dialog_tier_features_calls_one": "{{calls}} Telefonanrufe pro Tag",
|
||||||
|
"action_bar_mute_notifications": "Benachrichtigungen stummschalten",
|
||||||
|
"action_bar_unmute_notifications": "Benachrichtigungen lautschalten",
|
||||||
|
"alert_notification_permission_denied_title": "Benachrichtigungen sind blockiert"
|
||||||
}
|
}
|
||||||
|
|
36
web/public/static/langs/fa.json
Normal file
36
web/public/static/langs/fa.json
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"signup_title": "ایجاد اکانت ntfy",
|
||||||
|
"signup_form_button_submit": "ثبت نام",
|
||||||
|
"signup_already_have_account": "قبلا اکانت دارید؟ وارد بشود",
|
||||||
|
"signup_disabled": "ثبت نام غیرفعال است",
|
||||||
|
"login_title": "ورود به اکانت ntfy",
|
||||||
|
"login_link_signup": "ثبت نام",
|
||||||
|
"login_disabled": "ورود غیرفعال است",
|
||||||
|
"action_bar_show_menu": "نمایش منو",
|
||||||
|
"action_bar_account": "اکانت",
|
||||||
|
"action_bar_reservation_limit_reached": "دسترسی محدود",
|
||||||
|
"action_bar_send_test_notification": "ارسال تستی اعلان",
|
||||||
|
"action_bar_unmute_notifications": "لغو ساکت کردن اعلان ها",
|
||||||
|
"action_bar_unsubscribe": "لغو اشتراک",
|
||||||
|
"action_bar_toggle_mute": "بی صدا/لغو اعلان ها",
|
||||||
|
"common_cancel": "لغو",
|
||||||
|
"common_save": "ذخیره",
|
||||||
|
"common_add": "اضافه کردن",
|
||||||
|
"common_back": "عقب",
|
||||||
|
"common_copy_to_clipboard": "کپی به کلیپ بورد",
|
||||||
|
"signup_form_username": "نام کاربری",
|
||||||
|
"signup_form_password": "کلمه عبور",
|
||||||
|
"signup_form_confirm_password": "تایید پسورد",
|
||||||
|
"signup_form_toggle_password_visibility": "تغییر وضعیت نمایش کلمه عبور",
|
||||||
|
"signup_error_username_taken": "نام کاربری {{username}} قبلا استفاده شده است",
|
||||||
|
"signup_error_creation_limit_reached": "به حد مجاز ایجاد حساب رسیده است",
|
||||||
|
"login_form_button_submit": "ورود",
|
||||||
|
"action_bar_logo_alt": "لوگوی ntfy",
|
||||||
|
"action_bar_settings": "تنظیمات",
|
||||||
|
"action_bar_change_display_name": "تغییر نام نمایشی",
|
||||||
|
"action_bar_reservation_add": "رزرو موضوع",
|
||||||
|
"action_bar_reservation_edit": "تغییر رزرو",
|
||||||
|
"action_bar_reservation_delete": "حذف رزرو",
|
||||||
|
"action_bar_mute_notifications": "ساکت کردن اعلان ها",
|
||||||
|
"action_bar_clear_notifications": "پاک کردن تمام اعلان ها"
|
||||||
|
}
|
|
@ -11,7 +11,7 @@
|
||||||
"nav_button_all_notifications": "Toutes les notifications",
|
"nav_button_all_notifications": "Toutes les notifications",
|
||||||
"nav_button_settings": "Paramètres",
|
"nav_button_settings": "Paramètres",
|
||||||
"nav_button_documentation": "Documentation",
|
"nav_button_documentation": "Documentation",
|
||||||
"alert_not_supported_description": "Les notifications ne sont pas prises en charge par votre navigateur.",
|
"alert_not_supported_description": "Les notifications ne sont pas prises en charge par votre navigateur",
|
||||||
"notifications_attachment_copy_url_title": "Copier l'URL de la pièce jointe dans le presse-papiers",
|
"notifications_attachment_copy_url_title": "Copier l'URL de la pièce jointe dans le presse-papiers",
|
||||||
"notifications_attachment_open_title": "Aller à {{url}}",
|
"notifications_attachment_open_title": "Aller à {{url}}",
|
||||||
"notifications_attachment_link_expired": "lien de téléchargement expiré",
|
"notifications_attachment_link_expired": "lien de téléchargement expiré",
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
"nav_button_subscribe": "S'abonner au sujet",
|
"nav_button_subscribe": "S'abonner au sujet",
|
||||||
"notifications_no_subscriptions_description": "Cliquez sur le lien « {{linktext}} » pour créer ou vous abonner à un sujet. Après cela, vous pouvez envoyer des messages via PUT ou POST et vous recevrez des notifications ici.",
|
"notifications_no_subscriptions_description": "Cliquez sur le lien « {{linktext}} » pour créer ou vous abonner à un sujet. Après cela, vous pouvez envoyer des messages via PUT ou POST et vous recevrez des notifications ici.",
|
||||||
"alert_notification_permission_required_title": "Les notifications sont désactivées",
|
"alert_notification_permission_required_title": "Les notifications sont désactivées",
|
||||||
"alert_notification_permission_required_description": "Autorisez votre navigateur à afficher les notifications du bureau.",
|
"alert_notification_permission_required_description": "Autorisez votre navigateur à afficher les notifications du bureau",
|
||||||
"alert_notification_permission_required_button": "Accorder maintenant",
|
"alert_notification_permission_required_button": "Accorder maintenant",
|
||||||
"notifications_none_for_any_title": "Vous n'avez reçu aucune notification.",
|
"notifications_none_for_any_title": "Vous n'avez reçu aucune notification.",
|
||||||
"publish_dialog_title_topic": "Publier vers {{topic}}",
|
"publish_dialog_title_topic": "Publier vers {{topic}}",
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
"subscribe_dialog_subscribe_button_subscribe": "S'abonner",
|
"subscribe_dialog_subscribe_button_subscribe": "S'abonner",
|
||||||
"subscribe_dialog_login_description": "Ce sujet est protégé par un mot de passe. Veuillez entrer le nom d'utilisateur et le mot de passe pour vous abonner.",
|
"subscribe_dialog_login_description": "Ce sujet est protégé par un mot de passe. Veuillez entrer le nom d'utilisateur et le mot de passe pour vous abonner.",
|
||||||
"subscribe_dialog_login_username_label": "Nom d'utilisateur, par ex. phil",
|
"subscribe_dialog_login_username_label": "Nom d'utilisateur, par ex. phil",
|
||||||
"subscribe_dialog_login_button_login": "Connexion",
|
"subscribe_dialog_login_button_login": "Se connecter",
|
||||||
"prefs_notifications_sound_title": "Son de notification",
|
"prefs_notifications_sound_title": "Son de notification",
|
||||||
"prefs_notifications_delete_after_never": "Jamais",
|
"prefs_notifications_delete_after_never": "Jamais",
|
||||||
"prefs_users_table_base_url_header": "URL de service",
|
"prefs_users_table_base_url_header": "URL de service",
|
||||||
|
@ -194,13 +194,13 @@
|
||||||
"signup_error_username_taken": "L'identifiant {{username}} est déjà utilisé",
|
"signup_error_username_taken": "L'identifiant {{username}} est déjà utilisé",
|
||||||
"signup_error_creation_limit_reached": "Limite de création de comptes atteinte",
|
"signup_error_creation_limit_reached": "Limite de création de comptes atteinte",
|
||||||
"login_title": "Se connecter à son compte Ntfy",
|
"login_title": "Se connecter à son compte Ntfy",
|
||||||
"login_form_button_submit": "Connexion",
|
"login_form_button_submit": "Se connecter",
|
||||||
"login_link_signup": "S'inscrire",
|
"login_link_signup": "S'inscrire",
|
||||||
"login_disabled": "La connection est désactivée",
|
"login_disabled": "La connection est désactivée",
|
||||||
"action_bar_account": "Compte",
|
"action_bar_account": "Compte",
|
||||||
"action_bar_profile_title": "Profil",
|
"action_bar_profile_title": "Profil",
|
||||||
"action_bar_profile_settings": "Paramètres",
|
"action_bar_profile_settings": "Paramètres",
|
||||||
"action_bar_sign_in": "Connexion",
|
"action_bar_sign_in": "Se connecter",
|
||||||
"action_bar_sign_up": "Inscription",
|
"action_bar_sign_up": "Inscription",
|
||||||
"nav_button_account": "Compte",
|
"nav_button_account": "Compte",
|
||||||
"signup_title": "Créer un compte Ntfy",
|
"signup_title": "Créer un compte Ntfy",
|
||||||
|
@ -380,5 +380,28 @@
|
||||||
"publish_dialog_chip_call_no_verified_numbers_tooltip": "Aucun numéro de téléphone vérifié",
|
"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_reservations_one": "{{reservations}} sujet réservé",
|
||||||
"account_upgrade_dialog_tier_features_calls_one": "{{calls}} appels journaliers",
|
"account_upgrade_dialog_tier_features_calls_one": "{{calls}} appels journaliers",
|
||||||
"account_usage_calls_title": "Appels téléphoniques passés"
|
"account_usage_calls_title": "Appels téléphoniques passés",
|
||||||
|
"action_bar_mute_notifications": "Désactiver les notifications",
|
||||||
|
"action_bar_unmute_notifications": "Réactiver les notifications",
|
||||||
|
"alert_notification_permission_denied_title": "Les notifications sont bloquées",
|
||||||
|
"alert_notification_permission_denied_description": "Veuillez les réactiver dans votre navigateur",
|
||||||
|
"alert_notification_ios_install_required_description": "Cliquez sur l'icône Partager, puis Sur l'écran d'accueil pour activer les notifications sur iOS",
|
||||||
|
"alert_notification_ios_install_required_title": "Installation iOS nécessaire",
|
||||||
|
"notifications_actions_failed_notification": "Échec de l'action",
|
||||||
|
"publish_dialog_checkbox_markdown": "Formater en Markdown",
|
||||||
|
"subscribe_dialog_subscribe_use_another_background_info": "Les notifications provenant d'autres serveurs ne seront pas reçues tant que l'application web n'est pas ouverte",
|
||||||
|
"prefs_notifications_web_push_title": "Notifications en arrière-plan",
|
||||||
|
"prefs_notifications_web_push_enabled_description": "Les notifications sont reçues même quand l'application web n'est pas en cours d'exécution (via Web Push)",
|
||||||
|
"prefs_notifications_web_push_disabled_description": "Les notifications sont reçues quand l'application web est en cours d'exécution (via WebSocket)",
|
||||||
|
"prefs_notifications_web_push_enabled": "Activé pour {{server}}",
|
||||||
|
"prefs_notifications_web_push_disabled": "Désactivé",
|
||||||
|
"prefs_appearance_theme_title": "Thème",
|
||||||
|
"prefs_appearance_theme_system": "Système (défaut)",
|
||||||
|
"prefs_appearance_theme_dark": "Mode sombre",
|
||||||
|
"prefs_appearance_theme_light": "Mode clair",
|
||||||
|
"error_boundary_button_reload_ntfy": "Recharger ntfy",
|
||||||
|
"web_push_subscription_expiring_title": "Les notifications seront suspendues",
|
||||||
|
"web_push_subscription_expiring_body": "Ouvrez ntfy pour continuer à recevoir les notifications",
|
||||||
|
"web_push_unknown_notification_title": "Notification inconnue reçue du serveur",
|
||||||
|
"web_push_unknown_notification_body": "Il est possible que vous deviez mettre à jour ntfy en ouvrant l'application web"
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
"message_bar_type_message": "Typ hier een bericht",
|
"message_bar_type_message": "Typ hier een bericht",
|
||||||
"action_bar_unsubscribe": "Afmelden",
|
"action_bar_unsubscribe": "Afmelden",
|
||||||
"message_bar_error_publishing": "Fout bij publiceren notificatie",
|
"message_bar_error_publishing": "Fout bij publiceren notificatie",
|
||||||
"nav_topics_title": "Geabonneerde onderwerpen",
|
"nav_topics_title": "Geabonneerde topics",
|
||||||
"nav_button_settings": "Instellingen",
|
"nav_button_settings": "Instellingen",
|
||||||
"alert_not_supported_description": "Notificaties worden niet ondersteund door je browser.",
|
"alert_not_supported_description": "Notificaties worden niet ondersteund door je browser",
|
||||||
"notifications_none_for_any_title": "Je hebt nog geen notificaties ontvangen.",
|
"notifications_none_for_any_title": "Je hebt nog geen notificaties ontvangen.",
|
||||||
"publish_dialog_tags_label": "Tags",
|
"publish_dialog_tags_label": "Tags",
|
||||||
"publish_dialog_chip_attach_file_label": "Lokaal bestand bijvoegen",
|
"publish_dialog_chip_attach_file_label": "Lokaal bestand bijvoegen",
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
"nav_button_muted": "Notificaties gedempt",
|
"nav_button_muted": "Notificaties gedempt",
|
||||||
"nav_button_connecting": "verbinden",
|
"nav_button_connecting": "verbinden",
|
||||||
"alert_notification_permission_required_title": "Notificaties zijn uitgeschakeld",
|
"alert_notification_permission_required_title": "Notificaties zijn uitgeschakeld",
|
||||||
"alert_notification_permission_required_description": "Verleen je browser toestemming voor het weergeven van notificaties.",
|
"alert_notification_permission_required_description": "Verleen je browser toestemming voor het weergeven van notificaties op desktop",
|
||||||
"alert_notification_permission_required_button": "Nu toestaan",
|
"alert_notification_permission_required_button": "Nu toestaan",
|
||||||
"alert_not_supported_title": "Notificaties zijn niet ondersteund",
|
"alert_not_supported_title": "Notificaties zijn niet ondersteund",
|
||||||
"notifications_list": "Notificatielijst",
|
"notifications_list": "Notificatielijst",
|
||||||
|
@ -195,14 +195,14 @@
|
||||||
"signup_disabled": "Registreren is uitgeschakeld",
|
"signup_disabled": "Registreren is uitgeschakeld",
|
||||||
"signup_error_username_taken": "Gebruikersnaam {{username}} is al bezet",
|
"signup_error_username_taken": "Gebruikersnaam {{username}} is al bezet",
|
||||||
"signup_error_creation_limit_reached": "Limiet voor aanmaken account bereikt",
|
"signup_error_creation_limit_reached": "Limiet voor aanmaken account bereikt",
|
||||||
"login_title": "Aanmelden bij uw ntfy account",
|
"login_title": "Inloggen met uw ntfy account",
|
||||||
"login_form_button_submit": "Inloggen",
|
"login_form_button_submit": "Inloggen",
|
||||||
"login_link_signup": "Registreer",
|
"login_link_signup": "Registreren",
|
||||||
"login_disabled": "Inloggen is uitgeschakeld",
|
"login_disabled": "Inloggen is uitgeschakeld",
|
||||||
"action_bar_account": "Account",
|
"action_bar_account": "Account",
|
||||||
"action_bar_reservation_add": "Onderwerp reserveren",
|
"action_bar_reservation_add": "Topic reserveren",
|
||||||
"action_bar_reservation_edit": "Reservatie wijzigen",
|
"action_bar_reservation_edit": "Reservering wijzigen",
|
||||||
"action_bar_reservation_delete": "Verwijder reservatie",
|
"action_bar_reservation_delete": "Verwijder reservering",
|
||||||
"action_bar_reservation_limit_reached": "Limiet bereikt",
|
"action_bar_reservation_limit_reached": "Limiet bereikt",
|
||||||
"action_bar_profile_title": "Profiel",
|
"action_bar_profile_title": "Profiel",
|
||||||
"nav_upgrade_banner_label": "Upgrade naar ntfy Pro",
|
"nav_upgrade_banner_label": "Upgrade naar ntfy Pro",
|
||||||
|
@ -380,5 +380,28 @@
|
||||||
"account_basics_phone_numbers_dialog_verify_button_sms": "Stuur SMS",
|
"account_basics_phone_numbers_dialog_verify_button_sms": "Stuur SMS",
|
||||||
"account_basics_phone_numbers_dialog_code_label": "Verificatiecode",
|
"account_basics_phone_numbers_dialog_code_label": "Verificatiecode",
|
||||||
"account_usage_calls_title": "Aantal telefoontjes",
|
"account_usage_calls_title": "Aantal telefoontjes",
|
||||||
"account_usage_calls_none": "Met dit account kan niet worden gebeld"
|
"account_usage_calls_none": "Met dit account kan niet worden gebeld",
|
||||||
|
"action_bar_mute_notifications": "Notificaties dempen",
|
||||||
|
"prefs_notifications_web_push_disabled_description": "Notificaties worden ontvangen als de webapplicatie geopend is (via WebSocket)",
|
||||||
|
"web_push_unknown_notification_body": "Het is mogelijk dat je ntfy moet updaten door de webapplicatie opnieuw te openen",
|
||||||
|
"action_bar_unmute_notifications": "Dempen notificaties opheffen",
|
||||||
|
"alert_notification_permission_denied_title": "Notificaties zijn geblokkeerd",
|
||||||
|
"alert_notification_permission_denied_description": "Activeer ze in de browser",
|
||||||
|
"alert_notification_ios_install_required_title": "iOS installatie vereist",
|
||||||
|
"alert_notification_ios_install_required_description": "Klik op het Deel icoon, daarna op \"Add to Home Screen\" om notificaties op iOS toe te staan",
|
||||||
|
"notifications_actions_failed_notification": "Actie onsuccesvol",
|
||||||
|
"publish_dialog_checkbox_markdown": "Opmaken met Markdown",
|
||||||
|
"subscribe_dialog_subscribe_use_another_background_info": "Notificaties van andere servers worden niet ontvangen als de webapplicatie niet geopend is",
|
||||||
|
"prefs_notifications_web_push_title": "Achtergrond notificaties",
|
||||||
|
"prefs_notifications_web_push_enabled": "Aan voor {{server}}",
|
||||||
|
"prefs_notifications_web_push_disabled": "Uitgezet",
|
||||||
|
"prefs_notifications_web_push_enabled_description": "Notificaties worden ontvangen, ook als de webapplicatie niet geopend is (via Web Push)",
|
||||||
|
"prefs_appearance_theme_title": "Thema",
|
||||||
|
"prefs_appearance_theme_system": "Systeem (standaard)",
|
||||||
|
"prefs_appearance_theme_dark": "Donkere modus",
|
||||||
|
"prefs_appearance_theme_light": "Lichte modus",
|
||||||
|
"error_boundary_button_reload_ntfy": "Herlaad ntfy",
|
||||||
|
"web_push_subscription_expiring_title": "Notificaties worden gepauzeerd",
|
||||||
|
"web_push_subscription_expiring_body": "Open ntfy om weer notificaties te ontvangen",
|
||||||
|
"web_push_unknown_notification_title": "Onbekende notificatie ontvangen van de server"
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,5 +283,31 @@
|
||||||
"account_basics_phone_numbers_dialog_verify_button_call": "Ligar pra mim",
|
"account_basics_phone_numbers_dialog_verify_button_call": "Ligar pra mim",
|
||||||
"publish_dialog_call_item": "Ligue para o número de telefone {{number}}",
|
"publish_dialog_call_item": "Ligue para o número de telefone {{number}}",
|
||||||
"account_usage_emails_title": "Emails enviados",
|
"account_usage_emails_title": "Emails enviados",
|
||||||
"account_basics_phone_numbers_dialog_channel_sms": "SMS"
|
"account_basics_phone_numbers_dialog_channel_sms": "SMS",
|
||||||
|
"account_delete_title": "Deletar conta",
|
||||||
|
"account_delete_dialog_label": "Senha",
|
||||||
|
"account_upgrade_dialog_interval_yearly": "Anual",
|
||||||
|
"account_upgrade_dialog_title": "Alterar nível da conta",
|
||||||
|
"alert_notification_ios_install_required_description": "Clique no ícone Compartilhar e adicione a tela inicial para ativar notificações no iOS",
|
||||||
|
"account_delete_dialog_billing_warning": "Excluir sua conta também cancela imediatamente sua assinatura de cobrança. Você não terá mais acesso ao painel de faturamento.",
|
||||||
|
"account_delete_dialog_description": "Isso excluirá permanentemente sua conta, incluindo todos os dados armazenados no servidor. Após a exclusão, seu nome de usuário ficará indisponível por 7 dias. Se você realmente deseja prosseguir, confirme sua senha na caixa abaixo.",
|
||||||
|
"account_upgrade_dialog_proration_info": "<strong>Prorrogação</strong>: Ao atualizar entre planos pagos, a diferença de preço será <strong>cobrada imediatamente</strong>. Ao fazer downgrade para um nível inferior, o saldo será usado para pagar futuras cobranças.",
|
||||||
|
"action_bar_mute_notifications": "Mutar notificações",
|
||||||
|
"action_bar_unmute_notifications": "Desmutar notificações",
|
||||||
|
"alert_notification_permission_denied_title": "Notificações estão bloqueadas",
|
||||||
|
"alert_notification_permission_denied_description": "Por favor, reative elas no seu navegador",
|
||||||
|
"alert_notification_ios_install_required_title": "Requer instalação no iOS",
|
||||||
|
"notifications_actions_failed_notification": "Ação mal sucedida",
|
||||||
|
"publish_dialog_checkbox_markdown": "Formatar como Markdown",
|
||||||
|
"subscribe_dialog_subscribe_use_another_background_info": "Notificações de outros servidores não serão recebidas quando o web app não estiver aberto",
|
||||||
|
"account_usage_basis_ip_description": "As estatísticas e limites de uso desta conta são baseados no seu endereço IP, portanto, podem ser compartilhados com outros usuários. Os limites mostrados acima são aproximados com base nos limites de taxa existentes.",
|
||||||
|
"account_usage_cannot_create_portal_session": "Não foi possível abrir o portal de cobrança",
|
||||||
|
"account_delete_description": "Deletar conta permanentemente",
|
||||||
|
"account_delete_dialog_button_cancel": "Cancelar",
|
||||||
|
"account_delete_dialog_button_submit": "Deletar conta permanentemente",
|
||||||
|
"account_upgrade_dialog_interval_monthly": "Mensal",
|
||||||
|
"account_upgrade_dialog_interval_yearly_discount_save": "desconto de {{discount}}%",
|
||||||
|
"account_upgrade_dialog_interval_yearly_discount_save_up_to": "desconto de até {{discount}}%",
|
||||||
|
"account_upgrade_dialog_cancel_warning": "Isso <strong>cancelará sua assinatura</strong> e fará downgrade de sua conta em {{date}}. Nessa data, as reservas de tópicos, bem como as mensagens armazenadas em cache no servidor <strong>serão excluídas</strong>.",
|
||||||
|
"account_upgrade_dialog_reservations_warning_one": "O nível selecionada permite menos tópicos reservados do que a camada atual. Antes de alterar seu nível, <strong>exclua pelo menos uma reserva</strong>. Você pode remover reservas nas <Link>Configurações</Link>"
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"notifications_none_for_topic_description": "Чтобы отправить уведомление на данную тему, просто сделаете PUT или POST-запрос на URL-адрес этой темы.",
|
"notifications_none_for_topic_description": "Чтобы отправить уведомление на данную тему, просто сделаете PUT или POST-запрос на URL-адрес этой темы.",
|
||||||
"notifications_none_for_any_description": "Чтобы отправить уведомление на тему, просто сделаете PUT или POST-запрос на её URL-адрес. Вот пример с использованием одной из ваших тем.",
|
"notifications_none_for_any_description": "Чтобы отправить уведомление на тему, просто сделаете PUT или POST-запрос на её URL-адрес. Вот пример с использованием одной из ваших тем.",
|
||||||
"notifications_no_subscriptions_title": "Похоже, что у вас ещё нет подписок.",
|
"notifications_no_subscriptions_title": "Похоже, что у вас ещё нет подписок.",
|
||||||
"alert_notification_permission_required_description": "Разрешите браузеру показывать уведомления.",
|
"alert_notification_permission_required_description": "Предоставьте браузеру разрешение на отображение уведомлений на рабочем столе",
|
||||||
"notifications_no_subscriptions_description": "Нажмите на ссылку \"{{linktext}}\", чтобы создать или подписаться на тему. После этого Вы сможете отправлять сообщения используя PUT или POST-запросы и получать уведомления здесь.",
|
"notifications_no_subscriptions_description": "Нажмите на ссылку \"{{linktext}}\", чтобы создать или подписаться на тему. После этого Вы сможете отправлять сообщения используя PUT или POST-запросы и получать уведомления здесь.",
|
||||||
"notifications_example": "Пример",
|
"notifications_example": "Пример",
|
||||||
"notifications_more_details": "Для более подробной информации, посетите <websiteLink>наш сайт</websiteLink> или <docsLink>документацию</docsLink>.",
|
"notifications_more_details": "Для более подробной информации, посетите <websiteLink>наш сайт</websiteLink> или <docsLink>документацию</docsLink>.",
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
"publish_dialog_email_label": "Электронная почта",
|
"publish_dialog_email_label": "Электронная почта",
|
||||||
"message_bar_error_publishing": "Ошибка публикации уведомления",
|
"message_bar_error_publishing": "Ошибка публикации уведомления",
|
||||||
"alert_not_supported_title": "Уведомления не поддерживаются",
|
"alert_not_supported_title": "Уведомления не поддерживаются",
|
||||||
"alert_not_supported_description": "Уведомления не поддерживаются вашим браузером.",
|
"alert_not_supported_description": "Уведомления не поддерживаются в вашем браузере",
|
||||||
"notifications_copied_to_clipboard": "Скопировано в буфер обмена",
|
"notifications_copied_to_clipboard": "Скопировано в буфер обмена",
|
||||||
"notifications_attachment_open_button": "Открыть вложение",
|
"notifications_attachment_open_button": "Открыть вложение",
|
||||||
"notifications_none_for_topic_title": "Вы ещё не получали уведомления для этой темы.",
|
"notifications_none_for_topic_title": "Вы ещё не получали уведомления для этой темы.",
|
||||||
|
@ -254,17 +254,17 @@
|
||||||
"action_bar_reservation_limit_reached": "Лимит исчерпан",
|
"action_bar_reservation_limit_reached": "Лимит исчерпан",
|
||||||
"action_bar_toggle_mute": "Заглушить/разрешить уведомления",
|
"action_bar_toggle_mute": "Заглушить/разрешить уведомления",
|
||||||
"nav_button_account": "Учетная запись",
|
"nav_button_account": "Учетная запись",
|
||||||
"nav_upgrade_banner_label": "Подпишитесь на ntfy Pro",
|
"nav_upgrade_banner_label": "Купить подписку ntfy Pro",
|
||||||
"message_bar_show_dialog": "Открыть диалог публикации",
|
"message_bar_show_dialog": "Открыть диалог публикации",
|
||||||
"notifications_list": "Список уведомлений",
|
"notifications_list": "Список уведомлений",
|
||||||
"notifications_list_item": "Уведомление",
|
"notifications_list_item": "Уведомление",
|
||||||
"notifications_mark_read": "Пометить как прочтенное",
|
"notifications_mark_read": "Пометить как прочитанное",
|
||||||
"notifications_priority_x": "Приоритет {{priority}}",
|
"notifications_priority_x": "Приоритет {{priority}}",
|
||||||
"notifications_attachment_image": "Приложенное изображение",
|
"notifications_attachment_image": "Приложенное изображение",
|
||||||
"notifications_attachment_file_audio": "звуковой файл",
|
"notifications_attachment_file_audio": "звуковой файл",
|
||||||
"notifications_attachment_file_video": "видео файл",
|
"notifications_attachment_file_video": "видео файл",
|
||||||
"notifications_attachment_file_image": "графический файл",
|
"notifications_attachment_file_image": "графический файл",
|
||||||
"notifications_attachment_file_app": "исполняемый файл Android",
|
"notifications_attachment_file_app": "Исполняемый файл Android",
|
||||||
"notifications_attachment_file_document": "другой тип файла",
|
"notifications_attachment_file_document": "другой тип файла",
|
||||||
"notifications_actions_not_supported": "Действие не поддерживается в веб-приложении",
|
"notifications_actions_not_supported": "Действие не поддерживается в веб-приложении",
|
||||||
"display_name_dialog_title": "Изменить псевдоним",
|
"display_name_dialog_title": "Изменить псевдоним",
|
||||||
|
@ -334,7 +334,7 @@
|
||||||
"alert_not_supported_context_description": "Уведомления поддерживаются только по протоколу HTTPS. Это ограничение <mdnLink>Notifications API</mdnLink>.",
|
"alert_not_supported_context_description": "Уведомления поддерживаются только по протоколу HTTPS. Это ограничение <mdnLink>Notifications API</mdnLink>.",
|
||||||
"notifications_delete": "Удалить",
|
"notifications_delete": "Удалить",
|
||||||
"notifications_new_indicator": "Новое уведомление",
|
"notifications_new_indicator": "Новое уведомление",
|
||||||
"notifications_actions_http_request_title": "Сделать HTTP {{method}}-запрос на {{url}}",
|
"notifications_actions_http_request_title": "Отправить HTTP {{method}}-запрос на {{url}}",
|
||||||
"display_name_dialog_placeholder": "Псевдоним",
|
"display_name_dialog_placeholder": "Псевдоним",
|
||||||
"account_basics_password_dialog_new_password_label": "Новый пароль",
|
"account_basics_password_dialog_new_password_label": "Новый пароль",
|
||||||
"account_basics_password_dialog_confirm_password_label": "Подтвердите пароль",
|
"account_basics_password_dialog_confirm_password_label": "Подтвердите пароль",
|
||||||
|
@ -380,5 +380,28 @@
|
||||||
"account_basics_phone_numbers_dialog_code_label": "Проверочный код",
|
"account_basics_phone_numbers_dialog_code_label": "Проверочный код",
|
||||||
"account_basics_phone_numbers_dialog_verify_button_call": "Позвонить мне",
|
"account_basics_phone_numbers_dialog_verify_button_call": "Позвонить мне",
|
||||||
"publish_dialog_call_item": "Вызов телефонного номера {{number}}",
|
"publish_dialog_call_item": "Вызов телефонного номера {{number}}",
|
||||||
"account_basics_phone_numbers_dialog_channel_sms": "SMS"
|
"account_basics_phone_numbers_dialog_channel_sms": "SMS",
|
||||||
|
"action_bar_mute_notifications": "Заглушить уведомления",
|
||||||
|
"action_bar_unmute_notifications": "Разрешить уведомления",
|
||||||
|
"alert_notification_permission_denied_title": "Уведомления заблокированы",
|
||||||
|
"alert_notification_permission_denied_description": "Пожалуйста, разрешите их в своём браузере",
|
||||||
|
"alert_notification_ios_install_required_title": "iOS требует установку",
|
||||||
|
"alert_notification_ios_install_required_description": "Нажмите на значок \"Поделиться\" и \"Добавить на главный экран\", чтобы включить уведомления на iOS",
|
||||||
|
"error_boundary_button_reload_ntfy": "Перезагрузить ntfy",
|
||||||
|
"web_push_subscription_expiring_title": "Уведомления будут приостановлены",
|
||||||
|
"web_push_subscription_expiring_body": "Откройте ntfy, чтобы продолжать получать уведомления",
|
||||||
|
"web_push_unknown_notification_title": "Получено неизвестное уведомление от сервера",
|
||||||
|
"web_push_unknown_notification_body": "Вам может потребоваться обновить ntfy, для этого откройте веб-приложение",
|
||||||
|
"prefs_notifications_web_push_title": "Фоновые уведомления",
|
||||||
|
"prefs_notifications_web_push_enabled_description": "Уведомления приходят даже когда веб-приложение не запущено (через Web Push)",
|
||||||
|
"prefs_notifications_web_push_disabled_description": "Уведомления приходят, когда веб-приложение запущено (через WebSocket)",
|
||||||
|
"prefs_appearance_theme_title": "Тема",
|
||||||
|
"prefs_notifications_web_push_enabled": "Включено для {{server}}",
|
||||||
|
"prefs_notifications_web_push_disabled": "Выключено",
|
||||||
|
"notifications_actions_failed_notification": "Неудачное действие",
|
||||||
|
"publish_dialog_checkbox_markdown": "Форматировать как Markdown",
|
||||||
|
"subscribe_dialog_subscribe_use_another_background_info": "Уведомления с других серверов не будут получены, когда веб-приложение не открыто",
|
||||||
|
"prefs_appearance_theme_system": "Системный (по умолчанию)",
|
||||||
|
"prefs_appearance_theme_dark": "Ночной режим",
|
||||||
|
"prefs_appearance_theme_light": "Дневной режим"
|
||||||
}
|
}
|
||||||
|
|
|
@ -380,5 +380,12 @@
|
||||||
"account_basics_phone_numbers_dialog_channel_sms": "SMS",
|
"account_basics_phone_numbers_dialog_channel_sms": "SMS",
|
||||||
"account_upgrade_dialog_tier_features_calls_other": "{{calls}} dagliga telefonsamtal",
|
"account_upgrade_dialog_tier_features_calls_other": "{{calls}} dagliga telefonsamtal",
|
||||||
"account_upgrade_dialog_tier_features_no_calls": "Inga telefonsamtal",
|
"account_upgrade_dialog_tier_features_no_calls": "Inga telefonsamtal",
|
||||||
"account_upgrade_dialog_tier_features_calls_one": "{{calls}} dagliga telefonsamtal"
|
"account_upgrade_dialog_tier_features_calls_one": "{{calls}} dagliga telefonsamtal",
|
||||||
|
"action_bar_mute_notifications": "Stäng av aviseringar",
|
||||||
|
"action_bar_unmute_notifications": "Slå på aviseringar",
|
||||||
|
"alert_notification_permission_denied_description": "Vänligen aktivera dem i din weblsäare",
|
||||||
|
"alert_notification_ios_install_required_title": "iOS installation krävs",
|
||||||
|
"notifications_actions_failed_notification": "Misslyckad åtgärd",
|
||||||
|
"alert_notification_permission_denied_title": "Notifieringar är blockerade",
|
||||||
|
"alert_notification_ios_install_required_description": "Klicka på delaikonen och Lägg till på hemskärmen för att aktivera notifieringarna i iOS"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue