-
+
{firstVerifiedField ? (
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 5809c94000..30d7105184 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -85,6 +85,7 @@
"alert.unexpected.message": "لقد طرأ خطأ غير متوقّع.",
"alert.unexpected.title": "المعذرة!",
"alt_text_badge.title": "نص بديل",
+ "alt_text_modal.cancel": "إلغاء",
"announcement.announcement": "إعلان",
"annual_report.summary.archetype.booster": "The cool-hunter",
"attachments_list.unprocessed": "(غير معالَج)",
@@ -120,13 +121,16 @@
"column.blocks": "المُستَخدِمون المَحظورون",
"column.bookmarks": "الفواصل المرجعية",
"column.community": "الخيط الزمني المحلي",
+ "column.create_list": "إنشاء القائمة",
"column.direct": "الإشارات الخاصة",
"column.directory": "تَصَفُّحُ المَلفات الشخصية",
"column.domain_blocks": "النطاقات المحظورة",
+ "column.edit_list": "تعديل القائمة",
"column.favourites": "المفضلة",
"column.firehose": "الموجزات الحية",
"column.follow_requests": "طلبات المتابعة",
"column.home": "الرئيسية",
+ "column.list_members": "إدارة أعضاء القائمة",
"column.lists": "القوائم",
"column.mutes": "المُستَخدِمون المَكتومون",
"column.notifications": "الإشعارات",
@@ -139,6 +143,7 @@
"column_header.pin": "تثبيت",
"column_header.show_settings": "إظهار الإعدادات",
"column_header.unpin": "إلغاء التَّثبيت",
+ "column_search.cancel": "إلغاء",
"column_subheading.settings": "الإعدادات",
"community.column_settings.local_only": "المحلي فقط",
"community.column_settings.media_only": "الوسائط فقط",
@@ -157,6 +162,7 @@
"compose_form.poll.duration": "مُدَّة اِستطلاع الرأي",
"compose_form.poll.multiple": "متعدد الخيارات",
"compose_form.poll.option_placeholder": "الخيار {number}",
+ "compose_form.poll.single": "خيار واحد",
"compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة",
"compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط",
"compose_form.poll.type": "الطراز",
@@ -195,6 +201,7 @@
"confirmations.unfollow.title": "إلغاء متابعة المستخدم؟",
"content_warning.hide": "إخفاء المنشور",
"content_warning.show": "إظهار على أي حال",
+ "content_warning.show_more": "إظهار المزيد",
"conversation.delete": "احذف المحادثة",
"conversation.mark_as_read": "اعتبرها كمقروءة",
"conversation.open": "اعرض المحادثة",
@@ -325,6 +332,7 @@
"footer.privacy_policy": "سياسة الخصوصية",
"footer.source_code": "الاطلاع على الشفرة المصدرية",
"footer.status": "الحالة",
+ "footer.terms_of_service": "شروط الخدمة",
"generic.saved": "تم الحفظ",
"getting_started.heading": "استعدّ للبدء",
"hashtag.column_header.tag_mode.all": "و {additional}",
@@ -358,6 +366,7 @@
"ignore_notifications_modal.ignore": "تجاهل الإشعارات",
"ignore_notifications_modal.limited_accounts_title": "تجاهل الإشعارات من الحسابات التي هي تحت الإشراف؟",
"ignore_notifications_modal.new_accounts_title": "تجاهل الإشعارات الصادرة من الحسابات الجديدة؟",
+ "interaction_modal.no_account_yet": "لا تملك حساباً بعد؟",
"interaction_modal.on_another_server": "على خادم مختلف",
"interaction_modal.on_this_server": "على هذا الخادم",
"interaction_modal.title.favourite": "إضافة منشور {name} إلى المفضلة",
@@ -408,11 +417,21 @@
"limited_account_hint.title": "تم إخفاء هذا الملف الشخصي من قبل مشرفي {domain}.",
"link_preview.author": "مِن {name}",
"link_preview.more_from_author": "المزيد من {name}",
+ "lists.add_member": "إضافة",
+ "lists.add_to_list": "إضافة إلى القائمة",
+ "lists.add_to_lists": "إضافة {name} إلى القوائم",
+ "lists.create": "إنشاء",
+ "lists.create_list": "إنشاء قائمة",
"lists.delete": "احذف القائمة",
+ "lists.done": "تمّ",
"lists.edit": "عدّل القائمة",
+ "lists.exclusive": "إخفاء الأعضاء في الصفحة الرئيسية",
+ "lists.remove_member": "إزالة",
"lists.replies_policy.followed": "أي مستخدم متابَع",
"lists.replies_policy.list": "أعضاء القائمة",
"lists.replies_policy.none": "لا أحد",
+ "lists.save": "حفظ",
+ "lists.search": "بحث",
"load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}",
"loading_indicator.label": "جاري التحميل…",
"media_gallery.hide": "إخفاء",
@@ -464,7 +483,7 @@
"notification.label.private_reply": "رد خاص",
"notification.label.reply": "ردّ",
"notification.mention": "إشارة",
- "notification.mentioned_you": "{name} mentioned you",
+ "notification.mentioned_you": "أشارَ إليك {name}",
"notification.moderation-warning.learn_more": "اعرف المزيد",
"notification.moderation_warning": "لقد تلقيت تحذيرًا بالإشراف",
"notification.moderation_warning.action_delete_statuses": "تم حذف بعض من منشوراتك.",
@@ -740,6 +759,7 @@
"subscribed_languages.target": "تغيير اللغات المشتركة لـ {target}",
"tabs_bar.home": "الرئيسية",
"tabs_bar.notifications": "الإشعارات",
+ "terms_of_service.title": "شروط الخدمة",
"time_remaining.days": "{number, plural, one {# يوم} other {# أيام}} متبقية",
"time_remaining.hours": "{number, plural, one {# ساعة} other {# ساعات}} متبقية",
"time_remaining.minutes": "{number, plural, one {# دقيقة} other {# دقائق}} متبقية",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 74b0c3531b..cdcbddf55a 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Възникна неочаквана грешка.",
"alert.unexpected.title": "Опаа!",
"alt_text_badge.title": "Алтернативен текст",
+ "alt_text_modal.add_alt_text": "Добавяне на алтернативен текст",
+ "alt_text_modal.add_text_from_image": "Добавяне на текст от образ",
+ "alt_text_modal.cancel": "Отказ",
+ "alt_text_modal.change_thumbnail": "Промяна на миниобраза",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Опишете това за хора със слухови увреждания…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Опишете това за хора със зрителни увреждания…",
+ "alt_text_modal.done": "Готово",
"announcement.announcement": "Оповестяване",
"annual_report.summary.archetype.booster": "Якият подсилвател",
"annual_report.summary.archetype.lurker": "Дебнещото",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Пренебрегвате ли известията от хора, които не са ви последвали?",
"ignore_notifications_modal.not_following_title": "Пренебрегвате ли известията от хора, които не сте последвали?",
"ignore_notifications_modal.private_mentions_title": "Пренебрегвате ли известия от непоискани лични споменавания?",
+ "info_button.label": "Помощ",
+ "info_button.what_is_alt_text": "
Какво е алтернативен текст?
Алтернативният текст осигурява описания на изображение за хора със зрителни увреждания, връзки с ниска честотна лента или търсещите допълнителен контекст.
Може да подобрите достъпността и разбираемостта за всеки, пишейки ясен, кратък и обективен алтернативен текст.
Уловете важните елементи
Обобщете текста в образите
Употребявайте правилна структура на изречението
Избягвайте излишна информация
Съсредоточете се върху тенденциите и ключови констатации в сложни онагледявания (като диаграми и карти)
",
"interaction_modal.action.favourite": "Трябва да направите любимо от акаунта си, за да продължите.",
"interaction_modal.action.follow": "Трябва да последвате от акаунта си, за да продължите.",
"interaction_modal.action.reblog": "Трябва да разпространите нечий блог от акаунта си, за да продължите.",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index bd264ece96..9ce2612b77 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -90,8 +90,8 @@
"alt_text_modal.add_text_from_image": "Afegiu text d'una imatge",
"alt_text_modal.cancel": "Cancel·la",
"alt_text_modal.change_thumbnail": "Canvia la miniatura",
- "alt_text_modal.describe_for_people_with_hearing_impairments": "Descriu això per a persones amb problemes d'audició…",
- "alt_text_modal.describe_for_people_with_visual_impairments": "Descriu això per a persones amb problemes visuals…",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Descriviu això per a persones amb problemes d'audició…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Descriviu això per a persones amb problemes visuals…",
"alt_text_modal.done": "Fet",
"announcement.announcement": "Anunci",
"annual_report.summary.archetype.booster": "Sempre a la moda",
@@ -414,6 +414,7 @@
"ignore_notifications_modal.not_followers_title": "Voleu ignorar les notificacions de qui no us segueix?",
"ignore_notifications_modal.not_following_title": "Voleu ignorar les notificacions de qui no seguiu?",
"ignore_notifications_modal.private_mentions_title": "Voleu ignorar les notificacions de mencions privades no sol·licitades?",
+ "info_button.label": "Ajuda",
"interaction_modal.action.favourite": "Per a continuar heu d'afavorir des del vostre compte.",
"interaction_modal.action.follow": "Per a continuar heu de seguir des del vostre compte.",
"interaction_modal.action.reblog": "Per a continuar heu d'impulsar des del vostre compte.",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 43539d3665..c40e230bfc 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignorér notifikationer fra folk, som ikke er følgere?",
"ignore_notifications_modal.not_following_title": "Ignorér notifikationer fra folk, man ikke følger?",
"ignore_notifications_modal.private_mentions_title": "Ignorér notifikationer fra uopfordrede Private omtaler?",
+ "info_button.label": "Hjælp",
+ "info_button.what_is_alt_text": "
Hvad er alt-tekst?
Alt-tekst leverer billedbeskrivelser til folk med synsnedsættelser, lav båndbredde-forbindelser eller med ønske om ekstra kontekst.
Tilgængelighed og forståelse kan forbedres for alle ved at skrive klar, kortfattet og objektiv alt-tekst.
Fang vigtige elementer
Opsummér tekst i billeder
Brug almindelig sætningsstruktur
Undgå overflødig information
Fokusér på tendenser og centrale resultater i kompleks grafik (såsom diagrammer eller kort)
",
"interaction_modal.action.favourite": "For at fortsætte, skal man vælge Gør til favorit fra sin konto.",
"interaction_modal.action.follow": "For at fortsætte, skal man vælge Følg fra sin konto.",
"interaction_modal.action.reblog": "For at fortsætte, skal man vælge Genblog fra sin konto.",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 7a7d5d614c..1032271fc9 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -4,7 +4,7 @@
"about.disclaimer": "Mastodon ist eine freie, quelloffene Software und eine Marke der Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Grund unbekannt",
"about.domain_blocks.preamble": "Mastodon erlaubt es dir grundsätzlich, alle Inhalte von allen Nutzer*innen auf allen Servern im Fediverse zu sehen und mit ihnen zu interagieren. Für diesen Server gibt es aber ein paar Ausnahmen.",
- "about.domain_blocks.silenced.explanation": "Alle Inhalte und Profile dieses Servers werden zunächst nicht angezeigt. Du kannst die Profile und Inhalte aber dennoch sehen, wenn du explizit nach diesen suchst oder diesen folgst.",
+ "about.domain_blocks.silenced.explanation": "Standardmäßig werden von diesem Server keine Inhalte oder Profile angezeigt. Du kannst die Profile und Inhalte aber dennoch sehen, wenn du explizit nach diesen suchst oder diesen folgst.",
"about.domain_blocks.silenced.title": "Stummgeschaltet",
"about.domain_blocks.suspended.explanation": "Es werden keine Daten von diesem Server verarbeitet, gespeichert oder ausgetauscht, sodass eine Interaktion oder Kommunikation mit Nutzer*innen dieses Servers nicht möglich ist.",
"about.domain_blocks.suspended.title": "Gesperrt",
@@ -42,8 +42,8 @@
"account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden",
"account.in_memoriam": "Zum Andenken.",
"account.joined_short": "Mitglied seit",
- "account.languages": "Ausgewählte Sprachen ändern",
- "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt",
+ "account.languages": "Sprache ändern.",
+ "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} verifiziert",
"account.locked_info": "Die Privatsphäre dieses Kontos wurde auf „geschützt“ gesetzt. Die Person bestimmt manuell, wer ihrem Profil folgen darf.",
"account.media": "Medien",
"account.mention": "@{name} erwähnen",
@@ -63,7 +63,7 @@
"account.share": "Profil von @{name} teilen",
"account.show_reblogs": "Geteilte Beiträge von @{name} anzeigen",
"account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}",
- "account.unblock": "Blockierung von @{name} aufheben",
+ "account.unblock": "{name} nicht mehr blockieren",
"account.unblock_domain": "Blockierung von {domain} aufheben",
"account.unblock_short": "Blockierung aufheben",
"account.unendorse": "Im Profil nicht mehr empfehlen",
@@ -72,12 +72,12 @@
"account.unmute_notifications_short": "Stummschaltung der Benachrichtigungen aufheben",
"account.unmute_short": "Stummschaltung aufheben",
"account_note.placeholder": "Klicken, um Notiz hinzuzufügen",
- "admin.dashboard.daily_retention": "Verweildauer der Benutzer*innen pro Tag nach der Registrierung",
- "admin.dashboard.monthly_retention": "Verweildauer der Benutzer*innen pro Monat nach der Registrierung",
+ "admin.dashboard.daily_retention": "Verweildauer der Nutzer*innen pro Tag nach der Registrierung",
+ "admin.dashboard.monthly_retention": "Verweildauer der Nutzer*innen pro Monat nach der Registrierung",
"admin.dashboard.retention.average": "Durchschnitt",
"admin.dashboard.retention.cohort": "Monat der Registrierung",
"admin.dashboard.retention.cohort_size": "Neue Konten",
- "admin.impact_report.instance_accounts": "Kontenprofile, die dadurch gelöscht würden",
+ "admin.impact_report.instance_accounts": "Profilkonten, die dadurch gelöscht würden",
"admin.impact_report.instance_followers": "Follower, die unsere Nutzer*innen verlieren würden",
"admin.impact_report.instance_follows": "Follower, die deren Nutzer*innen verlieren würden",
"admin.impact_report.title": "Zusammenfassung der Auswirkung",
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Benachrichtigungen von Profilen ignorieren, die dir nicht folgen?",
"ignore_notifications_modal.not_following_title": "Benachrichtigungen von Profilen ignorieren, denen du nicht folgst?",
"ignore_notifications_modal.private_mentions_title": "Benachrichtigungen von unerwünschten privaten Erwähnungen ignorieren?",
+ "info_button.label": "Hilfe",
+ "info_button.what_is_alt_text": "
Was ist Alt-Text?
Alt-Text bietet Bildbeschreibungen für Personen mit einer Sehschwäche, einer schlechten Internetverbindung und für alle, die zusätzlichen Kontext möchten.
Du kannst die Zugänglichkeit und die Verständlichkeit für alle verbessern, indem du eine klare, genaue und objektive Bildbeschreibung hinzufügst.
Erfasse wichtige Elemente
Fasse Text in Bildern zusammen
Verwende einen korrekten Satzbau
Vermeide unwichtige Informationen
Konzentriere dich bei komplexen Darstellungen (z. B. Diagramme oder Karten) auf Trends und wichtige Erkenntnisse
",
"interaction_modal.action.favourite": "Du musst von deinem Konto aus favorisieren, um fortzufahren.",
"interaction_modal.action.follow": "Du musst von deinem Konto aus folgen, um fortzufahren.",
"interaction_modal.action.reblog": "Du musst von deinem Konto aus teilen, um fortzufahren.",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index dbbb2e9fec..e45f973614 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.",
"alert.unexpected.title": "Ουπς!",
"alt_text_badge.title": "Εναλλακτικό κείμενο",
+ "alt_text_modal.add_alt_text": "Προσθήκη εναλλακτικού κειμένου",
+ "alt_text_modal.add_text_from_image": "Προσθήκη κειμένου από εικόνα",
+ "alt_text_modal.cancel": "Ακύρωση",
+ "alt_text_modal.change_thumbnail": "Αλλαγή μικρογραφίας",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Περιέγραψε αυτό για άτομα με προβλήματα ακοής…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Περιέγραψε αυτό για άτομα με προβλήματα όρασης…",
+ "alt_text_modal.done": "Ολοκληρώθηκε",
"announcement.announcement": "Ανακοίνωση",
"annual_report.summary.archetype.booster": "Ο κυνηγός των φοβερών",
"annual_report.summary.archetype.lurker": "Ο διακριτικός",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Αγνόηση ειδοποιήσεων από άτομα που δε σας ακολουθούν;",
"ignore_notifications_modal.not_following_title": "Αγνόηση ειδοποιήσεων από άτομα που δεν ακολουθείς;",
"ignore_notifications_modal.private_mentions_title": "Αγνόηση ειδοποιήσεων από μη ζητηθείσες ιδιωτικές αναφορές;",
+ "info_button.label": "Βοήθεια",
+ "info_button.what_is_alt_text": "Το εναλλακτικό κείμενο παρέχει περιγραφές εικόνας για άτομα με προβλήματα όρασης, διαδικτυακές συνδέσεις χαμηλής ταχύτητας ή για άτομα που αναζητούν επιπλέον περιεχόμενο.\\n\\nΜπορείς να βελτιώσεις την προσβασιμότητα και την κατανόηση για όλους, γράφοντας σαφές, συνοπτικό και αντικειμενικό εναλλακτικό κείμενο.\\n\\n
Κατέγραψε σημαντικά στοιχεία
\\n
Συνόψισε το κείμενο στις εικόνες
\\n
Χρησιμοποίησε δομή κανονικής πρότασης
\\n
Απέφυγε περιττές πληροφορίες
\\n
Εστίασε στις τάσεις και τα βασικά ευρήματα σε σύνθετα οπτικά στοιχεία (όπως διαγράμματα ή χάρτες)
",
"interaction_modal.action.favourite": "Για να συνεχίσεις, θα πρέπει να αγαπήσεις από τον λογαριασμό σου.",
"interaction_modal.action.follow": "Για να συνεχίσεις, θα πρέπει να ακολουθήσεις από τον λογαριασμό σου.",
"interaction_modal.action.reblog": "Για να συνεχίσεις, θα πρέπει να αναδημοσιεύσεις από τον λογαριασμό σου.",
@@ -457,6 +466,7 @@
"keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από το CW",
"keyboard_shortcuts.toggle_sensitivity": "Εμφάνιση/απόκρυψη πολυμέσων",
"keyboard_shortcuts.toot": "Δημιουργία νέας ανάρτησης",
+ "keyboard_shortcuts.translate": "να μεταφράσει μια δημοσίευση",
"keyboard_shortcuts.unfocus": "Αποεστίαση του πεδίου σύνθεσης/αναζήτησης",
"keyboard_shortcuts.up": "Μετακίνηση προς τα πάνω στη λίστα",
"lightbox.close": "Κλείσιμο",
@@ -836,6 +846,7 @@
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
"status.redraft": "Σβήσε & ξαναγράψε",
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
+ "status.remove_favourite": "Κατάργηση από τα αγαπημένα",
"status.replied_in_thread": "Απαντήθηκε σε νήμα",
"status.replied_to": "Απάντησε στον {name}",
"status.reply": "Απάντησε",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 5983dc3527..70a194e1fb 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
"alt_text_badge.title": "Alt text",
+ "alt_text_modal.add_alt_text": "Add alt text",
+ "alt_text_modal.add_text_from_image": "Add text from image",
+ "alt_text_modal.cancel": "Cancel",
+ "alt_text_modal.change_thumbnail": "Change thumbnail",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Describe this for people with hearing impairments…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Describe this for people with visual impairments…",
+ "alt_text_modal.done": "Done",
"announcement.announcement": "Announcement",
"annual_report.summary.archetype.booster": "The cool-hunter",
"annual_report.summary.archetype.lurker": "The lurker",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignore notifications from people not following you?",
"ignore_notifications_modal.not_following_title": "Ignore notifications from people you don't follow?",
"ignore_notifications_modal.private_mentions_title": "Ignore notifications from unsolicited Private Mentions?",
+ "info_button.label": "Help",
+ "info_button.what_is_alt_text": "
What is alt text?
Alt text provides image descriptions for people with vision impairments, low-bandwidth connections, or those seeking extra context.
You can improve accessibility and understanding for everyone by writing clear, concise, and objective alt text.
Capture important elements
Summarise text in images
Use regular sentence structure
Avoid redundant information
Focus on trends and key findings in complex visuals (like diagrams or maps)
",
"interaction_modal.action.favourite": "To continue, you need to favourite from your account.",
"interaction_modal.action.follow": "To continue, you need to follow from your account.",
"interaction_modal.action.reblog": "To continue, you need to reblog from your account.",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index ac05c0f53e..a2dedd22d5 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignore notifications from people not following you?",
"ignore_notifications_modal.not_following_title": "Ignore notifications from people you don't follow?",
"ignore_notifications_modal.private_mentions_title": "Ignore notifications from unsolicited Private Mentions?",
+ "info_button.label": "Help",
+ "info_button.what_is_alt_text": "
What is alt text?
Alt text provides image descriptions for people with vision impairments, low-bandwidth connections, or those seeking extra context.
You can improve accessibility and understanding for everyone by writing clear, concise, and objective alt text.
Capture important elements
Summarize text in images
Use regular sentence structure
Avoid redundant information
Focus on trends and key findings in complex visuals (like diagrams or maps)
",
"interaction_modal.action.favourite": "To continue, you need to favorite from your account.",
"interaction_modal.action.follow": "To continue, you need to follow from your account.",
"interaction_modal.action.reblog": "To continue, you need to reblog from your account.",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 9a38b6fc61..4679623b02 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ĉu ignori sciigojn de homoj, kiuj ne sekvas vin?",
"ignore_notifications_modal.not_following_title": "Ĉu ignori sciigojn de homoj, kiujn vi ne sekvas?",
"ignore_notifications_modal.private_mentions_title": "Ĉu ignori sciigojn de nepetitaj privataj mencioj?",
+ "info_button.label": "Helpo",
+ "info_button.what_is_alt_text": "
Kio estas la alternativa teksto?
La alternativa teksto ofertas priskribojn de la bildoj por individuoj kun vidaj malfacilaĵoj, konektoj kun malalta larĝa bando aŭ kiuj serĉas plian kuntekston.
Vi povas plibonigi alireblecon kaj komprenon por ĉiuj per skribado de klaraj, koncizaj, kaj objektivaj alternativaj tekstoj.
Kaptu gravajn elementojn.
Resumu tekston en bildoj.
Uzu regulan frazstrukturon.
Evitu redundan informon.
Fokusu sur tendencoj kaj ĉefaj trovoj en kompleksaj visualoj (kiel diagramoj aŭ mapoj).
",
"interaction_modal.action.favourite": "Por daŭrigi, vi devas stelumi el via konto.",
"interaction_modal.action.follow": "Por daŭrigi, vi devas sekvi el via konto.",
"interaction_modal.action.reblog": "Por daŭrigi, vi devas diskonigi el via konto.",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index e56ca403d9..5bef46bd3e 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "¿Ignorar notificaciones de cuentas que no te siguen?",
"ignore_notifications_modal.not_following_title": "¿Ignorar notificaciones de cuentas a las que no seguís?",
"ignore_notifications_modal.private_mentions_title": "¿Ignorar notificaciones de menciones privadas no solicitadas?",
+ "info_button.label": "Ayuda",
+ "info_button.what_is_alt_text": "
¿Qué es el texto alternativo?
El texto alternativo proporciona descripciones de las imágenes para personas con dificultades visuales, conexiones con escaso ancho de banda o que buscan un contexto adicional.
Podés mejorar la accesibilidad y la comprensión para todos escribiendo un texto alternativo claro, conciso y objetivo.
Captura los elementos importantes.
Resumí el texto en imágenes.
Usá una estructura de frases normal.
Evitá la información redundante.
Focalizate en las tendencias y conclusiones clave de los elementos visuales complejos (como diagramas o mapas).
",
"interaction_modal.action.favourite": "Para continuar, tenés que marcar como favorito desde tu cuenta.",
"interaction_modal.action.follow": "Para continuar, tenés que seguir desde tu cuenta.",
"interaction_modal.action.reblog": "Para continuar, tenés que adherir desde tu cuenta.",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 428153e5b1..26f070139f 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "¿Ignorar notificaciones de personas que no te siguen?",
"ignore_notifications_modal.not_following_title": "¿Ignorar notificaciones de personas a las que no sigues?",
"ignore_notifications_modal.private_mentions_title": "¿Ignorar notificaciones de menciones privadas no solicitadas?",
+ "info_button.label": "Ayuda",
+ "info_button.what_is_alt_text": "
¿Qué es el texto alternativo?
El texto alternativo ofrece descripciones de las imágenes para individuos con dificultades visuales, conexiones de bajo ancho de banda o que buscan un contexto adicional.
Puedes mejorar la accesibilidad y la comprensión para todos redactando un texto alternativo claro, breve y objetivo.
Captura los elementos clave.
Resume el texto en imágenes.
Utiliza una estructura de oraciones estándar.
Evita la información repetitiva.
Enfócate en las tendencias y conclusiones principales de los elementos visuales complejos (como gráficos o mapas).
",
"interaction_modal.action.favourite": "Para continuar, debes marcar como favorito desde tu cuenta.",
"interaction_modal.action.follow": "Para continuar, debes seguir desde tu cuenta.",
"interaction_modal.action.reblog": "Para continuar, debes impulsar desde tu cuenta.",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index e014f96790..ba903ceaa7 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "¿Ignorar notificaciones de personas que no te siguen?",
"ignore_notifications_modal.not_following_title": "¿Ignorar notificaciones de personas a las que no sigues?",
"ignore_notifications_modal.private_mentions_title": "¿Ignorar notificaciones de menciones privadas no solicitadas?",
+ "info_button.label": "Ayuda",
+ "info_button.what_is_alt_text": "
¿Qué es el texto alternativo?
El texto alternativo proporciona descripciones de las imágenes para personas con problemas de visión, conexiones con poco ancho de banda o que buscan un contexto adicional.
Puedes mejorar la accesibilidad y la comprensión para todos escribiendo un texto alternativo claro, conciso y objetivo.
Captura los elementos importantes.
Resume el texto en imágenes.
Usa una estructura de frases normal.
Evita la información redundante.
Céntrate en las tendencias y conclusiones clave de los elementos visuales complejos (como diagramas o mapas).
",
"interaction_modal.action.favourite": "Para continuar, tienes que marcar como favorito desde tu cuenta.",
"interaction_modal.action.follow": "Para continuar, tienes que seguir desde tu cuenta.",
"interaction_modal.action.reblog": "Para continuar, tienes que impulsar desde tu cuenta.",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index de98e7a4f5..bd86e984aa 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Tekkis ootamatu viga.",
"alert.unexpected.title": "Oih!",
"alt_text_badge.title": "Alternatiivtekst",
+ "alt_text_modal.add_alt_text": "Lisa alt-tekst",
+ "alt_text_modal.add_text_from_image": "Lisa tekst pildilt",
+ "alt_text_modal.cancel": "Tühista",
+ "alt_text_modal.change_thumbnail": "Muuda pisipilti",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Kirjelda seda kuulmispuudega inimeste jaoks…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Kirjelda seda nägemispuudega inimeste jaoks…",
+ "alt_text_modal.done": "Valmis",
"announcement.announcement": "Teadaanne",
"annual_report.summary.archetype.booster": "Ägesisu küttija",
"annual_report.summary.archetype.lurker": "Hiilija",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignoreeri inimeste teavitusi, kes sind ei jälgi?",
"ignore_notifications_modal.not_following_title": "Ignoreeri inimeste teavitusi, keda sa ei jälgi?",
"ignore_notifications_modal.private_mentions_title": "Ignoreeri soovimatute eraviisiliste mainimiste teateid?",
+ "info_button.label": "Abi",
+ "info_button.what_is_alt_text": "
Mis on alt-tekst?
Alt-tekst pakub pildi kirjeldust nägemispuudega inimeste jaoks või neile, kel on aeglane internet või neile, kes otsivad lisaselgitust
Saad parandada ligipääsetavust ja mõistmist kõigi jaoks, kirjutades selge, lühida ja objektiivse alt-teksti.
Lisa tähtsad elemendid
Tee pildil olevast tekstist kokkuvõte
Kasuta reeglipärast lausestruktuuri
Väldi ebaolulist infot
Keskendu keerukate vaadete puhul (näiteks diagrammid ja kaardid) puhul trendidele ja põhiseostele
",
"interaction_modal.action.favourite": "Jätkamiseks pead oma konto alt lemmikuks märkima.",
"interaction_modal.action.follow": "Jätkamiseks pead oma konto alt lemmikuks märkima.",
"interaction_modal.action.reblog": "Jätkamiseks pead jagama oma konto alt.",
@@ -457,6 +466,7 @@
"keyboard_shortcuts.toggle_hidden": "Näita/peida teksti hoiatuse taga",
"keyboard_shortcuts.toggle_sensitivity": "Näita/peida meediat",
"keyboard_shortcuts.toot": "Alusta uut postitust",
+ "keyboard_shortcuts.translate": "postituse tõlkimiseks",
"keyboard_shortcuts.unfocus": "Fookus tekstialalt/otsingult ära",
"keyboard_shortcuts.up": "Liigu loetelus üles",
"lightbox.close": "Sulge",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index f201baa289..1341bb17f3 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -86,12 +86,18 @@
"alert.unexpected.message": "Ustekabeko errore bat gertatu da.",
"alert.unexpected.title": "Ene!",
"alt_text_badge.title": "Testu alternatiboa",
+ "alt_text_modal.add_alt_text": "Gehitu ordezko testua",
+ "alt_text_modal.add_text_from_image": "Gehitu testua iruditik",
+ "alt_text_modal.cancel": "Utzi",
+ "alt_text_modal.change_thumbnail": "Aldatu koadro txikia",
+ "alt_text_modal.done": "Egina",
"announcement.announcement": "Iragarpena",
"annual_report.summary.followers.followers": "jarraitzaileak",
"annual_report.summary.followers.total": "{count} guztira",
"annual_report.summary.highlighted_post.by_favourites": "egindako bidalketa gogokoena",
"annual_report.summary.highlighted_post.by_reblogs": "egindako bidalketa zabalduena",
"annual_report.summary.highlighted_post.by_replies": "erantzun gehien izan dituen bidalketa",
+ "annual_report.summary.highlighted_post.possessive": "{name}-(r)ena",
"annual_report.summary.most_used_app.most_used_app": "app erabiliena",
"annual_report.summary.most_used_hashtag.most_used_hashtag": "traola erabiliena",
"annual_report.summary.most_used_hashtag.none": "Bat ere ez",
@@ -120,6 +126,7 @@
"bundle_column_error.routing.body": "Eskatutako orria ezin izan da aurkitu. Ziur helbide-barrako URLa zuzena dela?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Itxi",
+ "bundle_modal_error.message": "Zerbait okerra gertatu da pantaila hau kargatzean.",
"bundle_modal_error.retry": "Saiatu berriro",
"closed_registrations.other_server_instructions": "Mastodon deszentralizatua denez, beste kontu bat sortu dezakezu beste zerbitzari batean eta honekin komunikatu.",
"closed_registrations_modal.description": "Une honetan ezin da konturik sortu {domain} zerbitzarian, baina kontuan izan Mastodon erabiltzeko ez duzula zertan konturik izan zehazki {domain} zerbitzarian.",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 576b1847c5..625acc01a9 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -101,7 +101,7 @@
"annual_report.summary.archetype.replier": "پاسخگو",
"annual_report.summary.followers.followers": "دنبال کننده",
"annual_report.summary.followers.total": "در مجموع {count}",
- "annual_report.summary.here_it_is": "بازبینی {year}تان:",
+ "annual_report.summary.here_it_is": "بازبینی {year} تان:",
"annual_report.summary.highlighted_post.by_favourites": "پرپسندترین فرسته",
"annual_report.summary.highlighted_post.by_reblogs": "پرتقویتترین فرسته",
"annual_report.summary.highlighted_post.by_replies": "پرپاسخترین فرسته",
@@ -175,7 +175,7 @@
"community.column_settings.media_only": "فقط رسانه",
"community.column_settings.remote_only": "تنها دوردست",
"compose.language.change": "تغییر زبان",
- "compose.language.search": "جستوجوی زبانها…",
+ "compose.language.search": "جستوجوی زبانها...",
"compose.published.body": "فرسته منتشر شد.",
"compose.published.open": "گشودن",
"compose.saved.body": "فرسته ذخیره شد.",
@@ -256,7 +256,7 @@
"domain_block_modal.they_cant_follow": "هیچکسی از این کارساز نمیتواند پیتان بگیرد.",
"domain_block_modal.they_wont_know": "نخواهند دانست که مسدود شدهاند.",
"domain_block_modal.title": "انسداد دامنه؟",
- "domain_block_modal.you_will_lose_num_followers": "تعداد {followersCount, plural,other {{followersCount}}} پیگیرنده و {followingCount, plural,other {{followingCount}}} شخص پیگرفته شده را از دست خواهید داد.",
+ "domain_block_modal.you_will_lose_num_followers": "شما {followersCount, plural, one {{followersCountDisplay} پیگیرنده} other {{followersCountDisplay} پیگیرنده}} و {followingCount, plural, one {{followingCountDisplay} فرد پیگرفتهشده} other {{followingCountDisplay} فرد پیگرفتهشده}} را از دست خواهید داد.",
"domain_block_modal.you_will_lose_relationships": "شما تمام پیگیرکنندگان و افرادی که از این کارساز پیگیری میکنید را از دست خواهید داد.",
"domain_block_modal.you_wont_see_posts": "فرستهها یا آگاهیها از کاربران روی این کارساز را نخواهید دید.",
"domain_pill.activitypub_lets_connect": "این به شما اجازه میدهد تا نه تنها در ماستودون، بلکه در برنامههای اجتماعی مختلف نیز با افراد ارتباط برقرار کرده و تعامل داشته باشید.",
@@ -304,7 +304,7 @@
"empty_column.follow_requests": "شما هنوز هیچ درخواست پیگیریای ندارید. هنگامی که چنین درخواستی بگیرید، اینجا نشان داده خواهد شد.",
"empty_column.followed_tags": "شما هیچ برچسبی را پینگرفتید. هنگامی که برچسبی را پیگیری کنید اینجا نمایان میشوند.",
"empty_column.hashtag": "هنوز هیچ چیزی در این برچسب نیست.",
- "empty_column.home": "خط زمانی خانگیتان خالی است! برای پر کردنش، افراد بیشتری را پی بگیرید. {suggestions}",
+ "empty_column.home": "خط زمانی خانگیتان خالی است! برای پر کردنش، افراد بیشتری را پی بگیرید.",
"empty_column.list": "هنوز چیزی در این سیاهه نیست. هنگامی که اعضایش فرستههای جدیدی بفرستند، اینجا ظاهر خواهند شد.",
"empty_column.mutes": "هنوز هیچ کاربری را خموش نکردهاید.",
"empty_column.notification_requests": "همه چیز تمیز است! هیچچیزی اینجا نیست. هنگامی که آگاهیهای جدیدی دریافت کنید، بسته به تنظیماتتان اینجا ظاهر خواهند شد.",
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "چشمپوشی از آگاهیهای افرادی که پیتان نمیگیرند؟",
"ignore_notifications_modal.not_following_title": "چشمپوشی از آگاهیهای افرادی که پیشان نمیگیرید؟",
"ignore_notifications_modal.private_mentions_title": "چشمپوشی از نامبریهای خصوصی ناخواسته؟",
+ "info_button.label": "راهنما",
+ "info_button.what_is_alt_text": "
متن جایگزین چیست؟
متن جایگزین توضیحات تصویری را برای افراد دارای اختلالات بینایی، اتصالات با پهنای باند کم یا کسانی که به دنبال زمینه اضافی هستند ارائه می دهد.
با نوشتن متن جایگزین واضح، مختصر و عینی می توانید دسترسی و درک را برای همه بهبود بخشید.
عناصر مهم را ضبط کنید
متن را در تصاویر خلاصه کنید
از ساختار جمله منظم استفاده کنید
از اطلاعات اضافی خودداری کنید
روی روندها و یافته های کلیدی در تصاویر پیچیده (مانند نمودارها یا نقشه ها) تمرکز کنید.
",
"interaction_modal.action.favourite": "برای ادامه، باید از حساب خود به دلخواه انتخاب کنید.",
"interaction_modal.action.follow": "برای ادامه، باید از حساب کاربری خود دنبال کنید.",
"interaction_modal.action.reblog": "برای ادامه، باید از حساب خود مجددا بلاگ کنید.",
@@ -551,7 +553,7 @@
"notification.admin.report_statuses_other": "{name}، {target} را گزارش داد",
"notification.admin.sign_up": "{name} ثبت نام کرد",
"notification.admin.sign_up.name_and_others": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} ثبتنام کردند",
- "notification.annual_report.message": "آمار #Wrapstodon {year}تان منتظر است! لحظههای به یاد ماندنی و نقاط پررنگ سال را روی ماستودون رونمایی کنید!",
+ "notification.annual_report.message": "آمار #Wrapstodon {year} تان منتظر است! لحظههای به یاد ماندنی و نقاط پررنگ سال را روی ماستودون رونمایی کنید!",
"notification.annual_report.view": "دیدن #Wrapstodon",
"notification.favourite": "{name} فرستهتان را برگزید",
"notification.favourite.name_and_others_with_link": "{name} و {count, plural, one {# نفر دیگر} other {# نفر دیگر}} فرستهتان را برگزیدند",
@@ -799,7 +801,7 @@
"server_banner.is_one_of_many": "{domain} یکی از بسیاری از سرورهای مستقل ماستودون است که می توانید از آن برای شرکت در fediverse استفاده کنید.",
"server_banner.server_stats": "آمار کارساز:",
"sign_in_banner.create_account": "ایجاد حساب",
- "sign_in_banner.follow_anyone": "هر کسی را در سراسر fediverse دنبال کنید و همه را به ترتیب زمانی ببینید. هیچ الگوریتم، تبلیغات یا طعمه کلیکی در چشم نیست.",
+ "sign_in_banner.follow_anyone": "هر کسی را در سراسر فدیورس دنبال کنید و همه را به ترتیب زمانی ببینید. هیچ الگوریتم، تبلیغات یا طعمه کلیکی در چشم نیست.",
"sign_in_banner.mastodon_is": "ماستودون بهترین راه برای پیگیری اتفاقات است.",
"sign_in_banner.sign_in": "ورود",
"sign_in_banner.sso_redirect": "ورود یا ثبت نام",
@@ -888,7 +890,7 @@
"upload_form.drag_and_drop.on_drag_over": "پیوست رسانه {item} منتقل شد.",
"upload_form.drag_and_drop.on_drag_start": "پیوست رسانه {item} برداشته شد.",
"upload_form.edit": "ویرایش",
- "upload_progress.label": "در حال بارگذاری…",
+ "upload_progress.label": "در حال بارگذاری...",
"upload_progress.processing": "در حال پردازش…",
"username.taken": "این نام کاربری گرفته شده. نام دیگری امتحان کنید",
"video.close": "بستن ویدیو",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 2d6598c20d..2b1929a313 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Tapahtui odottamaton virhe.",
"alert.unexpected.title": "Hups!",
"alt_text_badge.title": "Vaihtoehtoinen teksti",
+ "alt_text_modal.add_alt_text": "Lisää vaihtoehtoinen teksti",
+ "alt_text_modal.add_text_from_image": "Lisää teksti kuvasta",
+ "alt_text_modal.cancel": "Peruuta",
+ "alt_text_modal.change_thumbnail": "Vaihda pikkukuva",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Kuvaile tätä kuulovammallisille ihmisille…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Kuvaile tätä näkövammallisille ihmisille…",
+ "alt_text_modal.done": "Valmis",
"announcement.announcement": "Tiedote",
"annual_report.summary.archetype.booster": "Tehostaja",
"annual_report.summary.archetype.lurker": "Lymyilijä",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Sivuutetaanko ilmoitukset käyttäjiltä, jotka eivät seuraa sinua?",
"ignore_notifications_modal.not_following_title": "Sivuutetaanko ilmoitukset käyttäjiltä, joita et seuraa?",
"ignore_notifications_modal.private_mentions_title": "Sivuutetaanko ilmoitukset pyytämättömistä yksityismaininnoista?",
+ "info_button.label": "Ohje",
+ "info_button.what_is_alt_text": "
Mikä vaihtoehtoinen teksti on?
Vaihtoehtoinen teksti tarjoaa kuvauksen kuvista ihmisille, joilla on näkövamma tai matalan kaistanleveyden yhteys tai jotka kaipaavat lisäkontekstia.
Voit parantaa saavutettavuutta ja ymmärrettävyyttä kaikkien näkökulmasta kirjoittamalla selkeän, tiiviin ja objektiivisen vaihtoehtoisen tekstin.
Ota mukaan tärkeät elementit
Tiivistä kuvissa oleva teksti
Käytä tavallisia lauserakenteita
Vältä turhaa tietoa
Keskity trendeihin ja keskeisiin tuloksiin monimutkaisissa visuaalisissa esityksissä (kuten kaavioissa tai kartoissa)
",
"interaction_modal.action.favourite": "Jotta voit jatkaa, sinun tulee lisätä julkaisu suosikiksesi omalta tililtäsi.",
"interaction_modal.action.follow": "Jotta voit jatkaa, sinun tulee seurata käyttäjää omalta tililtäsi.",
"interaction_modal.action.reblog": "Jotta voit jatkaa, sinun tulee uudelleenjulkaista omalta tililtäsi.",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 7530ffcc6d..42677ebe56 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Lat sum um tú ikki sær fráboðanir frá fólki, sum ikki fylgja tær?",
"ignore_notifications_modal.not_following_title": "Lat sum um tú ikki sær fráboðanir frá fólki, sum tú ikki fylgir?",
"ignore_notifications_modal.private_mentions_title": "Lat sum um tú ikki sær fráboðanir frá óbiðnum privatum umrøðum?",
+ "info_button.label": "Hjálp",
+ "info_button.what_is_alt_text": "
Hvat er alt tekstur?
Alt tekstur lýsir myndir fyri fólki, sum síggja illa, ella sum hava ringt net samband ella tey, sum vilja vita meira um samanhangin.
Tú kanst bøta um atkomuna og fatanina hjá øllum við at skriva kláran, stuttan og objektivan alt tekst.
Fanga týdningarmikil element
Samanfata tekst í myndum
Brúka reglubundnan setningsbygnað
Lat vera við at siga ting upp í saman
Fokusera á rák og høvuðsúrslit í kompleksum myndum (sosum diagrammir og kort)
",
"interaction_modal.action.favourite": "Fyri at halda fram, so mást tú yndismerkja frá tínari kontu.",
"interaction_modal.action.follow": "Fyri at halda fram, mást tú fylgja frá tínari kontu.",
"interaction_modal.action.reblog": "Fyri at halda fram, mást tú endurblogga frá tínari kontu.",
diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json
index 3f72cc9e07..2fddca9f16 100644
--- a/app/javascript/mastodon/locales/fr-CA.json
+++ b/app/javascript/mastodon/locales/fr-CA.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignorer les notifications provenant des personnes qui ne vous suivent pas ?",
"ignore_notifications_modal.not_following_title": "Ignorer les notifications provenant des personnes que vous ne suivez pas ?",
"ignore_notifications_modal.private_mentions_title": "Ignorer les notifications issues des mentions privées non sollicitées ?",
+ "info_button.label": "Aide",
+ "info_button.what_is_alt_text": "
Qu'est-ce que le texte alternatif ?
Un texte alternatif fournit une description de l'image aux personnes avec un handicap visuel ou une connexion limitée ou qui souhaitent avoir un contexte supplémentaire.
Vous pouvez améliorer l'accessibilité et la compression de tout le monde en écrivant un texte alternatif clair, concis et objectif.
Identifiez les éléments importants
Résumez le texte présent à l'image
Utilisez une structure de phrase normale
Évitez les informations redondantes
Pour les visuels complexes (tels que les diagrammes ou les cartes), indiquez les tendances ou points-clés
",
"interaction_modal.action.favourite": "Pour continuer, vous devez ajouter en favori depuis votre compte.",
"interaction_modal.action.follow": "Pour continuer, vous devez suivre depuis votre compte.",
"interaction_modal.action.reblog": "Pour continuer, vous devez booster depuis votre compte.",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 1de6672353..1660132fed 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignorer les notifications provenant des personnes qui ne vous suivent pas ?",
"ignore_notifications_modal.not_following_title": "Ignorer les notifications provenant des personnes que vous ne suivez pas ?",
"ignore_notifications_modal.private_mentions_title": "Ignorer les notifications issues des mentions privées non sollicitées ?",
+ "info_button.label": "Aide",
+ "info_button.what_is_alt_text": "
Qu'est-ce que le texte alternatif ?
Un texte alternatif fournit une description de l'image aux personnes avec un handicap visuel ou une connexion limitée ou qui souhaitent avoir un contexte supplémentaire.
Vous pouvez améliorer l'accessibilité et la compression de tout le monde en écrivant un texte alternatif clair, concis et objectif.
Identifiez les éléments importants
Résumez le texte présent à l'image
Utilisez une structure de phrase normale
Évitez les informations redondantes
Pour les visuels complexes (tels que les diagrammes ou les cartes), indiquez les tendances ou points-clés
",
"interaction_modal.action.favourite": "Pour continuer, vous devez ajouter en favori depuis votre compte.",
"interaction_modal.action.follow": "Pour continuer, vous devez suivre depuis votre compte.",
"interaction_modal.action.reblog": "Pour continuer, vous devez booster depuis votre compte.",
@@ -549,7 +551,7 @@
"notification.admin.report_account_other": "{name} a signalé {count, plural, one {un message} other {# messages}} depuis {target}",
"notification.admin.report_statuses": "{name} a signalé {target} pour {category}",
"notification.admin.report_statuses_other": "{name} a signalé {target}",
- "notification.admin.sign_up": "{name} s'est inscrit",
+ "notification.admin.sign_up": "{name} s'est inscrit·e",
"notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit",
"notification.annual_report.message": "Votre {year} #Wrapstodon attend ! Dévoilez les moments forts et mémorables de votre année sur Mastodon !",
"notification.annual_report.view": "Voir #Wrapstodon",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 700815db49..87c8e939ee 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignorar notificacións de persoas que non te seguen?",
"ignore_notifications_modal.not_following_title": "Ignorar notificacións de persoas que non segues?",
"ignore_notifications_modal.private_mentions_title": "Ignorar notificacións de Mencións Privadas non solicitadas?",
+ "info_button.label": "Axuda",
+ "info_button.what_is_alt_text": "
Que é o Texto Alternativo?
O Text Alt proporciona a descrición das imaxes para as persoas con deficiencias visuais, conexións a internet de baixa calidade ou para engadir contexto ás mesmas.
Podes mellorar a accesibilidade e a comprensión da publicación ao escribir un texto alternativo claro, conciso e obxectivo.
Identifica os elementos importantes
Inclúe o texto que apareza nas imaxes
Utiliza sintaxe estándar nas frases
Evita información redundante
Céntrate nos elementos principais cando sexan imaxes complexas (como diagramas ou mapas)
",
"interaction_modal.action.favourite": "Para continuar, debes favorecer desde a túa conta.",
"interaction_modal.action.follow": "Para continuar, debes facer seguimento desde a túa conta.",
"interaction_modal.action.reblog": "Para continuar, debes promover desde a túa conta.",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 5b43bd0b84..22481cfe5b 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "להתעלם מהתראות מא.נשים שאינם עוקביך?",
"ignore_notifications_modal.not_following_title": "להתעלם מהתראות מא.נשים שאינם נעקביך?",
"ignore_notifications_modal.private_mentions_title": "להתעלם מהתראות מאיזכורים פרטיים?",
+ "info_button.label": "עזרה",
+ "info_button.what_is_alt_text": "
מהו כיתוב חלופי?
כיתוב חלופי משמש תיאור מילולי של תמונות לסובלים ממגבלות ראיה, חיבורי רשת איטיים, או אלו הצריכים הקשר יותר מפורט לתוכן המולטימדיה המצורף.
ניתן לשפר את הנגישות והבנת התוכן לכולם ע\"י כתיבת תיאור ברור, תמציתי ונטול פניות.
כיסוי היסודות החשובים
סיכום המלל שבתמונות
שימוש במבנה משפטים רגיל
יש להמנע מחזרה על מידע
אם העזרים הויזואליים הם דיאגרמות או מפות, התמקדו במגמות וממצאים מרכזיים.
",
"interaction_modal.action.favourite": "כדי להמשיך, עליך לחבב מחשבונך.",
"interaction_modal.action.follow": "כדי להמשיך, עליך לעקוב מחשבונך.",
"interaction_modal.action.reblog": "כדי להמשיך, עליך להדהד מחשבונך.",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 664c0c58db..ab8ee64249 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Váratlan hiba történt.",
"alert.unexpected.title": "Hoppá!",
"alt_text_badge.title": "Helyettesítő szöveg",
+ "alt_text_modal.add_alt_text": "Helyettesítő szöveg hozzáadása",
+ "alt_text_modal.add_text_from_image": "Szöveg hozzáadása a képből",
+ "alt_text_modal.cancel": "Mégse",
+ "alt_text_modal.change_thumbnail": "Bélyegkép megváltoztatása",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Írd le a hallássérültek számára…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Írd le a látássérültek számára…",
+ "alt_text_modal.done": "Kész",
"announcement.announcement": "Közlemény",
"annual_report.summary.archetype.booster": "A cool-vadász",
"annual_report.summary.archetype.lurker": "A settenkedő",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Nem követőktől érkező értesítések figyelmen kívül hagyása?",
"ignore_notifications_modal.not_following_title": "Nem követettektől érkező értesítések figyelmen kívül hagyása?",
"ignore_notifications_modal.private_mentions_title": "Figyelmen kívül hagyod a kéretlen privát említéseket?",
+ "info_button.label": "Súgó",
+ "info_button.what_is_alt_text": "
Mi az alternatív szöveg?
Az alternatív szöveg képleírást biztosít a látássérültek, az alacsony sávszélességű kapcsolatokkal rendelkezők, illetve a bővebb kontextust keresők számára.
Az egyértelmű, tömör és objektív alternatív szöveg megírásával mindenki számára akadálymentesebb és könnyebben érthető lesz.
Rögzítsd a fontos elemeket.
Foglald össze szövegesen a képeket.
Használj szabályos mondatszerkezetet.
Kerüld a felesleges információkat.
Összetett vizuális ábrákon (például diagramokon vagy térképeken) összpontosíts a trendekre és a legfontosabb megállapításokra.
",
"interaction_modal.action.favourite": "A folytatáshoz a fiókodból kell kedvencnek jelölnöd.",
"interaction_modal.action.follow": "A folytatáshoz a fiókodból kell követned.",
"interaction_modal.action.reblog": "A folytatáshoz a fiókodból kell megosztanod.",
diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json
index a39f493957..fc3194e4dd 100644
--- a/app/javascript/mastodon/locales/ia.json
+++ b/app/javascript/mastodon/locales/ia.json
@@ -89,6 +89,7 @@
"alt_text_modal.add_text_from_image": "Adder texto ab imagine",
"alt_text_modal.cancel": "Cancellar",
"alt_text_modal.change_thumbnail": "Cambiar le miniatura",
+ "alt_text_modal.done": "Preste",
"announcement.announcement": "Annuncio",
"annual_report.summary.archetype.booster": "Le impulsator",
"annual_report.summary.archetype.lurker": "Le lector",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index ee0e38140b..743c4cad82 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Upp kom óvænt villa.",
"alert.unexpected.title": "Úbbs!",
"alt_text_badge.title": "Hjálpartexti mynda",
+ "alt_text_modal.add_alt_text": "Bæta við hjálpartexta",
+ "alt_text_modal.add_text_from_image": "Bæta við texta úr mynd",
+ "alt_text_modal.cancel": "Hætta við",
+ "alt_text_modal.change_thumbnail": "Skipta um smámynd",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Lýstu þessu fyrir fólk með skerta heyrn…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Lýstu þessu fyrir fólk með skerta sjón…",
+ "alt_text_modal.done": "Lokið",
"announcement.announcement": "Auglýsing",
"annual_report.summary.archetype.booster": "Svali gaurinn",
"annual_report.summary.archetype.lurker": "Lurkurinn",
@@ -407,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Hunsa tilkynningar frá fólki sem fylgist ekki með þér?",
"ignore_notifications_modal.not_following_title": "Hunsa tilkynningar frá fólki sem þú fylgist ekki með?",
"ignore_notifications_modal.private_mentions_title": "Hunsa tilkynningar frá óumbeðnum tilvísunum í einkaspjalli?",
+ "info_button.label": "Hjálp",
+ "info_button.what_is_alt_text": "
Hvað er alt-texti?
Hjálpartexti eða ALT-myndatexti inniheldur lýsingu á myndefni fyrir fólk með ýmsar gerðir sjónskerðingar, fyrir tengingar með litla bandbreidd, eða til að gefa nánara samhengi fyrir myndefni.
Þú getur með þessu bætt almennt aðgengi og aukið skilning á efni sem þú birtir með því að skrifa skýran, skorinortan og hlutlægan alt-texta til vara.
Lýstu mikilvægum atriðum
\\n
Hafðu yfirlit með þeim texta sem sést í myndum
Notaðu eðlilega setningaskipan
Forðastu óþarfar upplýsingar
Leggðu áherslu á aðalatriði í flóknu myndefni (eins og línuritum eða landakortum)
",
"interaction_modal.action.favourite": "Til að halda áfram þarftu að setja eitthvað í eftirlæti, verandi inni á aðgangnum þínum.",
"interaction_modal.action.follow": "Til að halda áfram þarftu að fylgjast með einhverjum, verandi inni á aðgangnum þínum.",
"interaction_modal.action.reblog": "Til að halda áfram þarftu að endurbirta frá einhverjum, verandi inni á aðgangnum þínum.",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 81082e30c0..fc52700692 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -1,6 +1,6 @@
{
"about.blocks": "Server moderati",
- "about.contact": "Contatto:",
+ "about.contact": "Contatti:",
"about.disclaimer": "Mastodon è un software libero e open-source e un marchio di Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Motivo non disponibile",
"about.domain_blocks.preamble": "Mastodon, generalmente, ti consente di visualizzare i contenuti e interagire con gli utenti da qualsiasi altro server nel fediverso. Queste sono le eccezioni che sono state fatte su questo particolare server.",
@@ -39,7 +39,7 @@
"account.following_counter": "{count, plural, one {{counter} segui} other {{counter} segui}}",
"account.follows.empty": "Questo utente non segue ancora nessuno.",
"account.go_to_profile": "Vai al profilo",
- "account.hide_reblogs": "Nascondi potenziamenti da @{name}",
+ "account.hide_reblogs": "Nascondi condivisioni da @{name}",
"account.in_memoriam": "In memoria.",
"account.joined_short": "Iscritto",
"account.languages": "Modifica le lingue d'iscrizione",
@@ -61,7 +61,7 @@
"account.requested": "In attesa d'approvazione. Clicca per annullare la richiesta di seguire",
"account.requested_follow": "{name} ha richiesto di seguirti",
"account.share": "Condividi il profilo di @{name}",
- "account.show_reblogs": "Mostra potenziamenti da @{name}",
+ "account.show_reblogs": "Mostra condivisioni da @{name}",
"account.statuses_counter": "{count, plural, one {{counter} post} other {{counter} post}}",
"account.unblock": "Sblocca @{name}",
"account.unblock_domain": "Sblocca il dominio {domain}",
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ignorare le notifiche delle persone che non ti seguono?",
"ignore_notifications_modal.not_following_title": "Ignorare le notifiche delle persone che non segui?",
"ignore_notifications_modal.private_mentions_title": "Ignorare le notifiche provenienti da menzioni private indesiderate?",
+ "info_button.label": "Aiuto",
+ "info_button.what_is_alt_text": "
Cos'è il testo alternativo?
Il testo alternativo fornisce descrizioni delle immagini per le persone con disturbi della vista, connessioni a bassa larghezza di banda o per coloro che cercano un contesto aggiuntivo.
È possibile migliorare l'accessibilità e la comprensione per tutti scrivendo un testo alt chiaro, conciso e obiettivo.
Cattura elementi importanti
Riassume il testo nelle immagini
Usa la struttura delle frasi regolari
Evita le informazioni ridondanti
Concentrati sulle tendenze e i risultati chiave in immagini complesse (come diagrammi o mappe)
",
"interaction_modal.action.favourite": "Per continuare, devi aggiungere ai preferiti il tuo account.",
"interaction_modal.action.follow": "Per continuare, devi seguire dal tuo account.",
"interaction_modal.action.reblog": "Per continuare, devi condividere dal tuo account.",
@@ -696,7 +698,7 @@
"privacy.private.short": "Follower",
"privacy.public.long": "Chiunque dentro e fuori Mastodon",
"privacy.public.short": "Pubblico",
- "privacy.unlisted.additional": "Si comporta esattamente come pubblico, tranne per il fatto che il post non verrà visualizzato nei feed live o negli hashtag, nell'esplorazione o nella ricerca Mastodon, anche se hai attivato l'attivazione a livello di account.",
+ "privacy.unlisted.additional": "",
"privacy.unlisted.long": "Meno fanfare algoritmiche",
"privacy.unlisted.short": "Pubblico silenzioso",
"privacy_policy.last_updated": "Ultimo aggiornamento {date}",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index ff41d87047..0c9b4a6062 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -86,6 +86,10 @@
"alert.unexpected.message": "不明なエラーが発生しました。",
"alert.unexpected.title": "エラー!",
"alt_text_badge.title": "代替テキスト",
+ "alt_text_modal.add_alt_text": "代替テキストを追加",
+ "alt_text_modal.cancel": "キャンセル",
+ "alt_text_modal.change_thumbnail": "サムネイルを変更",
+ "alt_text_modal.done": "完了",
"announcement.announcement": "お知らせ",
"annual_report.summary.archetype.booster": "トレンドハンター",
"annual_report.summary.archetype.lurker": "ROM専",
@@ -407,6 +411,8 @@
"ignore_notifications_modal.not_followers_title": "本当に「フォローされていないアカウントからの通知」を無視するようにしますか?",
"ignore_notifications_modal.not_following_title": "本当に「フォローしていないアカウントからの通知」を無視するようにしますか?",
"ignore_notifications_modal.private_mentions_title": "本当に「外部からの非公開の返信」を無視するようにしますか?",
+ "info_button.label": "ヘルプ",
+ "info_button.what_is_alt_text": "
",
"interaction_modal.action.favourite": "お気に入り登録はあなたのアカウントがあるサーバーで行う必要があります。",
"interaction_modal.action.follow": "ユーザーをフォローするには、あなたのアカウントがあるサーバーからフォローする必要があります。",
"interaction_modal.action.reblog": "投稿をブーストするには、あなたのアカウントがあるサーバーでブーストする必要があります。",
@@ -836,6 +842,7 @@
"status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。",
"status.redraft": "削除して下書きに戻す",
"status.remove_bookmark": "ブックマークを削除",
+ "status.remove_favourite": "お気に入りから削除",
"status.replied_in_thread": "ほかのユーザーへ",
"status.replied_to": "{name}さんへの返信",
"status.reply": "返信",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 02ecec2a70..8cdfe6df19 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -74,7 +74,10 @@
"alert.unexpected.message": "Yeḍra-d unezri ur netturaǧu ara.",
"alert.unexpected.title": "Ayhuh!",
"alt_text_badge.title": "Aḍris asegzan",
+ "alt_text_modal.cancel": "Semmet",
+ "alt_text_modal.done": "Immed",
"announcement.announcement": "Ulɣu",
+ "annual_report.summary.most_used_hashtag.none": "Ula yiwen",
"audio.hide": "Ffer amesli",
"block_modal.show_less": "Ssken-d drus",
"block_modal.show_more": "Ssken-d ugar",
@@ -100,9 +103,11 @@
"column.blocks": "Imiḍanen yettusḥebsen",
"column.bookmarks": "Ticraḍ",
"column.community": "Tasuddemt tadigant",
+ "column.create_list": "Snulfu-d tabdart",
"column.direct": "Tabdarin tusligin",
"column.directory": "Inig deg imeɣna",
"column.domain_blocks": "Taɣulin yeffren",
+ "column.edit_list": "Ẓreg tabdart",
"column.favourites": "Imenyafen",
"column.follow_requests": "Isuturen n teḍfeṛt",
"column.home": "Agejdan",
@@ -165,6 +170,7 @@
"confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
"content_warning.hide": "Ffer tasuffeɣt",
"content_warning.show": "Ssken-d akken tebɣu tili",
+ "content_warning.show_more": "Sken-d ugar",
"conversation.delete": "Kkes adiwenni",
"conversation.mark_as_read": "Creḍ yettwaɣṛa",
"conversation.open": "Ssken adiwenni",
@@ -325,11 +331,20 @@
"link_preview.author": "S-ɣur {name}",
"link_preview.more_from_author": "Ugar sɣur {name}",
"link_preview.shares": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}",
+ "lists.add_member": "Rnu",
+ "lists.add_to_list": "Rnu ɣer tebdart",
+ "lists.add_to_lists": "Rnu {name} ɣer tebdarin",
+ "lists.create": "Snulfu-d",
"lists.delete": "Kkes tabdart",
"lists.edit": "Ẓreg tabdart",
+ "lists.list_name": "Isem n tebdart",
+ "lists.new_list_name": "Isem n tebdart tamaynut",
+ "lists.remove_member": "Kkes",
"lists.replies_policy.followed": "Kra n useqdac i yettwaḍefren",
"lists.replies_policy.list": "Iɛeggalen n tebdart",
"lists.replies_policy.none": "Ula yiwen·t",
+ "lists.save": "Sekles",
+ "lists.search": "Nadi",
"load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}",
"loading_indicator.label": "Yessalay-d …",
"media_gallery.hide": "Seggelmes",
@@ -399,6 +414,7 @@
"notifications.column_settings.filter_bar.category": "Iri n usizdeg uzrib",
"notifications.column_settings.follow": "Imeḍfaṛen imaynuten:",
"notifications.column_settings.follow_request": "Isuturen imaynuten n teḍfeṛt:",
+ "notifications.column_settings.group": "Agraw",
"notifications.column_settings.mention": "Abdar:",
"notifications.column_settings.poll": "Igemmaḍ n usenqed:",
"notifications.column_settings.push": "Alɣuten yettudemmren",
@@ -429,6 +445,9 @@
"notifications.policy.filter_private_mentions_title": "Abdar uslig ur yettwasferken ara",
"notifications_permission_banner.enable": "Rmed alɣuten n tnarit",
"notifications_permission_banner.title": "Ur zeggel acemma",
+ "onboarding.follows.back": "Uɣal",
+ "onboarding.follows.done": "Immed",
+ "onboarding.follows.search": "Nadi",
"onboarding.profile.display_name": "Isem ara d-yettwaskanen",
"onboarding.profile.display_name_hint": "Isem-ik·im ummid neɣ isem-ik·im n uqeṣṣer…",
"onboarding.profile.note": "Tameddurt",
@@ -524,6 +543,7 @@
"search_results.accounts": "Imeɣna",
"search_results.all": "Akk",
"search_results.hashtags": "Ihacṭagen",
+ "search_results.no_results": "Ulac igemmaḍ.",
"search_results.see_all": "Wali-ten akk",
"search_results.statuses": "Tisuffaɣ",
"server_banner.active_users": "iseqdacen urmiden",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index fd5e2b906d..d1ee08dcad 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "예상하지 못한 에러가 발생했습니다.",
"alert.unexpected.title": "앗!",
"alt_text_badge.title": "대체 문구",
+ "alt_text_modal.add_alt_text": "대체 텍스트 추가",
+ "alt_text_modal.add_text_from_image": "이미지에서 텍스트 추가",
+ "alt_text_modal.cancel": "취소",
+ "alt_text_modal.change_thumbnail": "썸네일 변경",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "청력 장애가 있는 사람들을 위한 설명을 작성하세요…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "시각 장애가 있는 사람들을 위한 설명을 작성하세요…",
+ "alt_text_modal.done": "완료",
"announcement.announcement": "공지사항",
"annual_report.summary.archetype.booster": "연쇄부스트마",
"annual_report.summary.archetype.lurker": "은둔자",
@@ -407,6 +414,13 @@
"ignore_notifications_modal.not_followers_title": "나를 팔로우하지 않는 사람들의 알림을 무시할까요?",
"ignore_notifications_modal.not_following_title": "내가 팔로우하지 않는 사람들의 알림을 무시할까요?",
"ignore_notifications_modal.private_mentions_title": "요청하지 않은 개인 멘션 알림을 무시할까요?",
+ "interaction_modal.action.favourite": "계속하려면 내 계정으로 즐겨찾기해야 합니다.",
+ "interaction_modal.action.follow": "계속하려면 내 계정으로 팔로우해야 합니다.",
+ "interaction_modal.action.reblog": "계속하려면 내 계정으로 리블로그해야 합니다.",
+ "interaction_modal.action.reply": "계속하려면 내 계정으로 답장해야 합니다.",
+ "interaction_modal.action.vote": "계속하려면 내 계정으로 투표해야 합니다.",
+ "interaction_modal.go": "이동",
+ "interaction_modal.no_account_yet": "아직 계정이 없나요?",
"interaction_modal.on_another_server": "다른 서버에",
"interaction_modal.on_this_server": "이 서버에서",
"interaction_modal.title.favourite": "{name} 님의 게시물을 좋아하기",
@@ -830,6 +844,7 @@
"status.reblogs.empty": "아직 아무도 이 게시물을 부스트하지 않았습니다. 부스트 한 사람들이 여기에 표시 됩니다.",
"status.redraft": "지우고 다시 쓰기",
"status.remove_bookmark": "북마크 삭제",
+ "status.remove_favourite": "즐겨찾기에서 제거",
"status.replied_in_thread": "글타래에 답장",
"status.replied_to": "{name} 님에게",
"status.reply": "답장",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 9379620c7e..083527f7d5 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Įvyko netikėta klaida.",
"alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Alternatyvus tekstas",
+ "alt_text_modal.add_alt_text": "Pridėti alternatyvųjį tekstą",
+ "alt_text_modal.add_text_from_image": "Pridėti tekstą iš vaizdo",
+ "alt_text_modal.cancel": "Atšaukti",
+ "alt_text_modal.change_thumbnail": "Keisti miniatiūrą",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Aprašykite tai klausos negalią turintiems asmenims…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Aprašykite tai regos sutrikimų turintiems asmenims…",
+ "alt_text_modal.done": "Atlikta",
"announcement.announcement": "Skelbimas",
"annual_report.summary.archetype.booster": "Šaunus medžiotojas",
"annual_report.summary.archetype.lurker": "Stebėtojas",
@@ -287,7 +294,7 @@
"empty_column.community": "Vietinė laiko skalė yra tuščia. Parašyk ką nors viešai, kad pradėtum sąveikauti.",
"empty_column.direct": "Dar neturi jokių privačių paminėjimų. Kai išsiųsi arba gausi vieną iš jų, jis bus rodomas čia.",
"empty_column.domain_blocks": "Kol kas nėra užblokuotų serverių.",
- "empty_column.explore_statuses": "Šiuo metu niekas nėra tendencinga. Patikrink vėliau!",
+ "empty_column.explore_statuses": "Šiuo metu niekas nėra tendencinga. Patikrinkite vėliau!",
"empty_column.favourited_statuses": "Dar neturi mėgstamų įrašų. Kai vieną iš jų pamėgsi, jis bus rodomas čia.",
"empty_column.favourites": "Šio įrašo dar niekas nepamėgo. Kai kas nors tai padarys, jie bus rodomi čia.",
"empty_column.follow_requests": "Dar neturi jokių sekimo prašymų. Kai gausi tokį prašymą, jis bus rodomas čia.",
@@ -403,6 +410,8 @@
"ignore_notifications_modal.not_followers_title": "Ignoruoti pranešimus iš žmonių, kurie tave neseka?",
"ignore_notifications_modal.not_following_title": "Ignoruoti pranešimus iš žmonių, kuriuos neseki?",
"ignore_notifications_modal.private_mentions_title": "Ignoruoti pranešimus iš neprašytų privačių paminėjimų?",
+ "info_button.label": "Žinynas",
+ "info_button.what_is_alt_text": "
Kas yra alternatyvusis tekstas?
Alternatyvusis tekstas pateikia vaizdų aprašymus asmenims su regos sutrikimais, turintiems mažo pralaidumo ryšį arba ieškantiems papildomo konteksto.
Galite pagerinti prieinamumą ir suprantamumą visiems, jei parašysite aiškų, glaustą ir objektyvų alternatyvųjį tekstą.
Užfiksuokite svarbiausius elementus.
Apibendrinkite tekstą vaizduose.
Naudokite įprasta sakinio struktūrą.
Venkite nereikalingos informacijos.
Sutelkite dėmesį į tendencijas ir pagrindines išvadas sudėtinguose vaizdiniuose (tokiuose kaip diagramos ar žemėlapiai).
",
"interaction_modal.action.favourite": "Kad tęstumėte, turite pamėgti iš savo paskyros.",
"interaction_modal.action.follow": "Kad tęstumėte, turite sekti iš savo paskyros.",
"interaction_modal.action.reblog": "Kad tęstumėte, turite pasidalinti iš savo paskyros.",
@@ -707,7 +716,7 @@
"report.categories.violation": "Turinys pažeidžia vieną ar daugiau serverio taisyklių",
"report.category.subtitle": "Pasirink geriausią atitikmenį.",
"report.category.title": "Papasakok mums, kas vyksta su šiuo {type}",
- "report.category.title_account": "profilis",
+ "report.category.title_account": "profiliu",
"report.category.title_status": "įrašas",
"report.close": "Atlikta",
"report.comment.title": "Ar yra dar kas nors, ką, tavo manymu, turėtume žinoti?",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index d97ce02798..817160a032 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Meldingen negeren van mensen die jou niet volgen?",
"ignore_notifications_modal.not_following_title": "Meldingen negeren van mensen die je niet volgt?",
"ignore_notifications_modal.private_mentions_title": "Meldingen negeren van ongevraagde privéberichten?",
+ "info_button.label": "Help",
+ "info_button.what_is_alt_text": "
Wat is alt-tekst?
Alt-tekst biedt beschrijvingen van afbeeldingen voor mensen met een visuele beperking, voor verbindingen met lage internetsnelheid of mensen die op zoek zijn naar extra context.
Je kunt de toegankelijkheid en de begrijpelijkheid voor iedereen verbeteren door heldere, beknopte en objectieve alt-teksten te schrijven.
Leg belangrijke elementen vast
Tekst in afbeeldingen samenvatten
Een eenvoudige zinsbouw gebruiken
Overbodige informatie vermijden
Voor complexe diagrammen of kaarten alleen op trends en belangrijke bevindingen focussen
",
"interaction_modal.action.favourite": "Om verder te gaan, moet je vanaf je eigen account als favoriet markeren.",
"interaction_modal.action.follow": "Om verder te gaan, moet je vanaf je eigen account volgen.",
"interaction_modal.action.reblog": "Om verder te gaan, moet je vanaf je eigen account boosten.",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 079a128cf8..8e3b8a26fa 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -86,6 +86,13 @@
"alert.unexpected.message": "Wystąpił nieoczekiwany błąd.",
"alert.unexpected.title": "Ups!",
"alt_text_badge.title": "Tekst alternatywny",
+ "alt_text_modal.add_alt_text": "Dodaj tekst alternatywny",
+ "alt_text_modal.add_text_from_image": "Dodaj tekst z obrazu",
+ "alt_text_modal.cancel": "Anuluj",
+ "alt_text_modal.change_thumbnail": "Zmień miniaturę",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Opisz to dla osób z wadą słuchu…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Opisz to dla osób z wadą wzroku…",
+ "alt_text_modal.done": "Gotowe",
"announcement.announcement": "Ogłoszenie",
"annual_report.summary.archetype.booster": "Łowca treści",
"annual_report.summary.archetype.lurker": "Czyhający",
@@ -103,6 +110,7 @@
"annual_report.summary.most_used_hashtag.most_used_hashtag": "najczęściej używany hashtag",
"annual_report.summary.most_used_hashtag.none": "Brak",
"annual_report.summary.new_posts.new_posts": "nowe wpisy",
+ "annual_report.summary.percentile.text": "Plasuje Cię w czołówce użytkowników {domain}.",
"annual_report.summary.percentile.we_wont_tell_bernie": "Nie powiemy Berniemu.",
"annual_report.summary.thanks": "Dziękujemy, że jesteś częścią Mastodona!",
"attachments_list.unprocessed": "(nieprzetworzone)",
@@ -408,6 +416,10 @@
"ignore_notifications_modal.private_mentions_title": "Ignoruj powiadomienia o nieproszonych wzmiankach prywatnych?",
"interaction_modal.action.favourite": "Aby kontynuować, musisz dodać do ulubionych na swoim koncie.",
"interaction_modal.action.follow": "Aby kontynuować, musisz obserwować ze swojego konta.",
+ "interaction_modal.action.reblog": "Aby kontynuować, musisz podać dalej ze swojego konta.",
+ "interaction_modal.action.reply": "Aby kontynuować, musisz odpowiedzieć ze swojego konta.",
+ "interaction_modal.action.vote": "Aby kontynuować, musisz zagłosować ze swojego konta.",
+ "interaction_modal.go": "Dalej",
"interaction_modal.no_account_yet": "Nie masz jeszcze konta?",
"interaction_modal.on_another_server": "Na innym serwerze",
"interaction_modal.on_this_server": "Na tym serwerze",
@@ -452,6 +464,7 @@
"keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
"keyboard_shortcuts.toggle_sensitivity": "Pokaż/ukryj multimedia",
"keyboard_shortcuts.toot": "Stwórz nowy post",
+ "keyboard_shortcuts.translate": "Aby przetłumaczyć post",
"keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania",
"keyboard_shortcuts.up": "aby przejść na górę listy",
"lightbox.close": "Zamknij",
@@ -690,6 +703,8 @@
"privacy_policy.title": "Polityka prywatności",
"recommended": "Zalecane",
"refresh": "Odśwież",
+ "regeneration_indicator.please_stand_by": "Proszę czekać.",
+ "regeneration_indicator.preparing_your_home_feed": "Przygotowywanie Twojego kanału wiadomości...",
"relative_time.days": "{number} dni",
"relative_time.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}} temu",
"relative_time.full.hours": "{number, plural, one {# godzinę} few {# godziny} many {# godzin} other {# godzin}} temu",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index f9cd9dfcc1..48ae395481 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -414,9 +414,11 @@
"ignore_notifications_modal.not_followers_title": "Ignorar notificações de pessoas que não te seguem?",
"ignore_notifications_modal.not_following_title": "Ignorar notificações de pessoas que não segues?",
"ignore_notifications_modal.private_mentions_title": "Ignorar notificações de menções privadas não solicitadas?",
+ "info_button.label": "Ajuda",
+ "info_button.what_is_alt_text": "
O que é texto alternativo?
O texto alternativo fornece descrições de imagens para pessoas com deficiências visuais, conexões de baixa largura de banda ou pessoas que procuram um contexto adicional.
Podes melhorar a acessibilidade e a compreensão para todos escrevendo um texto alternativo claro, conciso e objetivo.
Capta elementos importantes
Resume o texto que aparece nas imagens
Usa uma estrutura de frase regular
Evita informações redundantes
Centra-te nas tendências e nas principais conclusões em imagens complexas (como diagramas ou mapas)
",
"interaction_modal.action.favourite": "Para continuar, tens de adicionar um favorito na tua conta.",
"interaction_modal.action.follow": "Para continuar, tens de seguir alguém na tua conta.",
- "interaction_modal.action.reblog": "Para continuar, tens de fazer uma republicação na tua conta.",
+ "interaction_modal.action.reblog": "Para continuar, tens de impulsionar desde a tua conta.",
"interaction_modal.action.reply": "Para continuar, tens de fazer uma resposta na tua conta.",
"interaction_modal.action.vote": "Para continuar é necessário votar a partir da tua conta.",
"interaction_modal.go": "Ir",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 1148254a4d..68b774336e 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -409,6 +409,8 @@
"ignore_notifications_modal.not_followers_title": "Të shpërfillen njoftime nga persona që s’ju ndjekin?",
"ignore_notifications_modal.not_following_title": "Të shpërfillen njoftime nga persona që s’i ndiqni?",
"ignore_notifications_modal.private_mentions_title": "Të shpërfillen njoftime nga Përmendje Private të pakërkuara?",
+ "info_button.label": "Ndihmë",
+ "info_button.what_is_alt_text": "
Ç’është teksti alternativ?
Teksti alternativ jep përshkrime figurash për persona me mangësi në të parët, lidhje me gjerësi bande të ulët, ose për ata që duan kontekst shtesë.
Mund të përmirësoni përdorimin nga persona me aftësi të kufizuara dhe kuptimin për këto, duke shkruar tekst alternativ të qartë, konciz dhe objektiv.
Rrokni elementët e rëndësishëm
Përmblidhni tekst në figura
Përdorni strukturë të rregullt fjalish
Shmangni përsëritje informacioni
Në aspekte pamore të ndërlikuara (fjala vjen, diagrame ose harta) përqendrohuni te prirje dhe gjetje gjërash kyçe
",
"interaction_modal.action.favourite": "Që të vazhdoni, lypset t’i vini shenjë si i parapëlqyer që nga llogaria juaj.",
"interaction_modal.action.follow": "Që të vazhdoni, lypset ta ndiqni që nga llogaria juaj.",
"interaction_modal.action.reblog": "Që të vazhdoni, lypset ta riblogoni që nga llogaria juaj.",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 52993740c5..da6a49b75a 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -523,7 +523,7 @@
"navigation_bar.favourites": "Favoriter",
"navigation_bar.filters": "Tystade ord",
"navigation_bar.follow_requests": "Följförfrågningar",
- "navigation_bar.followed_tags": "Utvalda hashtags",
+ "navigation_bar.followed_tags": "Följda hashtaggar",
"navigation_bar.follows_and_followers": "Följer och följare",
"navigation_bar.lists": "Listor",
"navigation_bar.logout": "Logga ut",
diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json
index f60c2fe289..7291588a38 100644
--- a/app/javascript/mastodon/locales/tok.json
+++ b/app/javascript/mastodon/locales/tok.json
@@ -1,11 +1,12 @@
{
"about.blocks": "ma lawa",
"about.contact": "toki:",
- "about.disclaimer": "ilo Masoton la, jan ale li ken kama jo e ona kepeken mani ala, li ken ante e toki ilo ona. kulupu esun Mastodon li jo e nimi ona. kulupu esun Mastodon li nasin lawa gGmbH.",
+ "about.disclaimer": "ilo Masoton la jan ale li lawa e ona li pana e pona tawa ona. kulupu esun Mastodon gGmbH li lawa e nimi ona.",
"about.domain_blocks.no_reason_available": "mi sona ala e tan",
"about.domain_blocks.preamble": "ilo Masoton li ken e ni: sina lukin e toki jan pi ma ilo mute. sina ken toki tawa ona lon kulupu ma. taso, ma ni li ken ala e ni tawa ma ni:",
"about.domain_blocks.silenced.explanation": "sina lukin ala e toki e jan tan ma ni. taso, sina wile la, sina ken ni.",
- "about.domain_blocks.silenced.title": "ken lili lukin",
+ "about.domain_blocks.silenced.title": "ken lukin lili ",
+ "about.domain_blocks.suspended.explanation": "sona ale pi ma ni li kama pali ala, li kama esun ala, li kama awen ala la sina ken ala toki tawa jan pi ma ni.",
"about.domain_blocks.suspended.title": "weka",
"about.not_available": "lon kulupu ni la sina ken alasa ala e sona ni.",
"about.powered_by": "lipu kulupu pi jan lawa mute tan {mastodon}",
@@ -18,7 +19,7 @@
"account.block_domain": "o weka e ma {domain}",
"account.block_short": "o weka e jan tawa mi",
"account.blocked": "jan li weka tawa mi",
- "account.cancel_follow_request": "o pini kute",
+ "account.cancel_follow_request": "o kute ala",
"account.copy": "o pali same e linja pi lipu jan",
"account.direct": "len la o mu e @{name}",
"account.disable_notifications": "@{name} li toki la o mu ala e mi",
@@ -50,74 +51,95 @@
"account.mute": "o len e @{name}",
"account.mute_notifications_short": "o kute ala e mu tan jan ni",
"account.mute_short": "o kute ala",
- "account.muted": "sina len e jan ni",
+ "account.muted": "sina kute ala e jan ni",
"account.mutual": "jan pona sona",
- "account.no_bio": "lipu li weka",
+ "account.no_bio": "lipu li weka.",
"account.open_original_page": "o open e lipu open",
"account.posts": "toki suli",
"account.posts_with_replies": "toki ale",
- "account.report": "jan @{name} la o toki tawa lawa",
- "account.requested": "jan ni o ken e kute sina. sina pini wile kute la o luka e ni",
- "account.requested_follow": "{name} li wile kute e sina",
+ "account.report": "jan @{name} la o toki e ike tawa lawa",
+ "account.requested": "jan ni o ken e kute sina",
+ "account.requested_follow": "jan {name} li wile kute e sina",
"account.share": "o pana e lipu jan @{name}",
"account.show_reblogs": "o lukin e pana toki tan @{name}",
"account.statuses_counter": "{count, plural, other {toki {counter}}}",
"account.unblock": "o weka ala e jan {name}",
"account.unblock_domain": "o weka ala e ma {domain}",
- "account.unblock_short": "o pini weka",
+ "account.unblock_short": "o weka ala",
"account.unendorse": "lipu jan la o suli ala e ni",
- "account.unfollow": "o pini kute",
+ "account.unfollow": "o kute ala",
"account.unmute": "o len ala e @{name}",
"account.unmute_notifications_short": "o kute e mu tan jan ni",
"account.unmute_short": "o len ala",
"account_note.placeholder": "o luka e ni la sona pi sina taso",
+ "admin.dashboard.daily_retention": "nanpa pi awen jan lon tenpo suno",
+ "admin.dashboard.monthly_retention": "nanpa pi awen jan lon tenpo mun",
"admin.dashboard.retention.average": "sama",
"admin.dashboard.retention.cohort": "tenpo mun open",
"admin.dashboard.retention.cohort_size": "jan sin",
+ "admin.impact_report.instance_accounts": "ni li pakala li weka e lipu jan ni",
+ "admin.impact_report.instance_followers": "jan pi ma mi li weka tan jan kute ni",
+ "admin.impact_report.instance_follows": "ma ante li weka tan jan kute ni",
+ "admin.impact_report.title": "sona pi pakala kulupu",
"alert.rate_limited.message": "tenpo {retry_time, time, medium} la o pali awen",
+ "alert.rate_limited.title": "ilo ni li lili e ken sina",
"alert.unexpected.message": "pakala li lon",
"alert.unexpected.title": "pakala a!",
"alt_text_badge.title": "toki sona sitelen",
+ "alt_text_modal.add_alt_text": "o pana e toki pi sona lukin",
+ "alt_text_modal.add_text_from_image": "o kama jo e toki sitelen tan sitelen ni",
+ "alt_text_modal.cancel": "weka",
+ "alt_text_modal.change_thumbnail": "o ante e sitelen lili",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "jan li ken ala kute la o pana e toki pi sona kalama…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "jan li ken ala lukin la o pana e toki pi sona lukin…",
+ "alt_text_modal.done": "pini",
"announcement.announcement": "toki suli",
"annual_report.summary.archetype.booster": "jan ni li alasa e pona",
"annual_report.summary.archetype.lurker": "jan ni li lukin taso",
"annual_report.summary.archetype.oracle": "jan ni li sona suli",
"annual_report.summary.archetype.pollster": "jan ni li wile sona e pilin jan",
"annual_report.summary.archetype.replier": "jan ni li toki tawa jan mute",
+ "annual_report.summary.followers.followers": "jan kute sina",
"annual_report.summary.followers.total": "ale la {count}",
"annual_report.summary.here_it_is": "toki lili la tenpo sike nanpa {year} li sama ni tawa sina:",
+ "annual_report.summary.highlighted_post.by_favourites": "toki pi olin nanpa wan",
+ "annual_report.summary.highlighted_post.by_reblogs": "toki pi sike nanpa wan",
+ "annual_report.summary.highlighted_post.by_replies": "toki li jo e toki kama pi nanpa wan",
"annual_report.summary.highlighted_post.possessive": "tan jan {name}",
"annual_report.summary.most_used_hashtag.none": "ala",
"annual_report.summary.new_posts.new_posts": "toki suli sin",
- "annual_report.summary.percentile.we_wont_tell_bernie": "mi toki ala e ni tawa jan Peni.",
+ "annual_report.summary.percentile.text": "ni la sina nanpa sewipi jan ale lon {domain}.",
+ "annual_report.summary.percentile.we_wont_tell_bernie": "sona ni li len tawa ale.",
"annual_report.summary.thanks": "sina jan pi kulupu Masoton la sina pona a!",
"attachments_list.unprocessed": "(nasin open)",
"audio.hide": "o len e kalama",
+ "block_modal.remote_users_caveat": "mi pana e wile sina tawa ma {domain}. taso, o sona: ma li ken kepeken nasin len ante la pakala li ken lon. toki pi lukin ale la jan pi ma ala li ken lukin.",
"block_modal.show_less": "o lili e lukin",
- "block_modal.show_more": "o mute e lukin",
- "block_modal.they_cant_mention": "ona li ken ala toki e sina li ken ala alasa e sina",
+ "block_modal.show_more": "o suli e lukin",
+ "block_modal.they_cant_mention": "ona li ken ala toki tawa sina li ken ala kute e sina.",
"block_modal.they_cant_see_posts": "ona li ken ala lukin e toki sina. sina ken ala lukin e toki ona.",
- "block_modal.they_will_know": "ona li sona e ni: sina ala e lukin ona.",
+ "block_modal.they_will_know": "ona li sona e ni: sina weka e lukin ona.",
"block_modal.title": "o weka ala weka e jan",
- "block_modal.you_wont_see_mentions": "nimi ona li lon toki suli la sina lukin ala e toki ni.",
+ "block_modal.you_wont_see_mentions": "jan li toki e nimi ona la sina lukin ala e toki ni.",
"boost_modal.combo": "sina ken luka e nena {combo} tawa ni: sina wile ala luka e nena lon tenpo kama",
"boost_modal.reblog": "o wawa ala wawa e toki?",
- "boost_modal.undo_reblog": "o pini ala pini e wawa toki?",
+ "boost_modal.undo_reblog": "o weka ala weka e wawa toki?",
"bundle_column_error.copy_stacktrace": "o awen e sona pakala lon ilo sina",
"bundle_column_error.error.body": "ilo li ken ala pana e lipu ni. ni li ken tan pakala ilo.",
- "bundle_column_error.error.title": "ike a!",
+ "bundle_column_error.error.title": "pakala a!",
"bundle_column_error.network.body": "mi lukin pana e lipu la, pakala li lon. ken la, pakala li tan ilo nanpa sina. ken la, pakala li tan ilo nanpa suli pi ma kulupu ni.",
"bundle_column_error.network.title": "pakala la ilo sina li toki ala tawa ilo ante",
- "bundle_column_error.retry": "o ni sin",
- "bundle_column_error.return": "o tawa tomo",
+ "bundle_column_error.retry": "o alasa sin",
+ "bundle_column_error.return": "o tawa open",
"bundle_column_error.routing.body": "ilo li sona ala e lipu wile. sina pana ala pana e nasin pona tawa lipu?",
"bundle_column_error.routing.title": "pakala nanpa 404",
"bundle_modal_error.close": "o pini",
"bundle_modal_error.message": "ilo li wile kama e ijo ni, taso pakala li lon.",
- "bundle_modal_error.retry": "o ni sin",
- "closed_registrations.other_server_instructions": "kulupu Masoton li jo e jan lawa mute, la sina ken pali e sijelo lon ma ante, li ken lukin e ijo pi ma ni.",
+ "bundle_modal_error.retry": "o alasa sin",
+ "closed_registrations.other_server_instructions": "kulupu Masoton la lawa mute li lon. sina ken pali e sijelo lon ma ante la sina awen ken lukin e ijo pi ma ni.",
"closed_registrations_modal.description": "tenpo ni la, sina ken ala pali e jan lon ma {domain}. taso sina wile kepeken ilo Masoton la, sina ken pali e jan lon ma ante lon ala ma {domain}.",
"closed_registrations_modal.find_another_server": "o alasa e ma ante",
+ "closed_registrations_modal.preamble": "ilo Masoton li lon ilo wan ala. sina kepeken ma ante la sina ken lukin li ken kute e jan pi ma ni. sina wile la, sina ken pali e ma sin!",
"closed_registrations_modal.title": "sina kama lon kulupu Masoton",
"column.about": "sona",
"column.blocks": "kulupu pi jan weka",
@@ -137,8 +159,11 @@
"column.mutes": "jan len",
"column.notifications": "mu pi sona sin",
"column.pins": "toki sewi",
+ "column.public": "toki pi ma poka ale",
"column_back_button.label": "o tawa monsi",
"column_header.hide_settings": "o len e lawa",
+ "column_header.moveLeft_settings": "poki toki ni o tawa ni ←",
+ "column_header.moveRight_settings": "poki toki ni o tawa ni →",
"column_header.pin": "o sewi",
"column_header.show_settings": "o lukin e lawa",
"column_header.unpin": "o sewi ala",
@@ -154,6 +179,8 @@
"compose.saved.body": "ilo li awen e ijo pana sina.",
"compose_form.direct_message_warning_learn_more": "o kama sona e ijo ante",
"compose_form.encryption_warning": "toki li len ala lon ilo Masoton ꞏ o pana ala e sona suli len lon ilo Masoton",
+ "compose_form.lock_disclaimer": "lipu sina li open, li {locked} ala. jan ale li ken kama kute e sina, li ken lukin e toki sama ni.",
+ "compose_form.lock_disclaimer.lock": "pini",
"compose_form.placeholder": "sina wile toki e seme?",
"compose_form.poll.duration": "tenpo pana",
"compose_form.poll.multiple": "pana mute",
@@ -169,7 +196,7 @@
"compose_form.spoiler.marked": "o weka e toki pi ijo ike ken",
"compose_form.spoiler.unmarked": "o pali e toki pi ijo ike ken",
"compose_form.spoiler_placeholder": "toki pi ijo ike ken (sina ken ala e ni)",
- "confirmation_modal.cancel": "o pini",
+ "confirmation_modal.cancel": "o weka",
"confirmations.block.confirm": "o weka",
"confirmations.delete.confirm": "o weka",
"confirmations.delete.message": "sina wile ala wile weka e toki ni?",
@@ -182,22 +209,31 @@
"confirmations.edit.confirm": "o ante",
"confirmations.edit.message": "sina ante e toki sina la toki pali sina li weka. sina wile ala wile e ni?",
"confirmations.edit.title": "o weka ala weka e toki? ni la, toki li kama toki sin.",
+ "confirmations.follow_to_list.confirm": "o kute, o pana tawa lipu jan",
+ "confirmations.follow_to_list.message": "sina wile pana e {name} tawa lipu jan la o kama kute e ona.",
+ "confirmations.follow_to_list.title": "sina wile ala wile kute?",
"confirmations.logout.confirm": "o weka",
"confirmations.logout.message": "sina wile ala wile weka",
"confirmations.logout.title": "o weka?",
"confirmations.mute.confirm": "o len",
"confirmations.redraft.confirm": "o weka o pali sin e toki",
"confirmations.redraft.message": "pali sin e toki ni la sina wile ala wile weka e ona? sina ni la suli pi toki ni en wawa pi toki ni li weka. kin la toki lon toki ni li jo e mama ala.",
+ "confirmations.redraft.title": "ni li weka li pali sin e toki ni.",
"confirmations.reply.confirm": "toki lon toki ni",
"confirmations.reply.message": "sina toki lon toki ni la toki pali sina li weka. sina wile ala wile e ni?",
- "confirmations.unfollow.confirm": "o pini kute",
+ "confirmations.reply.title": "sina wile ala wile weka e toki lon?",
+ "confirmations.unfollow.confirm": "o kute ala",
"confirmations.unfollow.message": "sina o wile ala wile pini kute e jan {name}?",
+ "confirmations.unfollow.title": "sina wile ala wile pini kute?",
+ "content_warning.hide": "o len",
"content_warning.show": "o lukin",
+ "content_warning.show_more": "o lukin",
"conversation.delete": "o weka e toki ni",
"conversation.mark_as_read": "ni o sin ala",
"conversation.open": "o lukin e toki",
"conversation.with": "lon {names}",
"copy_icon_button.copied": "toki li awen lon ilo sina",
+ "copypaste.copied": "sina jo e toki",
"copypaste.copy_to_clipboard": "o awen lon ilo sina",
"directory.local": "tan {domain} taso",
"directory.new_arrivals": "jan pi kama sin",
@@ -206,15 +242,24 @@
"disabled_account_banner.text": "sina ken ala kepeken e lipu jan sina pi nimi {disabledAccount}.",
"dismissable_banner.community_timeline": "ni li toki pi tenpo poka tawa ale tan jan lon ma lawa pi nimi {domain}.",
"dismissable_banner.dismiss": "o weka",
+ "dismissable_banner.explore_links": "tenpo suno ni la jan pi kulupu ale li toki e ijo sin ni. ijo sin pi jan ante mute li sewi lon lipu ni.",
"domain_block_modal.block": "o weka e ma",
"domain_block_modal.they_wont_know": "ona li sona ala e ni: sina weka e ona.",
+ "domain_block_modal.title": "sina wile weka ala weka e ma?",
"domain_block_modal.you_will_lose_num_followers": "{followersCount, plural, other {jan {followersCountDisplay}}} li kute e sina la, ona kama kute ala e sina. sina kute e {followingCount, plural,other {jan {followingCountDisplay}}} la, sina kama kute ala e ona.",
"domain_block_modal.you_will_lose_relationships": "jan li lon kulupu ni la ona kute e sina la, ona li kama kute ala e sina. jan li lon kulupu ni la sina kute e ona la, sina kama kute ala e ona.",
"domain_block_modal.you_wont_see_posts": "sina ken ala lukin e toki tan jan pi ma ni",
"domain_pill.server": "ma",
"domain_pill.their_handle": "nimi pi ona taso li ni:",
+ "domain_pill.their_server": "ni li ma ona lon ilo. toki ale ona li lon ma ni.",
+ "domain_pill.their_username": "ni li nimi ona lon ma ni. jan mute li lon ma ante la, nimi ona li ken sama.",
"domain_pill.username": "nimi jan",
+ "domain_pill.whats_in_a_handle": "seme li lon nimi?",
+ "domain_pill.who_they_are": "nimi ilo la sona jan en sona ma li lon. ni la sina ken toki tawa jan ni lon .",
+ "domain_pill.your_handle": "nimi sina:",
+ "domain_pill.your_server": "ni li ma sina lon ilo. toki ale sina li lon ma ni. ma li ike tawa sina la, sina ken tawa ma ante. ni la jan kute sina li tawa sama.",
"domain_pill.your_username": "ni li nimi sina. ma sina la, sina taso li jo e ona. jan mute li lon ma ante la, ona li ken jo e nimi sama.",
+ "embed.instructions": "o pana e toki ni la, toki li lon lipu ante. ",
"embed.preview": "ni li jo e sitelen ni:",
"emoji_button.activity": "musi",
"emoji_button.clear": "o weka",
@@ -225,6 +270,7 @@
"emoji_button.not_found": "sitelen pilin ala li lon",
"emoji_button.objects": "ijo",
"emoji_button.people": "jan",
+ "emoji_button.recent": "kepeken suli",
"emoji_button.search": "o alasa...",
"emoji_button.search_results": "ijo pi alasa ni",
"emoji_button.symbols": "sitelen",
@@ -249,6 +295,7 @@
"explore.title": "o alasa",
"explore.trending_links": "sin",
"explore.trending_statuses": "toki",
+ "explore.trending_tags": "kulupu pi lipu suli",
"filter_modal.added.settings_link": "lipu lawa",
"filter_modal.select_filter.expired": "tenpo pini",
"filter_modal.select_filter.search": "o alasa anu pali",
@@ -277,15 +324,23 @@
"hashtag.column_settings.tag_mode.all": "ale ni",
"hashtag.column_settings.tag_mode.any": "wan ni",
"hashtag.column_settings.tag_mode.none": "ala ni",
+ "hashtag.counter_by_accounts": "{count, plural, other {jan {counter}}}",
"hashtag.counter_by_uses": "{count, plural, other {toki {counter}}}",
+ "hashtag.follow": "o kute e kulupu lipu",
+ "hashtag.unfollow": "o kute ala e kulupu lipu",
"home.pending_critical_update.link": "o lukin e ijo ilo sin",
+ "info_button.label": "sona",
+ "interaction_modal.go": "o tawa ma ni",
"interaction_modal.on_another_server": "lon ma ante",
"interaction_modal.on_this_server": "lon ma ni",
"interaction_modal.title.favourite": "o suli e toki {name}",
"interaction_modal.title.follow": "o kute e {name}",
"interaction_modal.title.reblog": "o wawa e toki {name}",
"interaction_modal.title.reply": "o toki lon toki pi jan {name}",
+ "interaction_modal.title.vote": "o pana tawa wile sona pi jan {name}",
+ "interaction_modal.username_prompt": "ni li sama ni: {example}",
"intervals.full.days": "{number, plural, other {suni #}}",
+ "intervals.full.hours": "{number, plural, other {tenpo suli #}}",
"keyboard_shortcuts.blocked": "o lukin e lipu sina pi jan weka",
"keyboard_shortcuts.boost": "o pana sin e toki",
"keyboard_shortcuts.down": "o tawa anpa lon lipu",
@@ -304,10 +359,17 @@
"lightbox.previous": "monsi",
"link_preview.author": "tan {name}",
"lists.delete": "o weka e kulupu lipu",
+ "lists.done": "ale li pini",
"lists.edit": "o ante e kulupu lipu",
+ "lists.list_members_count": "{count, plural, other {jan #}}",
+ "lists.list_name": "nimi kulupu",
+ "lists.new_list_name": "nimi pi kulupu sin",
+ "lists.no_lists_yet": "kulupu li lon ala.",
+ "lists.remove_member": "o weka",
"lists.replies_policy.followed": "jan kute ale",
"lists.replies_policy.list": "jan pi kulupu ni taso",
"lists.replies_policy.none": "jan ala",
+ "lists.search": "o alasa",
"load_pending": "{count, plural, other {ijo sin #}}",
"loading_indicator.label": "ni li kama…",
"mute_modal.title": "sina wile ala wile kute e jan ni?",
@@ -368,7 +430,7 @@
"report.category.title": "ike seme li lon {type} ni",
"report.category.title_account": "lipu",
"report.category.title_status": "toki",
- "report.close": "o pini",
+ "report.close": "ale li pona",
"report.mute": "o kute ala e ona",
"report.mute_explanation": "sina kama ala lukin e ijo pana ona. ona li awen ken kute e sina li awen ken lukin e sina li sona ala e weka kute sina e weka lukin sina.",
"report.next": "awen",
@@ -377,7 +439,7 @@
"report.reasons.other": "ni li ike tan ante",
"report.reasons.spam": "ni li ike tan toki mute",
"report.thanks.title": "sina wile ala lukin e ni anu seme?",
- "report.unfollow": "o pini kute e {name}",
+ "report.unfollow": "o kute ala e {name}",
"report_notification.categories.legal": "ike tawa nasin lawa",
"report_notification.categories.other": "ante",
"search.no_recent_searches": "alasa ala li lon tenpo poka",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 4ee3f40e56..484e6c6b73 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -414,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Takip etmeyen kişilerin bildirimlerini yoksay?",
"ignore_notifications_modal.not_following_title": "Takip etmediğin kişilerin bildirimlerini yoksay?",
"ignore_notifications_modal.private_mentions_title": "İstenmeyen özel bahsetmelerden gelen bildirimleri yoksay?",
+ "info_button.label": "Yardım",
+ "info_button.what_is_alt_text": "
Alternatif metin nedir?
Alternatif metin, görme bozukluğu olan, düşük bant genişliğine sahip bağlantıları olan veya ekstra bağlam arayan kişiler için görsel açıklamaları sağlar.
Net, sade ve nesnel alternatif metin yazarak herkes için erişilebilirliği ve anlaşılabilirliği iyileştirebilirsiniz.
Önemlileri yakalayın
Resimlerdeki metni özetleyin
Düzenli cümle yapısı kullanın
Gereksiz bilgilerden kaçının
Karmaşık görsellerde (şemalar veya haritalar gibi) trendlere ve temel bulgulara odaklanın
",
"interaction_modal.action.favourite": "Devam etmek için, hesabınızı kullanarak beğenmelisiniz.",
"interaction_modal.action.follow": "Devam etmek için, hesabınızı kullanarak takip etmelisiniz.",
"interaction_modal.action.reblog": "Devam etmek için, hesabınızı kullanarak tekrar göndermelisiniz.",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index aa1abff286..277c7df4a7 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -87,7 +87,11 @@
"alert.unexpected.title": "Ой!",
"alt_text_badge.title": "Альтернативний текст",
"alt_text_modal.add_alt_text": "Додати альтернативний текст",
+ "alt_text_modal.add_text_from_image": "Додати текст із малюнку",
"alt_text_modal.cancel": "Скасувати",
+ "alt_text_modal.change_thumbnail": "Змінити мініатюру",
+ "alt_text_modal.describe_for_people_with_hearing_impairments": "Опишіть цю ідею для людей із порушеннями слуху…",
+ "alt_text_modal.describe_for_people_with_visual_impairments": "Опишіть цю ідею для людей із порушеннями зору…",
"alt_text_modal.done": "Готово",
"announcement.announcement": "Оголошення",
"annual_report.summary.archetype.booster": "Мисливець на дописи",
@@ -410,6 +414,8 @@
"ignore_notifications_modal.not_followers_title": "Ігнорувати сповіщення від людей, які не підписані на вас?",
"ignore_notifications_modal.not_following_title": "Ігнорувати сповіщення від людей, на яких ви не підписалися?",
"ignore_notifications_modal.private_mentions_title": "Ігнорувати сповіщення від небажаних приватних згадок?",
+ "info_button.label": "Довідка",
+ "info_button.what_is_alt_text": "
Що таке альтернативний текст?
Альтернативний текст містить описи зображень для людей з вадами зору, низькошвидкісними з'єднаннями або тих, хто шукає додатковий контекст.
Ви можете покращити доступність і розуміння для всіх, написавши чіткий та лаконічний альтернативний текст.
Позначайте важливі елементи
Охоплюйте текст у картинках
Використовуйте звичайну структуру речень
Уникайте надлишкової інформації
Зосередьтеся на тенденціях і ключових висновках у складних візуальних формах (наприклад, діаграмах або картах)
",
"interaction_modal.action.favourite": "若欲繼續,您必須自您的帳號加入最愛。",
"interaction_modal.action.follow": "若欲繼續,您必須自您的帳號跟隨。",
"interaction_modal.action.reblog": "若欲繼續,您必須自您的帳號轉嘟。",
diff --git a/app/javascript/material-icons/400-24px/question_mark-fill.svg b/app/javascript/material-icons/400-24px/question_mark-fill.svg
new file mode 100644
index 0000000000..9b02086c4d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/question_mark-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/material-icons/400-24px/question_mark.svg b/app/javascript/material-icons/400-24px/question_mark.svg
new file mode 100644
index 0000000000..9b02086c4d
--- /dev/null
+++ b/app/javascript/material-icons/400-24px/question_mark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 2d2c0c2bca..d23d789e46 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -451,6 +451,15 @@
background: darken($ui-base-color, 10%);
}
+.dropdown-button.warning {
+ border-color: #b3261e;
+ color: #b3261e;
+
+ &.active {
+ background-color: #f9dedc;
+ }
+}
+
.search__popout__menu__item {
&:hover,
&:active,
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 895872e233..1657fba44b 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -50,6 +50,34 @@
}
}
+.help-button {
+ background: $ui-button-background-color;
+ border: 0;
+ color: $ui-button-color;
+ border-radius: 20px;
+ cursor: pointer;
+ width: 24px;
+ height: 24px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ &:active,
+ &:focus,
+ &:hover {
+ background-color: $ui-button-focus-background-color;
+ }
+
+ &:focus-visible {
+ outline: $ui-button-icon-focus-outline;
+ }
+
+ .icon {
+ width: 14px;
+ height: 14px;
+ }
+}
+
.button {
background-color: $ui-button-background-color;
border: 10px none;
@@ -6091,6 +6119,20 @@ a.status-card {
}
}
+ &__popout {
+ background: var(--dropdown-background-color);
+ backdrop-filter: var(--background-filter);
+ border: 1px solid var(--dropdown-border-color);
+ box-shadow: var(--dropdown-shadow);
+ max-width: 320px;
+ padding: 16px;
+ border-radius: 8px;
+ z-index: 9999 !important;
+ font-size: 14px;
+ line-height: 20px;
+ color: $darker-text-color;
+ }
+
.copy-paste-text {
margin-bottom: 0;
}
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index a8949b7100..09ec0e9e41 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -83,9 +83,12 @@ code {
&__toolbar {
margin-top: 16px;
display: flex;
- justify-content: space-between;
align-items: center;
gap: 16px;
+
+ .character-counter {
+ flex: 0 0 auto;
+ }
}
&.hidden {
@@ -561,11 +564,14 @@ code {
}
.stacked-actions {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
margin-top: 30px;
margin-bottom: 15px;
}
- button:not(.button, .link-button) {
+ .btn {
display: block;
width: 100%;
border: 0;
@@ -582,8 +588,6 @@ code {
cursor: pointer;
font-weight: 500;
outline: 0;
- margin-bottom: 10px;
- margin-inline-end: 10px;
&:last-child {
margin-inline-end: 0;
diff --git a/app/lib/activitypub/adapter.rb b/app/lib/activitypub/adapter.rb
index 5b9437eb8d..9122b07483 100644
--- a/app/lib/activitypub/adapter.rb
+++ b/app/lib/activitypub/adapter.rb
@@ -17,7 +17,7 @@ class ActivityPub::Adapter < ActiveModelSerializers::Adapter::Base
options = serialization_options(options)
serialized_hash = serializer.serializable_hash(options.merge(named_contexts: named_contexts, context_extensions: context_extensions))
- serialized_hash = serialized_hash.select { |k, _| options[:fields].include?(k) } if options[:fields]
+ serialized_hash = serialized_hash.slice(*options[:fields]) if options[:fields]
serialized_hash = self.class.transform_key_casing!(serialized_hash, instance_options)
{ '@context': serialized_context(named_contexts, context_extensions) }.merge(serialized_hash)
diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml
index afeeef0c6d..5e9aa02d68 100644
--- a/app/views/auth/registrations/new.html.haml
+++ b/app/views/auth/registrations/new.html.haml
@@ -72,7 +72,7 @@
.fields-group
= f.input :agreement,
as: :boolean,
- label: t('auth.user_agreement_html', privacy_policy_path: privacy_policy_path, terms_of_service_path: terms_of_service_path),
+ label: TermsOfService.live.exists? ? t('auth.user_agreement_html', privacy_policy_path: privacy_policy_path, terms_of_service_path: terms_of_service_path) : t('auth.user_privacy_agreement_html', privacy_policy_path: privacy_policy_path),
required: false,
wrapper: :with_label
diff --git a/bin/prometheus_exporter b/bin/prometheus_exporter
new file mode 100755
index 0000000000..7e0304de9e
--- /dev/null
+++ b/bin/prometheus_exporter
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby
+# frozen_string_literal: true
+
+#
+# This file was generated by Bundler.
+#
+# The application 'prometheus_exporter' is installed as part of a gem, and
+# this file is here to facilitate running it.
+#
+
+ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
+
+bundle_binstub = File.expand_path("bundle", __dir__)
+
+if File.file?(bundle_binstub)
+ if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
+ load(bundle_binstub)
+ else
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
+Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
+ end
+end
+
+require "rubygems"
+require "bundler/setup"
+
+load Gem.bin_path("prometheus_exporter", "prometheus_exporter")
diff --git a/config/initializers/prometheus_exporter.rb b/config/initializers/prometheus_exporter.rb
new file mode 100644
index 0000000000..197777e3b6
--- /dev/null
+++ b/config/initializers/prometheus_exporter.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true'
+ if ENV['MASTODON_PROMETHEUS_EXPORTER_LOCAL'] == 'true'
+ require 'prometheus_exporter/server'
+ require 'prometheus_exporter/client'
+
+ # bind is the address, on which the webserver will listen
+ # port is the port that will provide the /metrics route
+ server = PrometheusExporter::Server::WebServer.new bind: ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_HOST', 'localhost'), port: ENV.fetch('MASTODON_PROMETHEUS_EXPORTER_PORT', '9394').to_i
+ server.start
+
+ # wire up a default local client
+ PrometheusExporter::Client.default = PrometheusExporter::LocalClient.new(collector: server.collector)
+ end
+
+ if ENV['MASTODON_PROMETHEUS_EXPORTER_WEB_DETAILED_METRICS'] == 'true'
+ # Optional, as those metrics might generate extra overhead and be redundant with what OTEL provides
+ require 'prometheus_exporter/middleware'
+
+ # Per-action/controller request stats like HTTP status and timings
+ Rails.application.middleware.unshift PrometheusExporter::Middleware
+ end
+end
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index 5b281c4339..fca0bec422 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -22,6 +22,48 @@ Sidekiq.configure_server do |config|
end
end
+ if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true'
+ require 'prometheus_exporter'
+ require 'prometheus_exporter/instrumentation'
+
+ config.on :startup do
+ # Ruby process metrics (memory, GC, etc)
+ PrometheusExporter::Instrumentation::Process.start type: 'sidekiq'
+
+ # Sidekiq process metrics (concurrency, busy, etc)
+ PrometheusExporter::Instrumentation::SidekiqProcess.start
+
+ # ActiveRecord metrics (connection pool usage)
+ PrometheusExporter::Instrumentation::ActiveRecord.start(
+ custom_labels: { type: 'sidekiq' },
+ config_labels: [:database, :host]
+ )
+
+ if ENV['MASTODON_PROMETHEUS_EXPORTER_SIDEKIQ_DETAILED_METRICS'] == 'true'
+ # Optional, as those metrics might generate extra overhead and be redundant with what OTEL provides
+
+ # Per-job metrics
+ config.server_middleware do |chain|
+ chain.add PrometheusExporter::Instrumentation::Sidekiq
+ end
+ config.death_handlers << PrometheusExporter::Instrumentation::Sidekiq.death_handler
+
+ # Per-queue metrics for queues handled by this process (size, latency, etc)
+ # They will be reported by every process handling those queues, so do not sum them up
+ PrometheusExporter::Instrumentation::SidekiqQueue.start
+
+ # Global Sidekiq metrics (size of the global queues, number of jobs, etc)
+ # Will be the same for every Sidekiq process
+ PrometheusExporter::Instrumentation::SidekiqStats.start
+ end
+ end
+
+ at_exit do
+ # Wait for the latest metrics to be reported before shutting down
+ PrometheusExporter::Client.default.stop(wait_timeout_seconds: 10)
+ end
+ end
+
config.server_middleware do |chain|
chain.add Mastodon::SidekiqMiddleware
end
diff --git a/config/locales/activerecord.ar.yml b/config/locales/activerecord.ar.yml
index cacbf0714f..7426e21e21 100644
--- a/config/locales/activerecord.ar.yml
+++ b/config/locales/activerecord.ar.yml
@@ -15,6 +15,9 @@ ar:
user/invite_request:
text: الغرض
errors:
+ attributes:
+ domain:
+ invalid: ليس بإسم نطاق صالح
models:
account:
attributes:
diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml
index a6108ec0ca..9b17b75939 100644
--- a/config/locales/activerecord.el.yml
+++ b/config/locales/activerecord.el.yml
@@ -23,6 +23,8 @@ el:
models:
account:
attributes:
+ fields:
+ fields_with_values_missing_labels: περιέχει τιμές με ετικέτες που λείπουν
username:
invalid: μόνο γράμματα, αριθμοί και κάτω παύλες
reserved: είναι δεσμευμένο
diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml
index 5dbd2e3d78..9442c3aae3 100644
--- a/config/locales/activerecord.ko.yml
+++ b/config/locales/activerecord.ko.yml
@@ -23,6 +23,8 @@ ko:
models:
account:
attributes:
+ fields:
+ fields_with_values_missing_labels: 라벨 없는 값들이 존재합니다
username:
invalid: 영문자와 숫자, 밑줄만 사용 가능합니다
reserved: 예약되어 있습니다
diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml
index 06b3587008..62edc03c0e 100644
--- a/config/locales/activerecord.pl.yml
+++ b/config/locales/activerecord.pl.yml
@@ -23,6 +23,8 @@ pl:
models:
account:
attributes:
+ fields:
+ fields_with_values_missing_labels: zawiera wartości z brakującymi etykietami
username:
invalid: może składać się tylko z liter, cyfr i podkreślników
reserved: jest zarezerwowana
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 5eea1390ce..556c47b10b 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -834,6 +834,7 @@ ar:
batch:
remove_from_report: إزالة من التقرير
report: إبلاغ
+ contents: المحتوى
deleted: محذوف
favourites: المفضلة
history: تاريخ التعديلات
@@ -910,6 +911,9 @@ ar:
search: البحث
title: الوسوم
updated_msg: تم تحديث إعدادات الوسوم بنجاح
+ terms_of_service:
+ save_draft: حفظ المسودة
+ title: شروط الخدمة
title: الإدارة
trends:
allow: السماح
@@ -1813,6 +1817,8 @@ ar:
too_late: فات الأوان للطعن في هذه العقوبة
tags:
does_not_match_previous_name: لا يطابق الإسم السابق
+ terms_of_service:
+ title: شروط الخدمة
themes:
contrast: ماستدون (تباين عالٍ)
default: ماستدون (داكن)
@@ -1873,6 +1879,8 @@ ar:
further_actions_html: إذا لم يكن هذا أنت، نوصي لك %{action} على الفور وتمكين المصادقة ذات العاملين للحفاظ على أمان حسابك.
subject: تم النفاذ عبر حسابك من خلال عنوان إيبي جديد
title: تسجيل دخول جديد
+ terms_of_service_changed:
+ title: تحديث مهم
warning:
appeal: تقديم طعن
appeal_description: إذا كنت تعتقد أن هذا خطأ، يمكنك تقديم طعن إلى فريق %{instance}.
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index acd103a250..c602b36c8c 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -1206,6 +1206,7 @@ ca:
too_fast: Formulari enviat massa ràpid, torna a provar-ho.
use_security_key: Usa clau de seguretat
user_agreement_html: He llegit i estic d'acord amb les condicions de servei i la política de privadesa
+ user_privacy_agreement_html: He llegit i estic d'acord amb la política de privacitat
author_attribution:
example_title: Text d'exemple
hint_html: Escriviu notícies o un blog fora de Mastodon? Controleu quin crèdit rebeu quan es comparteixen aquí.
diff --git a/config/locales/da.yml b/config/locales/da.yml
index c571c09902..b567fa016c 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -1209,6 +1209,7 @@ da:
too_fast: Formularen indsendt for hurtigt, forsøg igen.
use_security_key: Brug sikkerhedsnøgle
user_agreement_html: Jeg accepterer Tjenestevilkår og Fortrolighedspolitik
+ user_privacy_agreement_html: Jeg accepterer fortrolighedspolitikken
author_attribution:
example_title: Eksempeltekst
hint_html: Skriver du nyheder eller blogartikler uden for Mastodon? Styr, hvordan man bliver krediteret, når disse deles på Mastodon.
diff --git a/config/locales/de.yml b/config/locales/de.yml
index d1d557432b..17c5098e20 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1209,6 +1209,7 @@ de:
too_fast: Formular zu schnell übermittelt. Bitte versuche es erneut.
use_security_key: Sicherheitsschlüssel verwenden
user_agreement_html: Ich stimme den Nutzungsbedingungen sowie der Datenschutzerklärung zu
+ user_privacy_agreement_html: Ich stimme der Datenschutzerklärung zu
author_attribution:
example_title: Beispieltext
hint_html: Schreibst du außerhalb von Mastodon journalistische Artikel oder andere Texte, beispielsweise in einem Blog? Lege hier fest, wann auf dein Profil verwiesen werden soll, wenn Links zu deinen Werken auf Mastodon geteilt werden.
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 1cd14be7f9..0c40ffabdc 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -1209,6 +1209,7 @@ el:
too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά.
use_security_key: Χρήση κλειδιού ασφαλείας
user_agreement_html: Έχω διαβάσει με τους όρους παροχής υπηρεσιών και την πολιτική απορρήτου
+ user_privacy_agreement_html: Έχω διαβάσει και συμφωνώ με την πολιτική απορρήτου
author_attribution:
example_title: Δείγμα κειμένου
hint_html: Γράφεις ειδήσεις ή blog άρθρα εκτός του Mastodon; Έλεγξε πώς μπορείς να πάρεις τα εύσημα όταν μοιράζονται στο Mastodon.
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index 7a26de73c0..c8c3e486b7 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -1209,6 +1209,7 @@ en-GB:
too_fast: Form submitted too fast, try again.
use_security_key: Use security key
user_agreement_html: I have read and agree to the terms of service and privacy policy
+ user_privacy_agreement_html: I have read and agree to the privacy policy
author_attribution:
example_title: Sample text
hint_html: Are you writing news or blog articles outside of Mastodon? Control how you get credited when they are shared on Mastodon.
diff --git a/config/locales/en.yml b/config/locales/en.yml
index ab76b462ee..fdf73bad9e 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1209,6 +1209,7 @@ en:
too_fast: Form submitted too fast, try again.
use_security_key: Use security key
user_agreement_html: I have read and agree to the terms of service and privacy policy
+ user_privacy_agreement_html: I have read and agree to the privacy policy
author_attribution:
example_title: Sample text
hint_html: Are you writing news or blog articles outside of Mastodon? Control how you get credited when they are shared on Mastodon.
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 400b03958e..d56d67e28e 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -1209,6 +1209,7 @@ eo:
too_fast: Formularo sendita tro rapide, klopodu denove.
use_security_key: Uzi sekurecan ŝlosilon
user_agreement_html: Mi legis kaj konsentas pri la servokondiĉoj kaj privateca politiko
+ user_privacy_agreement_html: Mi legis kaj konsentis pri privatpolitiko
author_attribution:
example_title: Ekzempla teksto
hint_html: Ĉu vi skribas novaĵojn aŭ blogartikolojn ekster Mastodon? Kontrolu kiel vi estas kreditita kiam ili estas kunhavataj ĉe Mastodon.
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index e3bcc5e5b5..2f313da8d4 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -1209,6 +1209,7 @@ es-AR:
too_fast: Formulario enviado demasiado rápido, probá de nuevo.
use_security_key: Usar la llave de seguridad
user_agreement_html: Leí y acepto los términos del servicio y la política de privacidad
+ user_privacy_agreement_html: Leí y acepto la política de privacidad
author_attribution:
example_title: Texto de ejemplo
hint_html: "¿Escribís artículos de noticias o de blog fuera de Mastodon? Controlá cómo se te acredita cuando se comparten en Mastodon."
diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml
index 6bdee869e7..135ca6cc78 100644
--- a/config/locales/es-MX.yml
+++ b/config/locales/es-MX.yml
@@ -1209,6 +1209,7 @@ es-MX:
too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo.
use_security_key: Usar la clave de seguridad
user_agreement_html: He leído y acepto las condiciones del servicio y la política de privacidad
+ user_privacy_agreement_html: Leí y acepto la política de privacidad
author_attribution:
example_title: Texto de ejemplo
hint_html: "¿Estás escribiendo artículos de noticias o blogs fuera de Mastodon? Controla cómo te acreditan cuando se comparten en Mastodon."
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 5e3374ae8c..7f7473f18f 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -1209,6 +1209,7 @@ es:
too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo.
use_security_key: Usar la clave de seguridad
user_agreement_html: He leído y acepto los términos del servicio y la política de privacidad
+ user_privacy_agreement_html: He leído y acepto la política de privacidad
author_attribution:
example_title: Texto de ejemplo
hint_html: "¿Escribes noticias o artículos de blog fuera de Mastodon? Controla cómo se te acredita cuando se comparten en Mastodon."
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 97a8da3704..97943a46bb 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -25,6 +25,7 @@ eu:
admin:
account_actions:
action: Burutu ekintza
+ already_silenced: Kontu hau dagoeneko mugatua izan da.
already_suspended: Kontu hau dagoeneko kanporatua izan da.
title: Burutu moderazio ekintza %{acct} kontuan
account_moderation_notes:
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 8f96137bdb..8a5d36e1e3 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -388,7 +388,7 @@ fa:
website: پایگاه وب
disputes:
appeals:
- empty: هیچ درخواست تجدیدنظری یافت نشد
+ empty: هیچ درخواست تجدیدنظری یافت نشد.
title: درخواستهای تجدیدنظر
domain_allows:
add_new: مجاز کردن دامنه
@@ -672,7 +672,7 @@ fa:
actions:
delete_html: پست های توهین آمیز را حذف کنید
mark_as_sensitive_html: رسانه پست های توهین آمیز را به عنوان حساس علامت گذاری کنید
- silence_html: دسترسی @%{acct} را به شدت محدود کنید و نمایه و محتویات آنها را فقط برای افرادی که قبلاً آنها را دنبال میکنند قابل مشاهده کنید یا به صورت دستی نمایه آن را جستجو کنید.
+ silence_html: دسترسی @%{acct} را به شدت محدود کنید و نمایه و محتویات آنها را فقط برای افرادی که قبلاً آنها را دنبال میکنند قابل مشاهده کنید یا به صورت دستی نمایه آن را جستجو کنید
suspend_html: تعلیق @%{acct}، غیرقابل دسترس کردن نمایه و محتوای آنها و تعامل با آنها غیر ممکن
close_report: 'علامت گذاری گزارش #%{id} به عنوان حل شده است'
close_reports_html: "همه گزارشها در برابر @%{acct} را بهعنوان حلوفصل علامتگذاری کنید"
@@ -1209,6 +1209,7 @@ fa:
too_fast: فرم با سرعت بسیار زیادی فرستاده شد، دوباره تلاش کنید.
use_security_key: استفاده از کلید امنیتی
user_agreement_html: من خوانده ام و موافقم شرایط خدمات و سیاست حفظ حریم خصوصی
+ user_privacy_agreement_html: من خطمشی رازداری را خواندهام و با آن موافقم
author_attribution:
example_title: متن نمونه
hint_html: آیا در خارج از ماستودون اخبار یا مقالات وبلاگ می نویسید؟ نحوه دریافت اعتبار زمانی که آنها در ماستودون به اشتراک گذاشته می شوند را کنترل کنید.
@@ -1434,8 +1435,8 @@ fa:
other: شما میخواهید لیست حسابهای بیصدا را جایگزین کنید با حداکثر %{count} حساب از %{filename}.
preambles:
blocking_html:
- one: شما در شرف مسدود کردن حداکثر %{count} حساب از %{filename} هستید.
- other: شما در شرف مسدود کردن حداکثر %{count} حساب از %{filename} هستید.
+ one: شما در شرف مسدود کردن حداکثر %{count} حساب از %{filename} هستید.
+ other: شما در شرف مسدود کردن حداکثر %{count} حساب از %{filename} هستید.
bookmarks_html:
one: شما میخواهید تا %{count} پست را از %{filename} به نشانکها خود اضافه کنید.
other: شما میخواهید تا %{count} پست را از %{filename} به نشانکها خود اضافه کنید.
@@ -1449,10 +1450,8 @@ fa:
one: شما در حال افزودن %{count} حساب از %{filename} به لیستهای خود هستید. اگر لیستی برای افزودن وجود نداشته باشد، لیست های جدیدی ایجاد می شود.
other: شما میخواهید تا %{count} حساب از %{filename} را به فهرستهای خود اضافه کنید. اگر لیستی برای افزودن وجود نداشته باشد، لیست های جدیدی ایجاد می شود.
muting_html:
- one: 'شما در حال انجام بی صدا تا %{count} حساب کاربری از %{filename}.
-
- '
- other:
+ one: شما در حال بی صدا کردن تا %{count} حساب از %{filename} هستید.
+ other: شما در حال بی صدا کردن تا %{count} حساب از %{filename} هستید.
preface: میتوانید دادههایی را که از کارسازی دیگر برونریختهاید، چون سیاههای از افرادی که پی گرفته یا مسدود میکنید را درونریزی کنید.
recent_imports: واردشدههای اخیر
states:
@@ -1883,7 +1882,7 @@ fa:
formats:
default: "%d %b %Y, %H:%M"
month: "%b %Y"
- time: "%OH:%OM"
+ time: "%H:%M"
with_time_zone: "%b %d, %Y, %H:%M %Z"
translation:
errors:
@@ -1965,7 +1964,7 @@ fa:
none: هشدار برای %{acct}
sensitive: فرستههایتان روی %{acct} از اکنون به عنوان حسّاس علامت خواهند خورد
silence: حساب %{acct} شما محدود شده است
- suspend: حساب %{acct} شما معلق شده است
+ suspend: حساب %{acct} شما معلق شده است
title:
delete_statuses: فرستهها برداشته شدند
disable: حساب متوقف شده است
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 064ca67cbf..c7148772b8 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -1209,6 +1209,7 @@ fi:
too_fast: Lomake lähetettiin liian nopeasti, yritä uudelleen.
use_security_key: Käytä suojausavainta
user_agreement_html: Olen lukenut ja hyväksyn käyttöehdot ja tietosuojakäytännön
+ user_privacy_agreement_html: Olen lukenut ja hyväksyn tietosuojakäytännön
author_attribution:
example_title: Esimerkkiteksti
hint_html: Kirjoitatko uutisia tai blogitekstejä Mastodonin ulkopuolella? Määrää, kuinka tulet tunnustetuksi, kun niitä jaetaan Mastodonissa.
diff --git a/config/locales/fo.yml b/config/locales/fo.yml
index 441217ec0e..df99926a4c 100644
--- a/config/locales/fo.yml
+++ b/config/locales/fo.yml
@@ -1206,6 +1206,7 @@ fo:
too_fast: Oyðublaðið innsent ov skjótt, royn aftur.
use_security_key: Brúka trygdarlykil
user_agreement_html: Eg havi lisið og taki undir við tænastutreytunum og privatlívspolitikkinum
+ user_privacy_agreement_html: I have lisið og taki undir við privatlívspolitikkinum
author_attribution:
example_title: Tekstadømi
hint_html: Skrivar tú tíðindi ella greinar til bloggin uttanfyri Mastodon? Her kanst tú stýra, hvussu tú verður tilsipað/ur, tá ið títt tilfar verður deilt á Mastodon.
diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml
index 4fefee7ae0..37c34b7678 100644
--- a/config/locales/fr-CA.yml
+++ b/config/locales/fr-CA.yml
@@ -1212,6 +1212,7 @@ fr-CA:
too_fast: Formulaire envoyé trop rapidement, veuillez réessayer.
use_security_key: Utiliser la clé de sécurité
user_agreement_html: J'ai lu et j'accepte les conditions d'utilisation et la politique de confidentialité
+ user_privacy_agreement_html: J’ai lu et j’accepte la politique de confidentialité
author_attribution:
example_title: Exemple de texte
hint_html: Vous écrivez des nouvelles ou des articles de blog en dehors de Mastodon ? Contrôlez la façon dont vous êtes crédité lorsqu'ils sont partagés sur Mastodon.
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 3000f9a4a9..0c1e248467 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -1212,6 +1212,7 @@ fr:
too_fast: Formulaire envoyé trop rapidement, veuillez réessayer.
use_security_key: Utiliser la clé de sécurité
user_agreement_html: J'ai lu et j'accepte les conditions d'utilisation et la politique de confidentialité
+ user_privacy_agreement_html: J’ai lu et j’accepte la politique de confidentialité
author_attribution:
example_title: Exemple de texte
hint_html: Vous écrivez des nouvelles ou des articles de blog en dehors de Mastodon ? Contrôlez la façon dont vous êtes crédité lorsqu'ils sont partagés sur Mastodon.
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 63a2b9b340..fe0b00fec2 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -1209,6 +1209,7 @@ gl:
too_fast: Formulario enviado demasiado rápido, inténtao outra vez.
use_security_key: Usa chave de seguridade
user_agreement_html: Lin e acepto os termos do servizo e a política de privacidade
+ user_privacy_agreement_html: Lin e acepto a política de privacidade
author_attribution:
example_title: Texto de mostra
hint_html: Escribes novas ou artigos nun blog alleos a Mastodon? Xestiona o xeito en que podes dar crédito da túa autoría cando os compartes en Mastodon.
diff --git a/config/locales/he.yml b/config/locales/he.yml
index eea4c63179..0a68d338f0 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -1247,6 +1247,7 @@ he:
too_fast: הטופס הוגש מהר מדי, נסה/י שוב.
use_security_key: שימוש במפתח אבטחה
user_agreement_html: קראתי וזו הסכמתי למסמך תנאי השירות ומדיניות הפרטיות
+ user_privacy_agreement_html: קראתי והסכמתי למדיניות הפרטיות
author_attribution:
example_title: טקסט לדוגמה
hint_html: האם יש לך בלוג או טור חדשות שמתפרסם מחוץ למסטודון? ניתן לשלוט איך יוצג הקרדיט שלך כשמשתפים את הלינק במסטודון.
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index da51e3b5a9..722c361710 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -1209,6 +1209,7 @@ hu:
too_fast: Túl gyorsan küldted el az űrlapot, próbáld később.
use_security_key: Biztonsági kulcs használata
user_agreement_html: Elolvastam és egyetértek a felhasználási feltételekkel és az adatvédelmi nyilatkozattal
+ user_privacy_agreement_html: Elolvastam és egyetértek az adatvédemi nyilatkozattal
author_attribution:
example_title: Mintaszöveg
hint_html: Mastodonon kívül írsz híreket vagy blogbejegyzéseket? Szabályozd, hogyan tüntethetnek fel szerzőként, amikor Mastodonon osztják meg őket.
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 229cbb56bf..c4172f238d 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -1213,6 +1213,7 @@ is:
too_fast: Innfyllingarform sent inn of hratt, prófaðu aftur.
use_security_key: Nota öryggislykil
user_agreement_html: Ég hef lesið og samþykkt þjónustuskilmálana og stefnuna um persónuvernd
+ user_privacy_agreement_html: Ég hef lesið og samþykkt persónuverndarstefnuna
author_attribution:
example_title: Sýnitexti
hint_html: Ertu að skrifa fréttir eða bloggfærslur utan Mastodon? Stýrðu því hvernig vitnað er í þig þegar þeim er deilt á Mastodon.
diff --git a/config/locales/it.yml b/config/locales/it.yml
index a561079f3a..734860f3bb 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -1211,6 +1211,7 @@ it:
too_fast: Modulo inviato troppo velocemente, riprova.
use_security_key: Usa la chiave di sicurezza
user_agreement_html: Ho letto e accetto i termini di servizio e l'informativa sulla privacy
+ user_privacy_agreement_html: Ho letto e accetto l'informativa sulla privacy
author_attribution:
example_title: Testo di esempio
hint_html: Stai scrivendo notizie o articoli di blog al di fuori di Mastodon? Controlla come vieni accreditato quando vengono condivisi su Mastodon.
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 201bdc1a08..77670f0ec3 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -1190,6 +1190,7 @@ ja:
too_fast: フォームの送信が速すぎます。もう一度やり直してください。
use_security_key: セキュリティキーを使用
user_agreement_html: 利用規約 および プライバシーポリシーを読み、同意します。
+ user_privacy_agreement_html: プライバシーポリシーを読み、同意します
author_attribution:
example_title: サンプルテキスト
hint_html: Mastodonの外でニュースやブログなどを執筆しているユーザーは、Mastodonで自分の記事が共有されたときに著者情報を表示させることができます。
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index 314029a89e..11cc8b3318 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -413,6 +413,7 @@ kab:
account: Ameskar
application: Asnas
back_to_account: Tuɣalin ɣer usebter n umiḍan
+ contents: Agbur
deleted: Yettwakkes
favourites: Imenyafen
language: Tutlayt
@@ -432,6 +433,9 @@ kab:
tags:
search: Anadi
title: Ihacṭagen
+ terms_of_service:
+ draft: Arewway
+ publish: Asuffeɣ
title: Tadbelt
trends:
allow: Sireg
@@ -781,6 +785,7 @@ kab:
delete: Tukksa n umiḍan
development: Taneflit
edit_profile: Ẓreg amaɣnu
+ export: Sifeḍ
import: Kter
import_and_export: Taktert d usifeḍ
migrate: Tunigin n umiḍan
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index f7469ce25a..1575e839e1 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -301,7 +301,7 @@ ko:
update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다"
deleted_account: 계정을 삭제했습니다
empty: 로그를 찾을 수 없습니다
- filter_by_action: 행동으로 거르기
+ filter_by_action: 동작 별 필터
filter_by_user: 사용자로 거르기
title: 감사 로그
unavailable_instance: "(도메인네임 사용불가)"
@@ -925,9 +925,12 @@ ko:
generates:
action: 생성
chance_to_review_html: "생성된 이용 약관은 자동으로 게시되지 않을 것입니다. 결과를 확인할 기회가 있습니다. 진행하려면 필요한 정보들을 입력하세요."
+ explanation_html: 제공되는 이용약관 틀은 정보 제공만을 목적으로 하며 법률 조언으로 해석하면 안 됩니다. 귀하의 상황에 맞는 법률 자문을 받아주시기 바랍니다.
title: 이용 약관 설정
history: 역사
live: 활성
+ no_history: 기록된 이용약관 변경이 아직 없습니다.
+ no_terms_of_service_html: 현재 설정된 이용약관이 없습니다. 이용약관은 명확성을 제공하고 귀하와 사용자간 분쟁에서 발생할 수 있는 책임으로부터 보호할 수 있습니다.
notified_on_html: 사용자들이 %{date}에 알림을 받았습니다
notify_users: 사용자들에게 알리기
preview:
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index dbca48dd37..7659cfcbfb 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -456,8 +456,8 @@ lt:
availability:
title: Prieinamumas
warning: Paskutinis bandymas prisijungti prie šio serverio buvo nesėkmingas
- back_to_all: Visi
- back_to_limited: Apribotas
+ back_to_all: Viskas
+ back_to_limited: Apribota
back_to_warning: Įspėjimas
by_domain: Domenas
content_policies:
@@ -864,6 +864,7 @@ lt:
self_destruct: Kadangi %{domain} uždaromas, turėsi tik ribotą prieigą prie savo paskyros.
view_strikes: Peržiūrėti ankstesnius savo paskyros pažeidimus
user_agreement_html: Perskaičiau ir sutinku su paslaugų sąlygomis ir privatumo politika
+ user_privacy_agreement_html: Perskaičiau ir sutinku su privatumo politika
author_attribution:
example_title: Teksto pavyzdys
hint_html: Ar rašote naujienas ar tinklaraščio straipsnius už „Mastodon“ ribų? Valdykite, kaip būsite nurodomi, kai jais bus bendrinama platformoje „Mastodon“.
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 9f71900040..9f05104153 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -1209,6 +1209,7 @@ nl:
too_fast: Formulier is te snel ingediend. Probeer het nogmaals.
use_security_key: Beveiligingssleutel gebruiken
user_agreement_html: Ik heb de gebruiksvoorwaarden en het privacybeleid gelezen en ga ermee akkoord
+ user_privacy_agreement_html: Ik heb het privacybeleid gelezen en ga ermee akkoord
author_attribution:
example_title: Voorbeeldtekst
hint_html: Schrijf je nieuws- of blogartikelen buiten Mastodon? Bepaal hoe je geattribueerd wordt als deze gedeeld worden op Mastodon.
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 83a9674f84..e2e2860059 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -285,6 +285,7 @@ pl:
enable_user_html: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}"
memorialize_account_html: "%{name} nadał(a) kontu %{target} status in memoriam"
promote_user_html: "%{name} podniósł(a) uprawnienia użytkownikowi %{target}"
+ publish_terms_of_service_html: "%{name} opublikował aktualizacje warunków korzystania z usługi"
reject_appeal_html: "%{name} zatwierdził(-a) odwołanie decyzji moderacyjnej od %{target}"
reject_user_html: "%{name} odrzucił rejestrację od %{target}"
remove_avatar_user_html: "%{name} usunął(-ęła) awatar użytkownikowi %{target}"
@@ -955,9 +956,36 @@ pl:
title: Hashtagi
updated_msg: Pomyślnie uaktualniono ustawienia hashtagów
terms_of_service:
+ back: Powrót do warunków świadczenia usług
+ changelog: Co się zmieniło
+ create: Użyj własnego
+ current: Aktualna wersja
draft: Szkic
generate: Użyj szablonu
+ generates:
+ action: Wygeneruj
+ chance_to_review_html: "Wygenerowane warunki świadczenia usług nie zostaną automatycznie opublikowane. Będziesz miał szansę je sprawdzić raz jeszcze. Wypełnij wymagane pola, aby kontynuować."
+ explanation_html: Dostarczany wzór warunków świadczenia usług służy wyłącznie celom informacyjnym i nie powinien być interpretowany jako porada prawna w odniesieniu do żadnego przedmiotu. Proszę skonsultować się ze swoim doradcą prawnym w sprawie swojej sytuacji i konkretnych kwestii prawnych, które państwo posiadają.
+ title: Warunki korzystania z usługi
+ history: Historia
+ live: Rzeczywiste
+ no_history: Nie ma jeszcze zapisanych zmian w warunkach korzystania z usługi.
+ no_terms_of_service_html: Obecnie nie masz żadnych skonfigurowanych warunków korzystania z usługi. Warunki korzystania z usługi mają zapewnić jasność i ochronę przed potencjalnymi zobowiązaniami w sporach z użytkownikami.
+ notified_on_html: Użytkownicy powiadomieni o %{date}
+ notify_users: Powiadom użytkowników
+ preview:
+ explanation_html: 'E-mail zostanie wysłany do %{display_count} użytkowników, którzy zarejestrowali się przed %{date}. Otrzymają oni wiadomość o następującej treści:'
+ send_preview: Wyślij podgląd do %{email}
+ send_to_all:
+ few: Wyślij %{display_count} wiadomości e-mail
+ many: Wyślij %{display_count} wiadomości e-mail
+ one: Wyślij %{display_count} wiadomość e-mail
+ other: Wyślij %{display_count} wiadomości e-mail
+ title: Podgląd warunków powiadomienia o usłudze
+ publish: Publikuj
+ published_on_html: Opublikowano w dniu %{date}
save_draft: Zapisz wersję roboczą
+ title: Warunki korzystania z usługi
title: Administracja
trends:
allow: Zezwól
@@ -1197,6 +1225,7 @@ pl:
set_new_password: Ustaw nowe hasło
setup:
email_below_hint_html: Sprawdź folder ze spamem lub poproś o inny link potwierdzający. Możesz poprawić swój adres e-mail, jeśli jest niepoprawny.
+ email_settings_hint_html: Kliknij link, który wysłaliśmy do %{email} , aby rozpocząć korzystanie z Mastodon. Poczekamy tutaj.
link_not_received: Nie otrzymano linku?
new_confirmation_instructions_sent: Za kilka minut otrzymasz nowy e-mail z linkiem potwierdzającym!
title: Sprawdź swoją skrzynkę odbiorczą
@@ -1205,6 +1234,7 @@ pl:
title: Zaloguj się do %{domain}
sign_up:
manual_review: Rejestracja na %{domain} przechodzi przez ręczne sprawdzanie przez naszych moderatorów. Aby pomóc nam usprawnić ten proces, napisz coś o sobie oraz dlaczego chcesz założyć konto na %{domain}.
+ preamble: Z kontem na tym serwerze Mastodon będziesz mógł obserwować każdą inną osobę w sieci, niezależnie od miejsca przechowywania ich konta.
title: Skonfigurujmy Twoje konto na %{domain}.
status:
account_status: Stan konta
@@ -1435,6 +1465,68 @@ pl:
merge_long: Zachowaj obecne wpisy i dodaj nowe
overwrite: Nadpisz
overwrite_long: Zastąp obecne wpisy nowymi
+ overwrite_preambles:
+ blocking_html:
+ few: Zamierzasz zastąpić swoją listę bloków maksymalnie %{count} kontami z %{filename}.
+ many: Zamierzasz zastąpić swoją listę bloków maksymalnie %{count} kontami z %{filename}.
+ one: Zamierzasz zastąpić swoją listę bloków maksymalnie %{count} kontem z %{filename}.
+ other: Zamierzasz zastąpić swoją listę bloków maksymalnie %{count} kontami z %{filename}.
+ bookmarks_html:
+ few: Zamierzasz zastąpić swoje zakładki maksymalnie %{count} wpisami z %{filename}.
+ many: Zamierzasz zastąpić swoje zakładki maksymalnie %{count} wpisami z %{filename}.
+ one: Zamierzasz zastąpić swoje zakładki maksymalnie %{count} wpisem z %{filename}.
+ other: Zamierzasz zastąpić swoje zakładki maksymalnie %{count} wpisami z %{filename}.
+ domain_blocking_html:
+ few: Zamierzasz zastąpić swoją listę bloków domen maksymalnie %{count} domenami z %{filename}.
+ many: Zamierzasz zastąpić swoją listę bloków domen maksymalnie %{count} domenami z %{filename}.
+ one: Zamierzasz zastąpić swoją listę bloków domen maksymalnie %{count} domeną z %{filename}.
+ other: Zamierzasz zastąpić swoją listę bloków domen maksymalnie %{count} domenami z %{filename}.
+ following_html:
+ few: Zamierzasz zaobserwować maksymalnie %{count} konta z %{filename} i przestać obserwować kogokolwiek innego.
+ many: Zamierzasz zaobserwować maksymalnie %{count} kont z %{filename} i przestać obserwować kogokolwiek innego.
+ one: Zamierzasz zaobserwować maksymalnie %{count} konto z %{filename} i przestać obserwować kogokolwiek innego.
+ other: Zamierzasz zaobserwować maksymalnie %{count} kont z %{filename} i przestać obserwować kogokolwiek innego.
+ lists_html:
+ few: Zamierzasz zastąpić swoje listy maksymalnie %{count} kontami z %{filename}.
+ many: Zamierzasz zastąpić swoje listy maksymalnie %{count} kontami z %{filename}.
+ one: Zamierzasz zastąpić swoje listy maksymalnie %{count} kontem z %{filename}.
+ other: Zamierzasz zastąpić swoje listy maksymalnie %{count} kontami z %{filename}.
+ muting_html:
+ few: Zamierzasz zastąpić swoją listę wyciszonych maksymalnie %{count} kontami z %{filename}.
+ many: Zamierzasz zastąpić swoją listę wyciszonych maksymalnie %{count} kontami z %{filename}.
+ one: Zamierzasz zastąpić swoją listę wyciszonych maksymalnie %{count} kontem z %{filename}.
+ other: Zamierzasz zastąpić swoją listę wyciszonych maksymalnie %{count} kontami z %{filename}.
+ preambles:
+ blocking_html:
+ few: Zamierzasz zablokować maksymalnie %{count} konta z %{filename}.
+ many: Zamierzasz zablokować maksymalnie %{count} kont z %{filename}.
+ one: Zamierzasz zablokować maksymalnie %{count} konto z %{filename}.
+ other: Zamierzasz zablokować maksymalnie %{count} kont z %{filename}.
+ bookmarks_html:
+ few: Zamierzasz dodać maksymalnie %{count} wpisy do twoich zakładek z %{filename}.
+ many: Zamierzasz dodać maksymalnie %{count} wpisów do twoich zakładek z %{filename}.
+ one: Zamierzasz dodać maksymalnie %{count} wpis do twoich zakładek z %{filename}.
+ other: Zamierzasz dodać maksymalnie %{count} wpisów do twoich zakładek z %{filename}.
+ domain_blocking_html:
+ few: Zamierzasz zablokować maksymalnie %{count} domeny z %{filename}.
+ many: Zamierzasz zablokować maksymalnie %{count} domeny z %{filename}.
+ one: Zamierzasz zablokować maksymalnie %{count} domenę z %{filename}.
+ other: Zamierzasz zablokować maksymalnie %{count} domeny z %{filename}.
+ following_html:
+ few: Zamierzasz zaobserwować maksymalnie %{count} konta z %{filename}.
+ many: Zamierzasz zaobserwować maksymalnie %{count} kont z %{filename}.
+ one: Zamierzasz zaobserwować maksymalnie %{count} konto z %{filename}.
+ other: Zamierzasz zaobserwować maksymalnie %{count} kont z %{filename}.
+ lists_html:
+ few: Zamierzasz dodać maksymalnie %{count} konta do twoich list z %{filename}. Jeżeli nie ma list, nowe zostaną utworzone.
+ many: Zamierzasz dodać maksymalnie %{count} kont do twoich list z %{filename}. Jeżeli nie ma list, nowe zostaną utworzone.
+ one: Zamierzasz dodać maksymalnie %{count} konto do twoich list z %{filename}. Jeżeli nie ma list, nowe zostaną utworzone.
+ other: Zamierzasz dodać maksymalnie %{count} kont do twoich list z %{filename}. Jeżeli nie ma list, nowe zostaną utworzone.
+ muting_html:
+ few: Zamierzasz wyciszyć maksymalnie %{count} konta z %{filename}.
+ many: Zamierzasz wyciszyć maksymalnie %{count} kont z %{filename}.
+ one: Zamierzasz wyciszyć maksymalnie %{count} konto z %{filename}.
+ other: Zamierzasz wyciszyć maksymalnie %{count} kont z %{filename}.
preface: Możesz zaimportować pewne dane (np. lista kont, które obserwujesz lub blokujesz) do swojego konta na tym serwerze, korzystając z danych wyeksportowanych z innego serwera.
recent_imports: Ostatnie importy
states:
@@ -1926,6 +2018,15 @@ pl:
further_actions_html: Jeśli to nie Ty, zalecamy %{action} natychmiastowo i włącz uwierzytelnianie dwuetapowe, aby Twoje konto było bezpieczne.
subject: Uzyskano dostęp do twojego konta z nowego adresu IP
title: Nowe logowanie
+ terms_of_service_changed:
+ agreement: Kontynuując używanie %{domain}, zgadzasz się na te warunki. Jeśli nie zgadzasz się ze zaktualizowanymi warunkami, możesz wypowiedzieć umowę z %{domain} w dowolnym momencie, usuwając swoje konto.
+ changelog: 'W skrócie oto co oznacza dla Ciebie ta aktualizacja:'
+ description: 'Otrzymujesz ten e-mail, ponieważ wprowadzamy pewne zmiany w naszym regulaminie usługi w %{domain}. Zachęcamy Cię do pełnego zapoznania się z aktualnymi warunkami:'
+ description_html: Otrzymujesz ten e-mail, ponieważ wprowadzamy pewne zmiany w naszym regulaminie usługi w %{domain}. Zachęcamy do zapoznania się z aktualnymi warunkami w całości tutaj.
+ sign_off: Zespół %{domain}
+ subject: Aktualizacja warunków korzystania z usług
+ subtitle: Warunki korzystania z %{domain} zmieniają się
+ title: Ważna aktualizacja
warning:
appeal: Złóż odwołanie
appeal_description: Jeśli uważasz, że zaszło nieporozumienie, możesz złożyć odwołanie do zespołu %{instance}.
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index 7dcf0977f3..4015005b2d 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -844,7 +844,7 @@ pt-PT:
no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado
open: Abrir publicação
original_status: Publicação original
- reblogs: Reblogues
+ reblogs: Impulsos
replied_to_html: Respondeu a %{acct_link}
status_changed: Publicação alterada
status_title: Publicado por @%{name}
@@ -1209,6 +1209,7 @@ pt-PT:
too_fast: Formulário enviado demasiado rapidamente, tenta novamente.
use_security_key: Usar chave de segurança
user_agreement_html: Eu li e concordo com os termos do serviço e política de privacidade
+ user_privacy_agreement_html: Eu li e concordo com a política de privacidade
author_attribution:
example_title: Texto de exemplo
hint_html: Estás a escrever notícias ou artigos de blogue fora do Mastodon? Controla a forma como és creditados quando estes são partilhados no Mastodon.
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index f5be51f9c3..45b1be79b7 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -313,6 +313,11 @@ ar:
name: الوسم
trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة
usable: السماح للمنشورات باستخدام هذا الوسم محليا
+ terms_of_service:
+ text: شروط الخدمة
+ terms_of_service_generator:
+ domain: النطاق
+ jurisdiction: الاختصاص القانوني
user:
role: الدور
time_zone: النطاق الزمني
diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml
index dacd1f6372..6f3681de5b 100644
--- a/config/locales/simple_form.bg.yml
+++ b/config/locales/simple_form.bg.yml
@@ -3,6 +3,7 @@ bg:
simple_form:
hints:
account:
+ attribution_domains: Едно на ред. Защитава от фалшиви атрибути.
discoverable: Вашите публични публикации и профил може да се представят или препоръчват в различни области на Mastodon и вашия профил може да се предлага на други потребители.
display_name: Вашето пълно име или псевдоним.
fields: Вашата начална страница, местоимения, години, всичко що искате.
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index e06cf7069d..4b6cc80a12 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -3,6 +3,7 @@ el:
simple_form:
hints:
account:
+ attribution_domains: Μία ανά γραμμή. Προστατεύει από ψευδείς ιδιότητες.
discoverable: Οι δημόσιες δημοσιεύσεις και το προφίλ σου μπορεί να εμφανίζονται ή να συνιστώνται σε διάφορους τομείς του Mastodon και το προφίλ σου μπορεί να προτείνεται σε άλλους χρήστες.
display_name: Το πλήρες ή το αστείο σου όνομα.
fields: Η αρχική σου σελίδα, αντωνυμίες, ηλικία, ό,τι θες.
@@ -136,6 +137,7 @@ el:
admin_email: Οι νομικές ανακοινώσεις περιλαμβάνουν αντικρούσεις, δικαστικές αποφάσεις, αιτήματα που έχουν ληφθεί και αιτήματα επιβολής του νόμου.
arbitration_address: Μπορεί να είναι το ίδιο με τη φυσική διεύθυνση παραπάνω, ή “N/A” εάν χρησιμοποιείται email
arbitration_website: Μπορεί να είναι μια φόρμα ιστού, ή “N/A” εάν χρησιμοποιείται email
+ dmca_address: Για τους φορείς των ΗΠΑ, χρησιμοποιήστε τη διεύθυνση που έχει καταχωρηθεί στο DMCA Designated Agent Directory. A P.O. Η λίστα είναι διαθέσιμη κατόπιν απευθείας αιτήματος, Χρησιμοποιήστε το αίτημα απαλλαγής από την άδεια χρήσης του καθορισμένου από το DMCA Agent Post Office Box για να στείλετε email στο Γραφείο Πνευματικών Δικαιωμάτων και περιγράψτε ότι είστε συντονιστής περιεχομένου με βάση το σπίτι, ο οποίος φοβάται την εκδίκηση ή την απόδοση για τις ενέργειές σας και πρέπει να χρησιμοποιήσετε ένα P.. Box για να αφαιρέσετε τη διεύθυνση οικίας σας από τη δημόσια προβολή.
dmca_email: Μπορεί να είναι το ίδιο email που χρησιμοποιείται για “Διεύθυνση email για νομικές ανακοινώσεις” παραπάνω
domain: Μοναδικό αναγνωριστικό της διαδικτυακής υπηρεσίας που παρέχεις.
jurisdiction: Ανέφερε τη χώρα όπου ζει αυτός που πληρώνει τους λογαριασμούς. Εάν πρόκειται για εταιρεία ή άλλη οντότητα, ανέφερε τη χώρα όπου υφίσταται, και την πόλη, περιοχή, έδαφος ή πολιτεία ανάλογα με την περίπτωση.
@@ -154,6 +156,7 @@ el:
url: Πού θα σταλούν τα γεγονότα
labels:
account:
+ attribution_domains: Ιστοσελίδες επιτρέπεται να σας αναφέρουν
discoverable: Παροχή προφίλ και αναρτήσεων σε αλγορίθμους ανακάλυψης
fields:
name: Περιγραφή
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index e39e27f6dd..c3cf3692be 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -245,7 +245,7 @@ fa:
sign_in_token_attempt: کد امنیتی
title: عنوان
type: نوع درونریزی
- username: نام کاربری (لاتین)
+ username: نام کاربری
username_or_email: نام کاربری یا ایمیل
whole_word: تطابق واژهٔ کامل
email_domain_block:
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index d40ca7ebf8..92d306224a 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -3,6 +3,7 @@ ko:
simple_form:
hints:
account:
+ attribution_domains: 한 줄에 하나씩. 가짜 기여로부터 보호합니다.
discoverable: 내 공개 게시물과 프로필이 마스토돈의 다양한 추천 기능에 나타날 수 있고 프로필이 다른 사용자에게 제안될 수 있습니다
display_name: 진짜 이름 또는 재미난 이름.
fields: 홈페이지, 호칭, 나이, 뭐든지 적고 싶은 것들.
@@ -133,8 +134,12 @@ ko:
changelog: 마크다운 문법을 사용할 수 있습니다.
text: 마크다운 문법을 사용할 수 있습니다.
terms_of_service_generator:
+ admin_email: 법적 고지에는 이의 제기, 법원 명령, 게시 중단 요청, 법 집행 요청이 포함됩니다.
+ arbitration_address: 위의 실제 주소와 같을 수 있으며, 이메일을 사용한다면 "N/A"로 두세요
arbitration_website: 웹 형태를 사용할 수 있습니다. 이메일을 사용한다면 "N/A"로 둘 수 있습니다
dmca_email: 상단의 "법적 통지를 위한 이메일 주소"와 같은 주소를 사용할 수 있습니다
+ domain: 귀하가 제공하는 온라인 서비스의 고유 식별정보입니다.
+ jurisdiction: 요금을 지불하는 사람이 거주하는 국가를 기재하세요. 회사나 기타 법인인 경우 해당 법인이 설립된 국가와 도시, 지역, 영토 또는 주를 적절히 기재하세요.
user:
chosen_languages: 체크하면, 선택 된 언어로 작성된 게시물들만 공개 타임라인에 보여집니다
role: 역할은 사용자가 어떤 권한을 가지게 될 지 결정합니다.
@@ -150,6 +155,7 @@ ko:
url: 이벤트가 어디로 전송될 지
labels:
account:
+ attribution_domains: 나를 기여자로 올릴 수 있도록 허용된 웹사이트들
discoverable: 발견하기 알고리즘에 프로필과 게시물을 추천하기
fields:
name: 라벨
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index d7f3829af2..efa17c1a9b 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -3,6 +3,7 @@ pl:
simple_form:
hints:
account:
+ attribution_domains: Jedna na linię.
discoverable: Twój profil i publiczne wpisy mogą być promowane lub polecane na Mastodonie i twój profil może być sugerowany innym użytkownikom.
display_name: Twoje imię lub pseudonim.
fields: Co ci się tylko podoba – twoja strona domowa, zaimki, wiek…
@@ -129,6 +130,13 @@ pl:
show_application: Ty zawsze widzisz program użyty do zamieszczenia.
tag:
name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne
+ terms_of_service:
+ changelog: Może być stworzony przy pomocy składni Markdown.
+ text: Może być stworzony przy pomocy składni Markdown.
+ terms_of_service_generator:
+ admin_email: Zawiadomienia prawne obejmują środki zapobiegawcze, nakazy sądowe, wnioski o popełnienie sprawy oraz wnioski organów ścigania.
+ arbitration_address: Może być taki sam jak adres fizyczny powyżej lub „N/A” jeśli używasz adresu e-mail
+ arbitration_website: Może być formularzem internetowym lub „N/A”, jeśli używasz adresu e-mail
user:
chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu
role: Rola kontroluje uprawnienia użytkownika.
@@ -321,6 +329,10 @@ pl:
changelog: Co się zmieniło?
text: Warunki korzystania z usługi
terms_of_service_generator:
+ arbitration_address: Adres fizyczny powiadomień arbitrażowych
+ arbitration_website: Strona internetowa do składania zgłoszeń arbitrażowych
+ dmca_address: Adres fizyczny dla zgłoszeń naruszenia DMCA/praw autorskich
+ dmca_email: Adres e-mail dla zgłoszeń naruszenia DMCA/praw autorskich
domain: Domena
jurisdiction: Jurysdykcja
user:
diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml
index ebf16f839d..1330878c48 100644
--- a/config/locales/simple_form.pt-PT.yml
+++ b/config/locales/simple_form.pt-PT.yml
@@ -63,7 +63,7 @@ pt-PT:
setting_system_scrollbars_ui: Aplica-se apenas a navegadores de desktop baseados no Safari e Chrome
setting_use_blurhash: Os gradientes são baseados nas cores das imagens escondidas, mas ofuscam quaisquer pormenores
setting_use_pending_items: Ocultar as atualizações da cronologia após um clique em vez de percorrer automaticamente a cronologia
- username: Pode utilizar letras, números e traços inferiores (_)
+ username: Podes utilizar letras, números e traços inferiores (_)
whole_word: Quando a palavra-chave ou expressão-chave é somente alfanumérica, ela só será aplicada se corresponder à palavra completa
domain_allow:
domain: Este domínio será capaz de obter dados desta instância e os dados dele recebidos serão processados e armazenados
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 0c6be357ce..1e42c65680 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -3,6 +3,7 @@ zh-CN:
simple_form:
hints:
account:
+ attribution_domains: 每行一个域名。这样就可以保护作品免受虚假署名。
discoverable: 你的公开嘟文和个人资料可能会在 Mastodon 的多个位置展示,你的个人资料可能会被推荐给其他用户。
display_name: 你的全名或昵称。
fields: 你的主页、人称代词、年龄,以及任何你想要添加的内容。
@@ -46,7 +47,7 @@ zh-CN:
current_username: 请输入当前账号的用户名以确认
digest: 仅在你长时间未登录,且收到了私信时发送
email: 我们会向你发送一封确认邮件
- header: 支持WEBP、PNG、GIF 或 JPG。最大 %{size}。分辨率将被压缩至 %{dimensions}px
+ header: 支持 WEBP、PNG、GIF 或 JPG。最大 %{size}。分辨率将被压缩至 %{dimensions}px
inbox_url: 从你想要使用的中继站的主页上复制 URL
irreversible: 被过滤的嘟文会永久消失,移除过滤规则后也不会恢复
locale: 在用户界面、电子邮件和推送通知中使用的语言
@@ -155,6 +156,7 @@ zh-CN:
url: 事件将被发往的目的地
labels:
account:
+ attribution_domains: 授权展示你的署名的网站
discoverable: 在发现算法中展示你的账号与嘟文
fields:
name: 标签
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index 4ac12b67a4..0697bb0a99 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -1203,6 +1203,7 @@ sq:
too_fast: Formulari u parashtrua shumë shpejt, riprovoni.
use_security_key: Përdor kyç sigurie
user_agreement_html: I kam lexuar dhe pajtohen me kushtet e shërbimit dhe rregullat e privatësisë
+ user_privacy_agreement_html: I kam lexuar dhe pajtohem me rregullat e privatësisë
author_attribution:
example_title: Tekst shembull
hint_html: Shkruani lajme, apo artikuj blogu jashtë Mastodon-it? Kontrolloni se si ju jepet hakë, kur ndahen me të tjerët në Mastodon.
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 65ec6ef58a..7470f88c50 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -1209,6 +1209,7 @@ tr:
too_fast: Form çok hızlı gönderildi, tekrar deneyin.
use_security_key: Güvenlik anahtarını kullan
user_agreement_html: hizmet şartları ve gizlilik politikasını okudum ve kabul ediyorum
+ user_privacy_agreement_html: Gizlilik politikasını okudum ve kabul ettim
author_attribution:
example_title: Örnek metin
hint_html: Mastodon dışında haber veya günlük yazıları mı yazıyorsunuz? Bu yazılar Mastodon'da paylaşıldığında size nasıl atıf yapılacağını denetleyin.
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index c4abba8e11..801d32b1ab 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -1242,6 +1242,7 @@ uk:
too_fast: Форму подано занадто швидко, спробуйте ще раз.
use_security_key: Використовувати ключ безпеки
user_agreement_html: Я прочитав і приймаю умови використання та політику конфіденційності< /a>
+ user_privacy_agreement_html: Мною прочитано і я погоджуюся з політикою приватності
author_attribution:
example_title: Зразок тексту
hint_html: Ви пишете новини чи статті в блозі за межами Mastodon? Контролюйте, як вони підписуються, коли ними діляться на Mastodon.
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index e6da2ee8d3..a7fbfa3de2 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -1,7 +1,7 @@
---
zh-CN:
about:
- about_mastodon_html: 来自未来的社交网络:无广告、无监视、去中心化、合乎道德!加入 Mastodon,掌控自己的数据!
+ about_mastodon_html: 来自未来的社交网络:无广告、无监视、去中心化、合乎道德!使用 Mastodon 夺回你的数据!
contact_missing: 未设定
contact_unavailable: 未公开
hosted_on: 运行在 %{domain} 上的 Mastodon 实例
@@ -1190,6 +1190,7 @@ zh-CN:
too_fast: 表单提交过快,请重试。
use_security_key: 使用安全密钥
user_agreement_html: 我已阅读并同意 服务条款 与 隐私政策
+ user_privacy_agreement_html: 我已阅读并同意隐私政策
author_attribution:
example_title: 示例文本
hint_html: 你是否在 Mastodon 之外撰写新闻或博客文章?控制它们被分享到 Mastodon 时的署名方式。
@@ -1830,10 +1831,10 @@ zh-CN:
terms_of_service:
title: 服务条款
themes:
- contrast: Mastodon (高对比度)
- default: Mastodon (暗色)
- mastodon-light: Mastodon (亮色)
- system: 自动切换 (使用系统主题)
+ contrast: Mastodon(高对比度)
+ default: Mastodon(暗色主题)
+ mastodon-light: Mastodon(亮色主题)
+ system: 自动切换(使用系统主题)
time:
formats:
default: "%Y年%m月%d日 %H:%M"
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index cf215240e9..4a3ab2ba23 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1192,6 +1192,7 @@ zh-TW:
too_fast: 送出表單的速度太快跟不上,請稍後再試。
use_security_key: 使用安全金鑰
user_agreement_html: 我已閱讀並同意 服務條款 與 隱私權政策
+ user_privacy_agreement_html: 我已閱讀並同意 隱私權政策
author_attribution:
example_title: 範例文字
hint_html: 您是否正於 Mastodon 之外撰寫新聞或部落格文章?控制當它們於 Mastodon 上分享時您如何獲得信譽。
diff --git a/config/puma.rb b/config/puma.rb
index ac9ccac209..4fe8f802b9 100644
--- a/config/puma.rb
+++ b/config/puma.rb
@@ -17,6 +17,27 @@ workers ENV.fetch('WEB_CONCURRENCY') { 2 }.to_i
preload_app!
+if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true'
+ require 'prometheus_exporter'
+ require 'prometheus_exporter/instrumentation'
+
+ on_worker_boot do
+ # Ruby process metrics (memory, GC, etc)
+ PrometheusExporter::Instrumentation::Process.start(type: 'puma')
+
+ # ActiveRecord metrics (connection pool usage)
+ PrometheusExporter::Instrumentation::ActiveRecord.start(
+ custom_labels: { type: 'puma' }, # optional params
+ config_labels: [:database, :host] # optional params
+ )
+ end
+
+ after_worker_boot do
+ # Puma metrics
+ PrometheusExporter::Instrumentation::Puma.start unless PrometheusExporter::Instrumentation::Puma.started?
+ end
+end
+
on_worker_boot do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.establish_connection
diff --git a/config/templates/terms-of-service.md b/config/templates/terms-of-service.md
index cb81a22e84..4b11a9897c 100644
--- a/config/templates/terms-of-service.md
+++ b/config/templates/terms-of-service.md
@@ -58,16 +58,18 @@ attempt to):
or limit the functionality of the Instance, launch a denial of service attack,
or in any other way attempt to interfere with the functioning and availability
of the Instance;
-- Except as may be the result of standard search engine or Internet browser
- usage, use, launch, develop, or distribute any automated system, including
- without limitation, any spider, robot, cheat utility, scraper, offline reader,
- or any data mining or similar data gathering extraction tools to access the
- Instance, or use or launch any unauthorized script or other software;
+- Use, launch, develop, or distribute any automated system, including without
+ limitation, any spider, robot, cheat utility, scraper, offline reader, or any
+ data mining or similar data gathering extraction tools to access the Instance,
+ except in each case as may be the result of standard search engine or Internet
+ browser and local caching or for human review and interaction with Content on
+ the Instance;
+- Use or launch any unauthorized script or other software;
- Interfere with, disable, vandalize or disrupt the Instance or servers or
networks connected to the Instance;
- Hack into, penetrate, disable, or otherwise circumvent the security measures
of the Instance or servers or networks connected to the Instance;
-- or otherwise use the Instance in any way that violates any applicable
+- Otherwise use the Instance in any way that violates any applicable
national, federal, state, local or international law or regulation.
## Intellectual Property
diff --git a/docker-compose.yml b/docker-compose.yml
index 6c44977562..93e5bd4ecd 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,5 @@
# This file is designed for production server deployment, not local development work
-# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
+# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/docs/DEVELOPMENT.md#docker
services:
db:
diff --git a/lib/devise/strategies/two_factor_pam_authenticatable.rb b/lib/devise/strategies/two_factor_pam_authenticatable.rb
index a9db1b6a29..7263ba354a 100644
--- a/lib/devise/strategies/two_factor_pam_authenticatable.rb
+++ b/lib/devise/strategies/two_factor_pam_authenticatable.rb
@@ -22,7 +22,7 @@ module Devise
protected
def valid_params?
- params[scope] && params[scope][:password].present?
+ params[scope].respond_to?(:[]) && params[scope][:password].present?
end
end
end
diff --git a/spec/controllers/admin/settings/branding_controller_spec.rb b/spec/controllers/admin/settings/branding_controller_spec.rb
index 843021469e..6b3621bb8a 100644
--- a/spec/controllers/admin/settings/branding_controller_spec.rb
+++ b/spec/controllers/admin/settings/branding_controller_spec.rb
@@ -16,7 +16,8 @@ RSpec.describe Admin::Settings::BrandingController do
patch :update, params: { form_admin_settings: { new_setting_key: 'New key value' } }
- expect(response).to redirect_to(admin_settings_branding_path)
+ expect(response)
+ .to have_http_status(400)
expect(Setting.new_setting_key).to be_nil
end
end
diff --git a/spec/lib/activitypub/linked_data_signature_spec.rb b/spec/lib/activitypub/linked_data_signature_spec.rb
index b1a8dc5c49..8128fdd070 100644
--- a/spec/lib/activitypub/linked_data_signature_spec.rb
+++ b/spec/lib/activitypub/linked_data_signature_spec.rb
@@ -13,10 +13,13 @@ RSpec.describe ActivityPub::LinkedDataSignature do
{
'@context' => 'https://www.w3.org/ns/activitystreams',
'id' => 'http://example.com/hello-world',
+ 'type' => 'Note',
+ 'content' => 'Hello world',
}
end
- let(:json) { raw_json.merge('signature' => signature) }
+ let(:signed_json) { raw_json.merge('signature' => signature) }
+ let(:json) { signed_json }
describe '#verify_actor!' do
context 'when signature matches' do
@@ -90,6 +93,54 @@ RSpec.describe ActivityPub::LinkedDataSignature do
expect(subject.verify_actor!).to be_nil
end
end
+
+ context 'when an attribute has been removed from the document' do
+ let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => sign(sender, raw_signature, raw_json)) }
+ let(:json) { signed_json.without('content') }
+
+ let(:raw_signature) do
+ {
+ 'creator' => 'http://example.com/alice',
+ 'created' => '2017-09-23T20:21:34Z',
+ }
+ end
+
+ it 'returns nil' do
+ expect(subject.verify_actor!).to be_nil
+ end
+ end
+
+ context 'when an attribute has been added to the document' do
+ let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => sign(sender, raw_signature, raw_json)) }
+ let(:json) { signed_json.merge('attributedTo' => 'http://example.com/bob') }
+
+ let(:raw_signature) do
+ {
+ 'creator' => 'http://example.com/alice',
+ 'created' => '2017-09-23T20:21:34Z',
+ }
+ end
+
+ it 'returns nil' do
+ expect(subject.verify_actor!).to be_nil
+ end
+ end
+
+ context 'when an existing attribute has been changed' do
+ let(:signature) { raw_signature.merge('type' => 'RsaSignature2017', 'signatureValue' => sign(sender, raw_signature, raw_json)) }
+ let(:json) { signed_json.merge('content' => 'oops') }
+
+ let(:raw_signature) do
+ {
+ 'creator' => 'http://example.com/alice',
+ 'created' => '2017-09-23T20:21:34Z',
+ }
+ end
+
+ it 'returns nil' do
+ expect(subject.verify_actor!).to be_nil
+ end
+ end
end
describe '#sign!' do
diff --git a/spec/requests/admin/account_actions_spec.rb b/spec/requests/admin/account_actions_spec.rb
new file mode 100644
index 0000000000..5bf8f3e9b2
--- /dev/null
+++ b/spec/requests/admin/account_actions_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Account Actions' do
+ describe 'POST /admin/accounts/:account_id/action' do
+ before { sign_in Fabricate(:admin_user) }
+
+ let(:account) { Fabricate :account }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_account_action_path(account.id, admin_account_action: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/account_moderation_notes_spec.rb b/spec/requests/admin/account_moderation_notes_spec.rb
new file mode 100644
index 0000000000..857bec1e09
--- /dev/null
+++ b/spec/requests/admin/account_moderation_notes_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Account Moderation Notes' do
+ describe 'POST /admin/account_moderation_notes' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_account_moderation_notes_path(account_moderation_note: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/accounts_spec.rb b/spec/requests/admin/accounts_spec.rb
new file mode 100644
index 0000000000..de655f0d36
--- /dev/null
+++ b/spec/requests/admin/accounts_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Accounts' do
+ describe 'POST /admin/accounts/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_accounts_path(form_account_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_accounts_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/announcements_spec.rb b/spec/requests/admin/announcements_spec.rb
new file mode 100644
index 0000000000..46d1b6a096
--- /dev/null
+++ b/spec/requests/admin/announcements_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Announcements' do
+ describe 'POST /admin/announcements' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_announcements_path(announcement: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/change_emails_spec.rb b/spec/requests/admin/change_emails_spec.rb
new file mode 100644
index 0000000000..3df29eb77b
--- /dev/null
+++ b/spec/requests/admin/change_emails_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Account Change Email' do
+ describe 'PUT /admin/accounts/:account_id/change_email' do
+ before { sign_in Fabricate(:admin_user) }
+
+ let(:account) { Fabricate :account }
+
+ it 'gracefully handles invalid nested params' do
+ put admin_account_change_email_path(account.id, user: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/custom_emojis_spec.rb b/spec/requests/admin/custom_emojis_spec.rb
new file mode 100644
index 0000000000..0c142f11f2
--- /dev/null
+++ b/spec/requests/admin/custom_emojis_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Custom Emojis' do
+ describe 'POST /admin/custom_emojis' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_custom_emojis_path(custom_emoji: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/domain_allows_spec.rb b/spec/requests/admin/domain_allows_spec.rb
new file mode 100644
index 0000000000..0d1f6d0248
--- /dev/null
+++ b/spec/requests/admin/domain_allows_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Domain Allows' do
+ describe 'POST /admin/domain_allows' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_domain_allows_path(domain_allow: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/domain_blocks_spec.rb b/spec/requests/admin/domain_blocks_spec.rb
new file mode 100644
index 0000000000..3b18a8ece1
--- /dev/null
+++ b/spec/requests/admin/domain_blocks_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Domain Blocks' do
+ describe 'POST /admin/domain_blocks/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_domain_blocks_path(form_domain_block_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_instances_path(limited: '1'))
+ end
+ end
+end
diff --git a/spec/requests/admin/email_domain_blocks_spec.rb b/spec/requests/admin/email_domain_blocks_spec.rb
new file mode 100644
index 0000000000..7bccb3166b
--- /dev/null
+++ b/spec/requests/admin/email_domain_blocks_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Email Domain Blocks' do
+ describe 'POST /admin/email_domain_blocks' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_email_domain_blocks_path(email_domain_block: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+
+ describe 'POST /admin/email_domain_blocks/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_email_domain_blocks_path(form_email_domain_block_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_email_domain_blocks_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/export_domain_allows_spec.rb b/spec/requests/admin/export_domain_allows_spec.rb
new file mode 100644
index 0000000000..761c39984e
--- /dev/null
+++ b/spec/requests/admin/export_domain_allows_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Export Domain Allows' do
+ describe 'POST /admin/export_domain_allows/import' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post import_admin_export_domain_allows_path(admin_import: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_instances_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/export_domain_blocks_spec.rb b/spec/requests/admin/export_domain_blocks_spec.rb
new file mode 100644
index 0000000000..d7fed5287f
--- /dev/null
+++ b/spec/requests/admin/export_domain_blocks_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Export Domain Blocks' do
+ describe 'POST /admin/export_domain_blocks/import' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post import_admin_export_domain_blocks_path(admin_import: 'invalid')
+
+ expect(response.body)
+ .to include(I18n.t('admin.export_domain_blocks.no_file'))
+ end
+ end
+end
diff --git a/spec/requests/admin/follow_recommendations_spec.rb b/spec/requests/admin/follow_recommendations_spec.rb
new file mode 100644
index 0000000000..146c26448c
--- /dev/null
+++ b/spec/requests/admin/follow_recommendations_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Follow Recommendations' do
+ describe 'PUT /admin/follow_recommendations' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ put admin_follow_recommendations_path(form_account_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_follow_recommendations_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/invites_spec.rb b/spec/requests/admin/invites_spec.rb
new file mode 100644
index 0000000000..c027fd30cf
--- /dev/null
+++ b/spec/requests/admin/invites_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Invites' do
+ describe 'POST /admin/invites' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_invites_path(invite: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/ip_blocks_spec.rb b/spec/requests/admin/ip_blocks_spec.rb
new file mode 100644
index 0000000000..e74961aa3c
--- /dev/null
+++ b/spec/requests/admin/ip_blocks_spec.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin IP Blocks' do
+ describe 'POST /admin/ip_blocks' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_ip_blocks_path(ip_block: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+
+ describe 'POST /admin/ip_blocks/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_ip_blocks_path(form_ip_block_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_ip_blocks_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/relays_spec.rb b/spec/requests/admin/relays_spec.rb
new file mode 100644
index 0000000000..5dcdfe9892
--- /dev/null
+++ b/spec/requests/admin/relays_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Relays' do
+ describe 'POST /admin/relays' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_relays_path(relay: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/report_notes_spec.rb b/spec/requests/admin/report_notes_spec.rb
new file mode 100644
index 0000000000..170648a714
--- /dev/null
+++ b/spec/requests/admin/report_notes_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Report Notes' do
+ describe 'POST /admin/report_notes' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_report_notes_path(report_note: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/roles_spec.rb b/spec/requests/admin/roles_spec.rb
new file mode 100644
index 0000000000..785da5a0ff
--- /dev/null
+++ b/spec/requests/admin/roles_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Roles' do
+ describe 'POST /admin/roles' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_roles_path(user_role: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/rules_spec.rb b/spec/requests/admin/rules_spec.rb
new file mode 100644
index 0000000000..9382b38e59
--- /dev/null
+++ b/spec/requests/admin/rules_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Rules' do
+ describe 'POST /admin/rules' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_rules_path(rule: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/settings/about_spec.rb b/spec/requests/admin/settings/about_spec.rb
new file mode 100644
index 0000000000..28be2c252d
--- /dev/null
+++ b/spec/requests/admin/settings/about_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Settings About' do
+ describe 'PUT /admin/settings/about' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ put admin_settings_about_path(form_admin_settings: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/statuses_spec.rb b/spec/requests/admin/statuses_spec.rb
new file mode 100644
index 0000000000..9fa732e178
--- /dev/null
+++ b/spec/requests/admin/statuses_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Statuses' do
+ describe 'POST /admin/accounts/:account_id/statuses/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ let(:account) { Fabricate :account }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_account_statuses_path(account.id, admin_status_batch_action: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_account_statuses_path(account.id))
+ end
+ end
+end
diff --git a/spec/requests/admin/tags_spec.rb b/spec/requests/admin/tags_spec.rb
new file mode 100644
index 0000000000..653c5bd935
--- /dev/null
+++ b/spec/requests/admin/tags_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Tags' do
+ describe 'PUT /admin/tags/:id' do
+ before { sign_in Fabricate(:admin_user) }
+
+ let(:tag) { Fabricate :tag }
+
+ it 'gracefully handles invalid nested params' do
+ put admin_tag_path(tag.id, tag: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/terms_of_service/drafts_spec.rb b/spec/requests/admin/terms_of_service/drafts_spec.rb
new file mode 100644
index 0000000000..2c3c77193e
--- /dev/null
+++ b/spec/requests/admin/terms_of_service/drafts_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Terms Drafts' do
+ describe 'PUT /admin/terms_of_service/draft' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ put admin_terms_of_service_draft_path(terms_of_service: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/terms_of_service/generates_spec.rb b/spec/requests/admin/terms_of_service/generates_spec.rb
new file mode 100644
index 0000000000..b8c51fdf2c
--- /dev/null
+++ b/spec/requests/admin/terms_of_service/generates_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Terms Generates' do
+ describe 'POST /admin/terms_of_service/generates' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_terms_of_service_generate_path(terms_of_service_generator: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/trends/links/preview_card_providers_spec.rb b/spec/requests/admin/trends/links/preview_card_providers_spec.rb
new file mode 100644
index 0000000000..69bf479c68
--- /dev/null
+++ b/spec/requests/admin/trends/links/preview_card_providers_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Trends Links Preview Card Providers' do
+ describe 'POST /admin/trends/links/publishers/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_trends_links_preview_card_providers_path(trends_preview_card_provider_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_trends_links_preview_card_providers_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/trends/links_spec.rb b/spec/requests/admin/trends/links_spec.rb
new file mode 100644
index 0000000000..9fbfd56704
--- /dev/null
+++ b/spec/requests/admin/trends/links_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Trends Links' do
+ describe 'POST /admin/trends/links/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_trends_links_path(trends_preview_card_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_trends_links_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/trends/statuses_spec.rb b/spec/requests/admin/trends/statuses_spec.rb
new file mode 100644
index 0000000000..ceae24ec8f
--- /dev/null
+++ b/spec/requests/admin/trends/statuses_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Trends Statuses' do
+ describe 'POST /admin/trends/statuses/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_trends_statuses_path(trends_status_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_trends_statuses_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/trends/tags_spec.rb b/spec/requests/admin/trends/tags_spec.rb
new file mode 100644
index 0000000000..e505be7a19
--- /dev/null
+++ b/spec/requests/admin/trends/tags_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Trends Tags' do
+ describe 'POST /admin/trends/tags/batch' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_admin_trends_tags_path(trends_tag_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(admin_trends_tags_path)
+ end
+ end
+end
diff --git a/spec/requests/admin/users/roles_spec.rb b/spec/requests/admin/users/roles_spec.rb
new file mode 100644
index 0000000000..b39e3f8bae
--- /dev/null
+++ b/spec/requests/admin/users/roles_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Users Roles' do
+ describe 'PUT /admin/users/:user_id/role' do
+ before { sign_in Fabricate(:admin_user) }
+
+ let(:user) { Fabricate :user }
+
+ it 'gracefully handles invalid nested params' do
+ put admin_user_role_path(user.id, user: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/warning_presets_spec.rb b/spec/requests/admin/warning_presets_spec.rb
new file mode 100644
index 0000000000..6527cec30f
--- /dev/null
+++ b/spec/requests/admin/warning_presets_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Warning Presets' do
+ describe 'POST /admin/warning_presets' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_warning_presets_path(account_warning_preset: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/admin/webhooks_spec.rb b/spec/requests/admin/webhooks_spec.rb
new file mode 100644
index 0000000000..fe047abd3c
--- /dev/null
+++ b/spec/requests/admin/webhooks_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Admin Webhooks' do
+ describe 'POST /admin/webhooks' do
+ before { sign_in Fabricate(:admin_user) }
+
+ it 'gracefully handles invalid nested params' do
+ post admin_webhooks_path(webhook: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/auth/challenges_spec.rb b/spec/requests/auth/challenges_spec.rb
index 628bfe499b..8769216657 100644
--- a/spec/requests/auth/challenges_spec.rb
+++ b/spec/requests/auth/challenges_spec.rb
@@ -33,5 +33,14 @@ RSpec.describe 'Auth Challenges' do
.to be_nil
end
end
+
+ context 'with invalid params' do
+ it 'gracefully handles invalid nested params' do
+ post auth_challenge_path(form_challenge: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
end
end
diff --git a/spec/requests/auth/sessions_spec.rb b/spec/requests/auth/sessions_spec.rb
new file mode 100644
index 0000000000..246c3794cc
--- /dev/null
+++ b/spec/requests/auth/sessions_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Auth Sessions' do
+ describe 'POST /auth/sign_in' do
+ # The rack-attack check has issues with the non-nested invalid param used here
+ before { Rack::Attack.enabled = false }
+ after { Rack::Attack.enabled = true }
+
+ it 'gracefully handles invalid nested params' do
+ post user_session_path(user: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/filters/statuses_spec.rb b/spec/requests/filters/statuses_spec.rb
new file mode 100644
index 0000000000..aa1d049da7
--- /dev/null
+++ b/spec/requests/filters/statuses_spec.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Filters Statuses' do
+ describe 'POST /filters/:filter_id/statuses/batch' do
+ before { sign_in(user) }
+
+ let(:filter) { Fabricate :custom_filter, account: user.account }
+ let(:user) { Fabricate :user }
+
+ it 'gracefully handles invalid nested params' do
+ post batch_filter_statuses_path(filter.id, form_status_filter_batch_action: 'invalid')
+
+ expect(response)
+ .to redirect_to(edit_filter_path(filter))
+ end
+ end
+end
diff --git a/spec/requests/relationships_spec.rb b/spec/requests/relationships_spec.rb
new file mode 100644
index 0000000000..ee6b321c46
--- /dev/null
+++ b/spec/requests/relationships_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Relationships' do
+ describe 'PUT /relationships' do
+ before { sign_in Fabricate(:user) }
+
+ it 'gracefully handles invalid nested params' do
+ put relationships_path(form_account_batch: 'invalid')
+
+ expect(response)
+ .to redirect_to(relationships_path)
+ end
+ end
+end
diff --git a/spec/requests/settings/applications_spec.rb b/spec/requests/settings/applications_spec.rb
index 8a5b3de895..d2d91f03b1 100644
--- a/spec/requests/settings/applications_spec.rb
+++ b/spec/requests/settings/applications_spec.rb
@@ -40,5 +40,23 @@ RSpec.describe 'Settings / Exports' do
expect(response)
.to redirect_to(settings_applications_path)
end
+
+ it 'gracefully handles invalid nested params' do
+ post settings_applications_path(doorkeeper_application: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+
+ describe 'PUT /settings/applications/:id' do
+ let(:application) { Fabricate :application, owner: user }
+
+ it 'gracefully handles invalid nested params' do
+ put settings_application_path(application.id, doorkeeper_application: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
end
end
diff --git a/spec/requests/settings/preferences/appearance_spec.rb b/spec/requests/settings/preferences/appearance_spec.rb
new file mode 100644
index 0000000000..cfdc4dafc9
--- /dev/null
+++ b/spec/requests/settings/preferences/appearance_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Settings Preferences Appearance' do
+ describe 'PUT /settings/preferences/appearance' do
+ before { sign_in Fabricate(:user) }
+
+ it 'gracefully handles invalid nested params' do
+ put settings_preferences_appearance_path(user: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/settings/two_factor_authentication/confirmations_spec.rb b/spec/requests/settings/two_factor_authentication/confirmations_spec.rb
new file mode 100644
index 0000000000..bf443a5e62
--- /dev/null
+++ b/spec/requests/settings/two_factor_authentication/confirmations_spec.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Settings 2FA Confirmations' do
+ describe 'POST /settings/two_factor_authentication/confirmations' do
+ before do
+ sign_in Fabricate(:user, encrypted_password: '') # Empty encrypted password avoids challengable flow
+ post settings_otp_authentication_path # Sets `session[:new_otp_secret]` which is needed for next step
+ end
+
+ it 'gracefully handles invalid nested params' do
+ post settings_two_factor_authentication_confirmation_path(form_two_factor_confirmation: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/requests/settings/verifications_spec.rb b/spec/requests/settings/verifications_spec.rb
new file mode 100644
index 0000000000..5acfe64836
--- /dev/null
+++ b/spec/requests/settings/verifications_spec.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Settings Verifications' do
+ describe 'PUT /settings/verification' do
+ before { sign_in Fabricate(:user) }
+
+ it 'gracefully handles invalid nested params' do
+ put settings_verification_path(account: 'invalid')
+
+ expect(response)
+ .to have_http_status(400)
+ end
+ end
+end
diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb
index 1a8ea2d170..caaca2fe7c 100644
--- a/spec/services/activitypub/process_status_update_service_spec.rb
+++ b/spec/services/activitypub/process_status_update_service_spec.rb
@@ -268,7 +268,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do
it 'updates tags and featured tags' do
expect { subject.call(status, json, json) }
- .to change { status.tags.reload.pluck(:name) }.from(%w(test foo)).to(%w(foo bar))
+ .to change { status.tags.reload.pluck(:name) }.from(contain_exactly('test', 'foo')).to(contain_exactly('foo', 'bar'))
.and change { status.account.featured_tags.find_by(name: 'test').statuses_count }.by(-1)
.and change { status.account.featured_tags.find_by(name: 'bar').statuses_count }.by(1)
.and change { status.account.featured_tags.find_by(name: 'bar').last_status_at }.from(nil).to(be_present)
diff --git a/spec/system/settings/preferences/appearance_spec.rb b/spec/system/settings/preferences/appearance_spec.rb
index a7d408337a..a1dcb37c91 100644
--- a/spec/system/settings/preferences/appearance_spec.rb
+++ b/spec/system/settings/preferences/appearance_spec.rb
@@ -18,9 +18,12 @@ RSpec.describe 'Settings preferences appearance page' do
check confirm_reblog_field
uncheck confirm_delete_field
+ check advanced_layout_field
+
expect { save_changes }
.to change { user.reload.settings['web.reblog_modal'] }.to(true)
- .and(change { user.reload.settings['web.delete_modal'] }.to(false))
+ .and change { user.reload.settings['web.delete_modal'] }.to(false)
+ .and(change { user.reload.settings['web.advanced_layout'] }.to(true))
expect(page)
.to have_title(I18n.t('settings.appearance'))
end
@@ -40,4 +43,8 @@ RSpec.describe 'Settings preferences appearance page' do
def theme_selection_field
I18n.t('simple_form.labels.defaults.setting_theme')
end
+
+ def advanced_layout_field
+ I18n.t('simple_form.labels.defaults.setting_advanced_layout')
+ end
end
diff --git a/yarn.lock b/yarn.lock
index b4445c7506..eb97502d9a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -55,57 +55,57 @@ __metadata:
languageName: node
linkType: hard
-"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0":
- version: 7.26.0
- resolution: "@babel/code-frame@npm:7.26.0"
+"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2":
+ version: 7.26.2
+ resolution: "@babel/code-frame@npm:7.26.2"
dependencies:
"@babel/helper-validator-identifier": "npm:^7.25.9"
js-tokens: "npm:^4.0.0"
picocolors: "npm:^1.0.0"
- checksum: 10c0/46f7e367714be736b52ea3c01b24f47e2102e210fb83021d1c8237d8fc511b9538909e16e2fcdbb5cb6173e0794e28624309a59014e52fcfb7bde908f5284388
+ checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8
languageName: node
linkType: hard
-"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0":
- version: 7.26.0
- resolution: "@babel/compat-data@npm:7.26.0"
- checksum: 10c0/6325c9151a3c9b0a3a807e854a26255ef66d989bff331475a935af9bb18f160e0fffe6aed550e4e96b63f91efcd874bfbaab2a1f4a2f8d25645d712a0de590fb
+"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/compat-data@npm:7.26.5"
+ checksum: 10c0/9d2b41f0948c3dfc5de44d9f789d2208c2ea1fd7eb896dfbb297fe955e696728d6f363c600cd211e7f58ccbc2d834fe516bb1e4cf883bbabed8a32b038afc1a0
languageName: node
linkType: hard
"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.0":
- version: 7.26.0
- resolution: "@babel/core@npm:7.26.0"
+ version: 7.26.7
+ resolution: "@babel/core@npm:7.26.7"
dependencies:
"@ampproject/remapping": "npm:^2.2.0"
- "@babel/code-frame": "npm:^7.26.0"
- "@babel/generator": "npm:^7.26.0"
- "@babel/helper-compilation-targets": "npm:^7.25.9"
+ "@babel/code-frame": "npm:^7.26.2"
+ "@babel/generator": "npm:^7.26.5"
+ "@babel/helper-compilation-targets": "npm:^7.26.5"
"@babel/helper-module-transforms": "npm:^7.26.0"
- "@babel/helpers": "npm:^7.26.0"
- "@babel/parser": "npm:^7.26.0"
+ "@babel/helpers": "npm:^7.26.7"
+ "@babel/parser": "npm:^7.26.7"
"@babel/template": "npm:^7.25.9"
- "@babel/traverse": "npm:^7.25.9"
- "@babel/types": "npm:^7.26.0"
+ "@babel/traverse": "npm:^7.26.7"
+ "@babel/types": "npm:^7.26.7"
convert-source-map: "npm:^2.0.0"
debug: "npm:^4.1.0"
gensync: "npm:^1.0.0-beta.2"
json5: "npm:^2.2.3"
semver: "npm:^6.3.1"
- checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e
+ checksum: 10c0/fbd2cd9fc23280bdcaca556e558f715c0a42d940b9913c52582e8e3d24e391d269cb8a9cd6589172593983569021c379e28bba6b19ea2ee08674f6068c210a9d
languageName: node
linkType: hard
-"@babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2":
- version: 7.26.0
- resolution: "@babel/generator@npm:7.26.0"
+"@babel/generator@npm:^7.26.5, @babel/generator@npm:^7.7.2":
+ version: 7.26.5
+ resolution: "@babel/generator@npm:7.26.5"
dependencies:
- "@babel/parser": "npm:^7.26.0"
- "@babel/types": "npm:^7.26.0"
+ "@babel/parser": "npm:^7.26.5"
+ "@babel/types": "npm:^7.26.5"
"@jridgewell/gen-mapping": "npm:^0.3.5"
"@jridgewell/trace-mapping": "npm:^0.3.25"
jsesc: "npm:^3.0.2"
- checksum: 10c0/b6bb9185f19a97eaf58e04a6d39a13237076678e7ed16b6321dea914535d4bf6a8d7727c9dcb65539845aa0096b326eb67be4bab764bd74bcfd848e2eda68609
+ checksum: 10c0/3be79e0aa03f38858a465d12ee2e468320b9122dc44fc85984713e32f16f4d77ce34a16a1a9505972782590e0b8d847b6f373621f9c6fafa1906d90f31416cb0
languageName: node
linkType: hard
@@ -118,16 +118,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.9"
- dependencies:
- "@babel/traverse": "npm:^7.25.9"
- "@babel/types": "npm:^7.25.9"
- checksum: 10c0/a6068bb813e7f72d12b72edeecb99167f60cd7964cacedfb60e01fff5e7bed4a5a7f4f7414de7cf352a1b71487df5f8dab8c2b5230de4ad5aea16adf32e14219
- languageName: node
- linkType: hard
-
"@babel/helper-builder-react-jsx@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/helper-builder-react-jsx@npm:7.25.9"
@@ -138,16 +128,16 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helper-compilation-targets@npm:7.25.9"
+"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9, @babel/helper-compilation-targets@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/helper-compilation-targets@npm:7.26.5"
dependencies:
- "@babel/compat-data": "npm:^7.25.9"
+ "@babel/compat-data": "npm:^7.26.5"
"@babel/helper-validator-option": "npm:^7.25.9"
browserslist: "npm:^4.24.0"
lru-cache: "npm:^5.1.1"
semver: "npm:^6.3.1"
- checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa
+ checksum: 10c0/9da5c77e5722f1a2fcb3e893049a01d414124522bbf51323bb1a0c9dcd326f15279836450fc36f83c9e8a846f3c40e88be032ed939c5a9840922bed6073edfb4
languageName: node
linkType: hard
@@ -271,16 +261,6 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-simple-access@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/helper-simple-access@npm:7.25.9"
- dependencies:
- "@babel/traverse": "npm:^7.25.9"
- "@babel/types": "npm:^7.25.9"
- checksum: 10c0/3f1bcdb88ee3883ccf86959869a867f6bbf8c4737cd44fb9f799c38e54f67474590bc66802500ae9fe18161792875b2cfb7ec15673f48ed6c8663f6d09686ca8
- languageName: node
- linkType: hard
-
"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9":
version: 7.25.9
resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9"
@@ -323,24 +303,24 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helpers@npm:^7.26.0":
- version: 7.26.0
- resolution: "@babel/helpers@npm:7.26.0"
+"@babel/helpers@npm:^7.26.7":
+ version: 7.26.7
+ resolution: "@babel/helpers@npm:7.26.7"
dependencies:
"@babel/template": "npm:^7.25.9"
- "@babel/types": "npm:^7.26.0"
- checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097
+ "@babel/types": "npm:^7.26.7"
+ checksum: 10c0/37fec398e53a2dbbf24bc2a025c4d571b2556cef18d8116d05d04b153f13ef659cdfbaab96c8eed875e629d39bdf9b3ea5d099ccf80544537de224e2d94f9b11
languageName: node
linkType: hard
-"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0":
- version: 7.26.1
- resolution: "@babel/parser@npm:7.26.1"
+"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.5, @babel/parser@npm:^7.26.7":
+ version: 7.26.7
+ resolution: "@babel/parser@npm:7.26.7"
dependencies:
- "@babel/types": "npm:^7.26.0"
+ "@babel/types": "npm:^7.26.7"
bin:
parser: ./bin/babel-parser.js
- checksum: 10c0/dc7d4e6b7eb667fa0784e7e2c3f6f92ca12ad72242f6d4311995310dae55093f02acdb595b69b0dbbf04cb61ad87156ac03186ff32eacfa35149c655bc22c14b
+ checksum: 10c0/dcb08a4f2878ece33caffefe43b71488d753324bae7ca58d64bca3bc4af34dcfa1b58abdf9972516d76af760fceb25bb9294ca33461d56b31c5059ccfe32001f
languageName: node
linkType: hard
@@ -637,14 +617,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-block-scoped-functions@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.9"
+"@babel/plugin-transform-block-scoped-functions@npm:^7.26.5":
+ version: 7.26.5
+ resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.26.5"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.25.9"
+ "@babel/helper-plugin-utils": "npm:^7.26.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/e92ba0e3d72c038513844d8fca1cc8437dcb35cd42778e97fd03cb8303380b201468611e7ecfdcae3de33473b2679fe2de1552c5f925d112c5693425cf851f10
+ checksum: 10c0/2f3060800ead46b09971dd7bf830d66383b7bc61ced9945633b4ef9bf87787956ea83fcf49b387cecb377812588c6b81681714c760f9cf89ecba45edcbab1192
languageName: node
linkType: hard
@@ -768,15 +748,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-exponentiation-operator@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.9"
+"@babel/plugin-transform-exponentiation-operator@npm:^7.26.3":
+ version: 7.26.3
+ resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.26.3"
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.25.9"
"@babel/helper-plugin-utils": "npm:^7.25.9"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/3b42f65bab3fee28c385115ce6bcb6ba544dff187012df408a432c9fb44c980afd898911020c723dc1c9257aaf3d7d0131ad83ba15102bf30ad9a86fc2a8a912
+ checksum: 10c0/cac922e851c6a0831fdd2e3663564966916015aeff7f4485825fc33879cbc3a313ceb859814c9200248e2875d65bb13802a723e5d7d7b40a2e90da82a5a1e15c
languageName: node
linkType: hard
@@ -872,16 +851,15 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-modules-commonjs@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-transform-modules-commonjs@npm:7.25.9"
+"@babel/plugin-transform-modules-commonjs@npm:^7.25.9, @babel/plugin-transform-modules-commonjs@npm:^7.26.3":
+ version: 7.26.3
+ resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3"
dependencies:
- "@babel/helper-module-transforms": "npm:^7.25.9"
+ "@babel/helper-module-transforms": "npm:^7.26.0"
"@babel/helper-plugin-utils": "npm:^7.25.9"
- "@babel/helper-simple-access": "npm:^7.25.9"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/6ce771fb04d4810257fc8900374fece877dacaed74b05eaa16ad9224b390f43795c4d046cbe9ae304e1eb5aad035d37383895e3c64496d647c2128d183916e74
+ checksum: 10c0/82e59708f19f36da29531a64a7a94eabbf6ff46a615e0f5d9b49f3f59e8ef10e2bac607d749091508d3fa655146c9e5647c3ffeca781060cdabedb4c7a33c6f2
languageName: node
linkType: hard
@@ -934,7 +912,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.25.9":
+"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.26.6":
version: 7.26.6
resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.26.6"
dependencies:
@@ -1219,14 +1197,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/plugin-transform-typeof-symbol@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.9"
+"@babel/plugin-transform-typeof-symbol@npm:^7.26.7":
+ version: 7.26.7
+ resolution: "@babel/plugin-transform-typeof-symbol@npm:7.26.7"
dependencies:
- "@babel/helper-plugin-utils": "npm:^7.25.9"
+ "@babel/helper-plugin-utils": "npm:^7.26.5"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/2b19fd88608589d9bc6b607ff17b06791d35c67ef3249f4659283454e6a9984241e3bd4c4eb72bb8b3d860a73223f3874558b861adb7314aa317c1c6a2f0cafb
+ checksum: 10c0/d5640e3457637e6eee1d7205d255602ccca124ed30e4de10ec75ba179d167e0a826ceeab424e119921f5c995dfddf39ef1f2c91efd2dcbf3f0dc1e7931dfd1d1
languageName: node
linkType: hard
@@ -1293,12 +1271,12 @@ __metadata:
linkType: hard
"@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4":
- version: 7.26.0
- resolution: "@babel/preset-env@npm:7.26.0"
+ version: 7.26.7
+ resolution: "@babel/preset-env@npm:7.26.7"
dependencies:
- "@babel/compat-data": "npm:^7.26.0"
- "@babel/helper-compilation-targets": "npm:^7.25.9"
- "@babel/helper-plugin-utils": "npm:^7.25.9"
+ "@babel/compat-data": "npm:^7.26.5"
+ "@babel/helper-compilation-targets": "npm:^7.26.5"
+ "@babel/helper-plugin-utils": "npm:^7.26.5"
"@babel/helper-validator-option": "npm:^7.25.9"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.9"
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.9"
@@ -1312,7 +1290,7 @@ __metadata:
"@babel/plugin-transform-arrow-functions": "npm:^7.25.9"
"@babel/plugin-transform-async-generator-functions": "npm:^7.25.9"
"@babel/plugin-transform-async-to-generator": "npm:^7.25.9"
- "@babel/plugin-transform-block-scoped-functions": "npm:^7.25.9"
+ "@babel/plugin-transform-block-scoped-functions": "npm:^7.26.5"
"@babel/plugin-transform-block-scoping": "npm:^7.25.9"
"@babel/plugin-transform-class-properties": "npm:^7.25.9"
"@babel/plugin-transform-class-static-block": "npm:^7.26.0"
@@ -1323,7 +1301,7 @@ __metadata:
"@babel/plugin-transform-duplicate-keys": "npm:^7.25.9"
"@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.9"
"@babel/plugin-transform-dynamic-import": "npm:^7.25.9"
- "@babel/plugin-transform-exponentiation-operator": "npm:^7.25.9"
+ "@babel/plugin-transform-exponentiation-operator": "npm:^7.26.3"
"@babel/plugin-transform-export-namespace-from": "npm:^7.25.9"
"@babel/plugin-transform-for-of": "npm:^7.25.9"
"@babel/plugin-transform-function-name": "npm:^7.25.9"
@@ -1332,12 +1310,12 @@ __metadata:
"@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.9"
"@babel/plugin-transform-member-expression-literals": "npm:^7.25.9"
"@babel/plugin-transform-modules-amd": "npm:^7.25.9"
- "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9"
+ "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3"
"@babel/plugin-transform-modules-systemjs": "npm:^7.25.9"
"@babel/plugin-transform-modules-umd": "npm:^7.25.9"
"@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.9"
"@babel/plugin-transform-new-target": "npm:^7.25.9"
- "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.25.9"
+ "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.26.6"
"@babel/plugin-transform-numeric-separator": "npm:^7.25.9"
"@babel/plugin-transform-object-rest-spread": "npm:^7.25.9"
"@babel/plugin-transform-object-super": "npm:^7.25.9"
@@ -1354,7 +1332,7 @@ __metadata:
"@babel/plugin-transform-spread": "npm:^7.25.9"
"@babel/plugin-transform-sticky-regex": "npm:^7.25.9"
"@babel/plugin-transform-template-literals": "npm:^7.25.9"
- "@babel/plugin-transform-typeof-symbol": "npm:^7.25.9"
+ "@babel/plugin-transform-typeof-symbol": "npm:^7.26.7"
"@babel/plugin-transform-unicode-escapes": "npm:^7.25.9"
"@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9"
"@babel/plugin-transform-unicode-regex": "npm:^7.25.9"
@@ -1367,7 +1345,7 @@ __metadata:
semver: "npm:^6.3.1"
peerDependencies:
"@babel/core": ^7.0.0-0
- checksum: 10c0/26e19dc407cfa1c5166be638b4c54239d084fe15d8d7e6306d8c6dc7bc1decc51070a8dcf28352c1a2feeefbe52a06d193a12e302327ad5f529583df75fb7a26
+ checksum: 10c0/77d2e46a4f133768c5c8a6b3fec49a7c85c6baec601991e63458921e889ff93911f447723c3a99a6a471ca654ea6dc2aaa7ed690f3e518ee80cea7820ab80ce3
languageName: node
linkType: hard
@@ -1425,11 +1403,11 @@ __metadata:
linkType: hard
"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2":
- version: 7.26.0
- resolution: "@babel/runtime@npm:7.26.0"
+ version: 7.26.7
+ resolution: "@babel/runtime@npm:7.26.7"
dependencies:
regenerator-runtime: "npm:^0.14.0"
- checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287
+ checksum: 10c0/60199c049f90e5e41c687687430052a370aca60bac7859ff4ee761c5c1739b8ba1604d391d01588c22dc0e93828cbadb8ada742578ad1b1df240746bce98729a
languageName: node
linkType: hard
@@ -1444,28 +1422,28 @@ __metadata:
languageName: node
linkType: hard
-"@babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.9":
- version: 7.25.9
- resolution: "@babel/traverse@npm:7.25.9"
+"@babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.7":
+ version: 7.26.7
+ resolution: "@babel/traverse@npm:7.26.7"
dependencies:
- "@babel/code-frame": "npm:^7.25.9"
- "@babel/generator": "npm:^7.25.9"
- "@babel/parser": "npm:^7.25.9"
+ "@babel/code-frame": "npm:^7.26.2"
+ "@babel/generator": "npm:^7.26.5"
+ "@babel/parser": "npm:^7.26.7"
"@babel/template": "npm:^7.25.9"
- "@babel/types": "npm:^7.25.9"
+ "@babel/types": "npm:^7.26.7"
debug: "npm:^4.3.1"
globals: "npm:^11.1.0"
- checksum: 10c0/e90be586a714da4adb80e6cb6a3c5cfcaa9b28148abdafb065e34cc109676fc3db22cf98cd2b2fff66ffb9b50c0ef882cab0f466b6844be0f6c637b82719bba1
+ checksum: 10c0/b23a36ce40d2e4970741431c45d4f92e3f4c2895c0a421456516b2729bd9e17278846e01ee3d9039b0adf5fc5a071768061c17fcad040e74a5c3e39517449d5b
languageName: node
linkType: hard
-"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
- version: 7.26.0
- resolution: "@babel/types@npm:7.26.0"
+"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.5, @babel/types@npm:^7.26.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4":
+ version: 7.26.7
+ resolution: "@babel/types@npm:7.26.7"
dependencies:
"@babel/helper-string-parser": "npm:^7.25.9"
"@babel/helper-validator-identifier": "npm:^7.25.9"
- checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8
+ checksum: 10c0/7810a2bca97b13c253f07a0863a628d33dbe76ee3c163367f24be93bfaf4c8c0a325f73208abaaa050a6b36059efc2950c2e4b71fb109c0f07fa62221d8473d4
languageName: node
linkType: hard
@@ -2420,9 +2398,9 @@ __metadata:
languageName: node
linkType: hard
-"@formatjs/ts-transformer@npm:3.13.30":
- version: 3.13.30
- resolution: "@formatjs/ts-transformer@npm:3.13.30"
+"@formatjs/ts-transformer@npm:3.13.31":
+ version: 3.13.31
+ resolution: "@formatjs/ts-transformer@npm:3.13.31"
dependencies:
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
"@types/json-stable-stringify": "npm:1"
@@ -2432,11 +2410,11 @@ __metadata:
tslib: "npm:2"
typescript: "npm:5"
peerDependencies:
- ts-jest: ">=27"
+ ts-jest: 27 || 28 || 29
peerDependenciesMeta:
ts-jest:
optional: true
- checksum: 10c0/ef828b477863b8205390ed42d94c4a8d4fcab10d4982e27dc3feaa85c1e2da317b73108f8d3b32f6191d1c5c41eb34d6909a53ba734dfca9146842992268d95c
+ checksum: 10c0/bfd7a41203c2b1691d883b3c306f3ae413b94c4875dec75df2be0e62da22625f673e41ecdc3257be40fe4a5b22a311365c2462d00a98f9bac59f00488543add0
languageName: node
linkType: hard
@@ -3286,8 +3264,8 @@ __metadata:
linkType: hard
"@reduxjs/toolkit@npm:^2.0.1":
- version: 2.5.0
- resolution: "@reduxjs/toolkit@npm:2.5.0"
+ version: 2.5.1
+ resolution: "@reduxjs/toolkit@npm:2.5.1"
dependencies:
immer: "npm:^10.0.3"
redux: "npm:^5.0.1"
@@ -3301,7 +3279,7 @@ __metadata:
optional: true
react-redux:
optional: true
- checksum: 10c0/81748a5a6d2f52a14769b6ed25aea1e77cda81b1db6599c7c3a1d1605696c65c4469f55146c2b2a7a2f8ebafa5ecd4996aa8deecb37aebb5307217ec2fe384ac
+ checksum: 10c0/e25dd4085e5611d21d4e8d47716072e12318ef8171323d40a80c5b8e79e6d514a973718eb44e41f8491355f7a15e488a0e9f88a97c237327de2615a00b470929
languageName: node
linkType: hard
@@ -5341,8 +5319,8 @@ __metadata:
linkType: hard
"babel-plugin-formatjs@npm:^10.5.1":
- version: 10.5.33
- resolution: "babel-plugin-formatjs@npm:10.5.33"
+ version: 10.5.34
+ resolution: "babel-plugin-formatjs@npm:10.5.34"
dependencies:
"@babel/core": "npm:^7.25.0"
"@babel/helper-plugin-utils": "npm:^7.25.0"
@@ -5350,12 +5328,12 @@ __metadata:
"@babel/traverse": "npm:^7.25.0"
"@babel/types": "npm:^7.25.0"
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
- "@formatjs/ts-transformer": "npm:3.13.30"
+ "@formatjs/ts-transformer": "npm:3.13.31"
"@types/babel__core": "npm:^7.20.5"
"@types/babel__helper-plugin-utils": "npm:^7.10.3"
"@types/babel__traverse": "npm:^7.20.6"
tslib: "npm:2"
- checksum: 10c0/57c0477c576fbf717a11f0ca15d3f18990264a36f20d8d7e2b66461ed1e6b6880bb4b7847b7f4289a81b45f36b7ec2687becb2dde5006b53f97953b3cc3bc39b
+ checksum: 10c0/6e6c67db41044427a7f182e7c18a8519e5aca96645de094244b332cb8c82ed498c56a4634e4e4ed1a4ef85c8e996669ef5bddd63ee9c45d6e512cbbf782af2a2
languageName: node
linkType: hard
@@ -14636,24 +14614,24 @@ __metadata:
linkType: hard
"react-intl@npm:^7.0.0":
- version: 7.1.3
- resolution: "react-intl@npm:7.1.3"
+ version: 7.1.5
+ resolution: "react-intl@npm:7.1.5"
dependencies:
"@formatjs/ecma402-abstract": "npm:2.3.2"
"@formatjs/icu-messageformat-parser": "npm:2.11.0"
"@formatjs/intl": "npm:3.1.3"
"@types/hoist-non-react-statics": "npm:3"
- "@types/react": "npm:16 || 17 || 18"
+ "@types/react": "npm:16 || 17 || 18 || 19"
hoist-non-react-statics: "npm:3"
intl-messageformat: "npm:10.7.14"
tslib: "npm:2"
peerDependencies:
- react: ^16.6.0 || 17 || 18
+ react: ^16.6.0 || 17 || 18 || 19
typescript: 5
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/64d635819f4bdd09325ca4f7479c7b0254b45da76cc1cb70c4b51a404bf1cf2976125d4df5874fe34527e84813703ac6ff707e06e0e96616951fae1f20f9d246
+ checksum: 10c0/9d8d5afae16d26466f82fc1c0b8c4afd7559a8faa5b3ef31983a0af540b1b225fa89208b48bf9ec83056c0a27f2972fb86f2717422f788efdc819fb0e0846134
languageName: node
linkType: hard
@@ -14814,8 +14792,8 @@ __metadata:
linkType: hard
"react-select@npm:^5.7.3":
- version: 5.9.0
- resolution: "react-select@npm:5.9.0"
+ version: 5.10.0
+ resolution: "react-select@npm:5.10.0"
dependencies:
"@babel/runtime": "npm:^7.12.0"
"@emotion/cache": "npm:^11.4.0"
@@ -14829,7 +14807,7 @@ __metadata:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- checksum: 10c0/f21f18ca41a8c866ab69f9c65253e86dcc5323477bbfc729bf6aa9d897e04e27cfffd13c07f10b70dc554e15ad1d238c1283e05e457bf4ead8526a1dd7fbc8b0
+ checksum: 10c0/64cc73ef43556d0a199420d7d19f9f72e3c5e3a7f6828aef5421ec16cc0e4bc337061a8fa3c03afc5b929a087a4ca866f497e0ef865b03fe014c5cacde5e71dd
languageName: node
linkType: hard