diff --git a/AppShared/Info.plist b/AppShared/Info.plist
index 92f44289..a187ca26 100644
--- a/AppShared/Info.plist
+++ b/AppShared/Info.plist
@@ -15,8 +15,8 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleVersion
- 126
+ 127
diff --git a/Localization/StringsConvertor/Intents/input/fi_FI/Intents.strings b/Localization/StringsConvertor/Intents/input/fi_FI/Intents.strings
index 6877490b..1be213d4 100644
--- a/Localization/StringsConvertor/Intents/input/fi_FI/Intents.strings
+++ b/Localization/StringsConvertor/Intents/input/fi_FI/Intents.strings
@@ -1,51 +1,51 @@
-"16wxgf" = "Post on Mastodon";
+"16wxgf" = "Julkaise Mastodonissa";
-"751xkl" = "Text Content";
+"751xkl" = "Tekstisisältö";
-"CsR7G2" = "Post on Mastodon";
+"CsR7G2" = "Julkaise Mastodonissa";
-"HZSGTr" = "What content to post?";
+"HZSGTr" = "Mitä sisältöä julkaista?";
-"HdGikU" = "Posting failed";
+"HdGikU" = "Julkaiseminen epäonnistui";
-"KDNTJ4" = "Failure Reason";
+"KDNTJ4" = "Epäonnistumisen syy";
-"RHxKOw" = "Send Post with text content";
+"RHxKOw" = "Lähetä julkaisu teksisisällöllä";
-"RxSqsb" = "Post";
+"RxSqsb" = "Julkaisu";
-"WCIR3D" = "Post ${content} on Mastodon";
+"WCIR3D" = "Julkaise ${content} Mastodonissa";
-"ZKJSNu" = "Post";
+"ZKJSNu" = "Julkaisu";
"ZS1XaK" = "${content}";
-"ZbSjzC" = "Visibility";
+"ZbSjzC" = "Näkyvyys";
-"Zo4jgJ" = "Post Visibility";
+"Zo4jgJ" = "Julkaisun näkyvyys";
-"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
+"apSxMG-dYQ5NN" = "On ${count} vaihtoehtoa, jotka vastaavat ‘Julkinen’.";
-"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’.";
+"apSxMG-ehFLjY" = "On ${count} vaihtoehtoa, jotka vastaavat ‘Vain seuraajat’.";
-"ayoYEb-dYQ5NN" = "${content}, Public";
+"ayoYEb-dYQ5NN" = "${content}, julkinen";
-"ayoYEb-ehFLjY" = "${content}, Followers Only";
+"ayoYEb-ehFLjY" = "${content}, vain seuraajat";
-"dUyuGg" = "Post on Mastodon";
+"dUyuGg" = "Julkaise Mastodonissa";
-"dYQ5NN" = "Public";
+"dYQ5NN" = "Julkinen";
-"ehFLjY" = "Followers Only";
+"ehFLjY" = "Vain seuraajat";
-"gfePDu" = "Posting failed. ${failureReason}";
+"gfePDu" = "Julkaiseminen epäonnistui. ${failureReason}";
-"k7dbKQ" = "Post was sent successfully.";
+"k7dbKQ" = "Julkaisu lähetettiin onnistuneesti.";
-"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?";
+"oGiqmY-dYQ5NN" = "Vahvitukseksi, halusit ‘Julkinen’?";
-"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?";
+"oGiqmY-ehFLjY" = "Vahvitstukseksi, halusit ‘Vain seuraajat’?";
"rM6dvp" = "URL";
-"ryJLwG" = "Post was sent successfully. ";
+"ryJLwG" = "Julkaisu lähetettiin onnistuneesti. ";
diff --git a/Localization/StringsConvertor/Intents/input/fi_FI/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/fi_FI/Intents.stringsdict
index 18422c77..7825b778 100644
--- a/Localization/StringsConvertor/Intents/input/fi_FI/Intents.stringsdict
+++ b/Localization/StringsConvertor/Intents/input/fi_FI/Intents.stringsdict
@@ -5,7 +5,7 @@
There are ${count} options matching ‘${content}’. - 2
NSStringLocalizedFormatKey
- There are %#@count_option@ matching ‘${content}’.
+ On %#@count_option@, joka/jotka vastaavat sisältöön ‘${content}’.
count_option
NSStringFormatSpecTypeKey
@@ -13,15 +13,15 @@
NSStringFormatValueTypeKey
%ld
one
- 1 option
+ 1 vaihtoehto
other
- %ld options
+ %ld vaihtoehtoa
There are ${count} options matching ‘${visibility}’.
NSStringLocalizedFormatKey
- There are %#@count_option@ matching ‘${visibility}’.
+ On vaihtoehtoa %#@count_option@, joka/jotka vastaavat näkyvyyteen ‘${visibility}’.
count_option
NSStringFormatSpecTypeKey
@@ -29,9 +29,9 @@
NSStringFormatValueTypeKey
%ld
one
- 1 option
+ 1 vaihtoehto
other
- %ld options
+ %ld vaihtoehtoa
diff --git a/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings
index 6877490b..2083cc70 100644
--- a/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings
+++ b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings
@@ -1,51 +1,51 @@
-"16wxgf" = "Post on Mastodon";
+"16wxgf" = "Publicar en Mastodon";
-"751xkl" = "Text Content";
+"751xkl" = "Texto a incluír";
-"CsR7G2" = "Post on Mastodon";
+"CsR7G2" = "Publicar en Mastodon";
-"HZSGTr" = "What content to post?";
+"HZSGTr" = "Cal é o contido a publicar?";
-"HdGikU" = "Posting failed";
+"HdGikU" = "Fallou a publicación";
-"KDNTJ4" = "Failure Reason";
+"KDNTJ4" = "Razón do fallo";
-"RHxKOw" = "Send Post with text content";
+"RHxKOw" = "Enviar Publicación con texto";
-"RxSqsb" = "Post";
+"RxSqsb" = "Publicación";
-"WCIR3D" = "Post ${content} on Mastodon";
+"WCIR3D" = "Publicar ${content} en Mastodon";
-"ZKJSNu" = "Post";
+"ZKJSNu" = "Publicación";
"ZS1XaK" = "${content}";
-"ZbSjzC" = "Visibility";
+"ZbSjzC" = "Visibilidade";
-"Zo4jgJ" = "Post Visibility";
+"Zo4jgJ" = "Visibilidade da publicación";
-"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
+"apSxMG-dYQ5NN" = "Hai ${count} opcións que coinciden con ‘Público’.";
-"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’.";
+"apSxMG-ehFLjY" = "Hai ${count} opcións que coinciden con 'Só seguidoras’.";
-"ayoYEb-dYQ5NN" = "${content}, Public";
+"ayoYEb-dYQ5NN" = "${content}, Público";
-"ayoYEb-ehFLjY" = "${content}, Followers Only";
+"ayoYEb-ehFLjY" = "${content}, Só seguidoras";
-"dUyuGg" = "Post on Mastodon";
+"dUyuGg" = "Publicar en Mastodon";
-"dYQ5NN" = "Public";
+"dYQ5NN" = "Público";
-"ehFLjY" = "Followers Only";
+"ehFLjY" = "Só seguidoras";
-"gfePDu" = "Posting failed. ${failureReason}";
+"gfePDu" = "Fallou a publicación. ${failureReason}";
-"k7dbKQ" = "Post was sent successfully.";
+"k7dbKQ" = "Publicación correcta.";
-"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?";
+"oGiqmY-dYQ5NN" = "Só para confirmar, querías ’Público'?";
-"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?";
+"oGiqmY-ehFLjY" = "Só para confirmar, querías ’Só para seguidoras'?";
"rM6dvp" = "URL";
-"ryJLwG" = "Post was sent successfully. ";
+"ryJLwG" = "Publicación correcta. ";
diff --git a/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict
index 18422c77..6e3a897f 100644
--- a/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict
+++ b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict
@@ -5,7 +5,7 @@
There are ${count} options matching ‘${content}’. - 2
NSStringLocalizedFormatKey
- There are %#@count_option@ matching ‘${content}’.
+ Hai %#@count_option@ coincidencias con '${content}'.
count_option
NSStringFormatSpecTypeKey
@@ -13,15 +13,15 @@
NSStringFormatValueTypeKey
%ld
one
- 1 option
+ 1 opción
other
- %ld options
+ %ld opcións
There are ${count} options matching ‘${visibility}’.
NSStringLocalizedFormatKey
- There are %#@count_option@ matching ‘${visibility}’.
+ Hai %#@count_option@ coincidentes con '${visibility}'.
count_option
NSStringFormatSpecTypeKey
@@ -29,9 +29,9 @@
NSStringFormatValueTypeKey
%ld
one
- 1 option
+ 1 opción
other
- %ld options
+ %ld opcións
diff --git a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings
index 83e02871..526e495d 100644
--- a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings
+++ b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings
@@ -1,22 +1,22 @@
-"16wxgf" = "Posta på Mastodon";
+"16wxgf" = "Publicera på Mastodon";
"751xkl" = "Textinnehåll";
-"CsR7G2" = "Posta på Mastodon";
+"CsR7G2" = "Publicera på Mastodon";
-"HZSGTr" = "Vilket innehåll ska jag posta?";
+"HZSGTr" = "Vilket innehåll ska publiceras?";
-"HdGikU" = "Inlägget misslyckades";
+"HdGikU" = "Publiceringen misslyckades";
"KDNTJ4" = "Felorsak";
"RHxKOw" = "Skicka inlägg med textinnehåll";
-"RxSqsb" = "Posta";
+"RxSqsb" = "Inlägg";
-"WCIR3D" = "Posta ${content} på Mastodon";
+"WCIR3D" = "Publicera ${content} på Mastodon";
-"ZKJSNu" = "Posta";
+"ZKJSNu" = "Inlägg";
"ZS1XaK" = "${content}";
@@ -24,28 +24,28 @@
"Zo4jgJ" = "Inläggssynlighet";
-"apSxMG-dYQ5NN" = "Det finns ${count} alternativ som matchar ‘Publikt’.";
+"apSxMG-dYQ5NN" = "Det finns ${count} alternativ som matchar ‘Offentligt’.";
"apSxMG-ehFLjY" = "Det finns ${count} alternativ som matchar ‘Endast följare’.";
-"ayoYEb-dYQ5NN" = "${content}, Publikt";
+"ayoYEb-dYQ5NN" = "${content}, Offentligt";
"ayoYEb-ehFLjY" = "${content}, Endast följare";
-"dUyuGg" = "Posta på Mastodon";
+"dUyuGg" = "Publicera på Mastodon";
-"dYQ5NN" = "Publikt";
+"dYQ5NN" = "Offentligt";
"ehFLjY" = "Endast följare";
-"gfePDu" = "Inlägget misslyckades. ${failureReason}";
+"gfePDu" = "Publicering misslyckades. ${failureReason}";
-"k7dbKQ" = "Inlägget har postats.";
+"k7dbKQ" = "Inlägget har publicerats.";
-"oGiqmY-dYQ5NN" = "Bara för att bekräfta, ville du ha 'Publikt'?";
+"oGiqmY-dYQ5NN" = "Bara för att bekräfta, ville du ha 'Offentligt'?";
"oGiqmY-ehFLjY" = "Bara för att bekräfta, ville du ha 'Endast följare'?";
"rM6dvp" = "URL";
-"ryJLwG" = "Inlägget har postats. ";
+"ryJLwG" = "Inlägget har publicerats. ";
diff --git a/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict b/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict
index c2f64172..dddba513 100644
--- a/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict
+++ b/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict
@@ -109,7 +109,7 @@
NSStringFormatValueTypeKey
ld
zero
- لا منشور
+ لا مَنشورات
one
منشورٌ واحِد
two
@@ -447,13 +447,13 @@
zero
تتبقى لَحظة
one
- تتبقى ثانية
+ تتبقى ثانية واحِدة
two
- تتبقى ثانيتين
+ تتبقى ثانيتان
few
تتبقى %ld ثوان
many
- تتبقى %ld ثانيةً
+ تتبقى %ld ثانية
other
تتبقى %ld ثانية
diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json
index 4b28b011..f06aba50 100644
--- a/Localization/StringsConvertor/input/ar_SA/app.json
+++ b/Localization/StringsConvertor/input/ar_SA/app.json
@@ -71,7 +71,7 @@
"cancel": "إلغاء",
"discard": "تجاهُل",
"try_again": "المُحاولة مرة أُخرى",
- "take_photo": "التقاط صورة",
+ "take_photo": "اِلتِقاطُ صُورَة",
"save_photo": "حفظ الصورة",
"copy_photo": "نسخ الصورة",
"sign_in": "تسجيل الدخول",
@@ -240,7 +240,8 @@
"category": "الفئة"
},
"input": {
- "placeholder": "اِبحَث عن خادِم أو انضم إلى آخر خاص بك..."
+ "placeholder": "اِبحَث عن خادِم أو انضم إلى آخر خاص بك...",
+ "search_servers_or_enter_url": "اِبحث عَن مُجتَمَعَات أو أدخِل عُنوانَ URL"
},
"empty_state": {
"finding_servers": "يجري إيجاد خوادم متوفِّرَة...",
@@ -342,7 +343,11 @@
"offline": "غَير مُتَّصِل",
"new_posts": "إظهار منشورات جديدة",
"published": "تمَّ النَّشر!",
- "Publishing": "يَجري نَشر المُشارَكَة..."
+ "Publishing": "يَجري نَشر المُشارَكَة...",
+ "accessibility": {
+ "logo_label": "ُّزِرُّ الشِّعار",
+ "logo_hint": "اُنقُر لِلتمريرِ لأعلى واُنقُر مَرّةً أُخرَى لِلذَّهابِ إلَى المَوقِعِ السَّابِق"
+ }
}
},
"suggestion_account": {
@@ -355,11 +360,11 @@
"new_reply": "رَدٌّ جديد"
},
"media_selection": {
- "camera": "إلتقاط صورة",
- "photo_library": "مكتبة الصور",
- "browse": "تصفح"
+ "camera": "اِلتِقاطُ صُورَة",
+ "photo_library": "مَكتَبَةُ الصُّوَر",
+ "browse": "تَصَفَّح"
},
- "content_input_placeholder": "أخبِرنا بِما يَجُولُ فِي ذِهنَك",
+ "content_input_placeholder": "عَبِّر عَمَّ يَجُولُ فِي ذِهنِك",
"compose_action": "نَشر",
"replying_to_user": "رَدًا على %s",
"attachment": {
@@ -588,15 +593,56 @@
"report": {
"title_report": "إبلاغ",
"title": "الإبلاغ عن %s",
- "step1": "الخطوة الأولى مِن أصل اثنتين",
- "step2": "الخطوة الثانية والأخيرة",
+ "step1": "الخطوة 1 مِن أصل 2",
+ "step2": "الخطوة 2 مِن أصل 2",
"content1": "هل ترغب في إضافة أي منشورات أُخرى إلى البلاغ؟",
"content2": "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذا البلاغ؟",
"report_sent_title": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.",
"send": "إرسال البلاغ",
"skip_to_send": "إرسال بدون تعليق",
"text_placeholder": "اكتب أو الصق تعليقات إضافيَّة",
- "reported": "مُبْلَغٌ عَنه"
+ "reported": "مُبْلَغٌ عَنه",
+ "step_one": {
+ "step_1_of_4": "الخطوة 1 مِن أصل 4",
+ "whats_wrong_with_this_post": "ما المُشكِلَةُ فِي هَذَا المَنشُور؟",
+ "whats_wrong_with_this_account": "ما المُشكِلَةُ فِي هَذَا الحِساب؟",
+ "whats_wrong_with_this_username": "ما المُشكِلَة مَعَ %s؟",
+ "select_the_best_match": "اِختَر أفضلَ تَطابُق",
+ "i_dont_like_it": "لا يُعجِبُني",
+ "it_is_not_something_you_want_to_see": "إنَّهُ ليسَ شيئًا تُريدُ رُؤيَتَه",
+ "its_spam": "إنَّهُ غَيرٌ مَرغوبٍ فيه",
+ "malicious_links_fake_engagement_or_repetetive_replies": "رَوابِطٌ ضَارَّة، اِرتِباطاتٌ مُزيَّفَة أو رُدودٌ مُتَكَرِّرَة",
+ "it_violates_server_rules": "يَنتَهِكُ قَواعِدَ الخادِم",
+ "you_are_aware_that_it_breaks_specific_rules": "أنتَ مُدِركٌ لِانتِهاكِهِ قَواعِدًا مُحَدَّدَة",
+ "its_something_else": "إنَّهُ شَيءٌ آخَر",
+ "the_issue_does_not_fit_into_other_categories": "المُشكِلَةُ لَا تَتَناسَبُ مَعَ الفِئاتِ الأُخرَى"
+ },
+ "step_two": {
+ "step_2_of_4": "الخطوة 2 مِن أصل 4",
+ "which_rules_are_being_violated": "مَا هِيَ القَواعِدُ الَّتي تُنتَهَك؟",
+ "select_all_that_apply": "اِختَر كُلَّ ما يَنطَبِق",
+ "i_just_don’t_like_it": "أنا فَقَط لا يُعجِبُني"
+ },
+ "step_three": {
+ "step_3_of_4": "الخطوة 3 مِن أصل 4",
+ "are_there_any_posts_that_back_up_this_report": "هَل هُناكَ أيُّ مَنشُوراتٍ أُخرَى تَتَوافَقُ مَعَ هَذَا التَّقرير؟",
+ "select_all_that_apply": "اِختَر كُلَّ ما يَنطَبِق"
+ },
+ "step_four": {
+ "step_4_of_4": "الخطوة 4 مِن أصل 4",
+ "is_there_anything_else_we_should_know": "هَل هُناكَ شَيءٌ آخَرَ يَجِبُ أن نَعلَمَ بِه؟"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "ألَا تُريدُ رُؤيَةَ هَذَا؟",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "عِندما تَرى شيئًا لَا يُعجِبُكَ عَلَى مَاستودُون، يُمكِنُكَ إزالَةُ الشَّخصِ مِن تَجرِبَتِك.",
+ "unfollow": "إلغاءُ المُتابَعَة",
+ "unfollowed": "أُلغِيَت المُتابَعَة",
+ "unfollow_user": "إلغاءُ مُتابَعَةِ %s",
+ "mute_user": "كَتمُ %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "لَن تَرى مُشارَكاتِهِ أو إعادَاتِ تَدوينَهِ فِي تغذيَتِكَ الرَّئيسَة. لَن يَعرِفَ أنَّهُ قَد كُتِمَ أيضًا.",
+ "block_user": "حَظرُ %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "لَن يَتمكَّنَ بَعدَ الآنِ مِن مُتابَعَةِ مَنشوراتِكَ أو رُؤيَتِها، وَلكِن يُمكِنَهُ مَعرِفَةُ مَا إذا حُظَرِت عَنه."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json
index 7789c616..8d8e94cb 100644
--- a/Localization/StringsConvertor/input/ca_ES/app.json
+++ b/Localization/StringsConvertor/input/ca_ES/app.json
@@ -240,16 +240,17 @@
"category": "CATEGORIA"
},
"input": {
- "placeholder": "Troba un servidor o uneix-te al teu..."
+ "placeholder": "Cerca servidors",
+ "search_servers_or_enter_url": "Cerca comunitats o introdueix l'URL"
},
"empty_state": {
"finding_servers": "Cercant els servidors disponibles...",
- "bad_network": "S'ha produït un error en carregar les dades. Comprova la teva connexió a Internet.",
+ "bad_network": "Alguna cosa no ha anat bé en carregar les dades. Comprova la teva connexió a Internet.",
"no_results": "No hi ha resultats"
}
},
"register": {
- "title": "Parla'ns de tu.",
+ "title": "Anem a configurar-te a %s",
"input": {
"avatar": {
"delete": "Suprimeix"
@@ -309,7 +310,7 @@
},
"server_rules": {
"title": "Algunes regles bàsiques.",
- "subtitle": "Aquestes regles estan establertes per els administradors de %s.",
+ "subtitle": "Aquestes regles estan establertes i aplicades per els moderadors de %s.",
"prompt": "Al continuar, estàs subjecte als termes de servei i a la política de privacitat de %s.",
"terms_of_service": "termes del servei",
"privacy_policy": "política de privadesa",
@@ -342,11 +343,15 @@
"offline": "Fora de línia",
"new_posts": "Veure noves publicacions",
"published": "Publicat!",
- "Publishing": "S'està publicant..."
+ "Publishing": "S'està publicant...",
+ "accessibility": {
+ "logo_label": "Botó de logotip",
+ "logo_hint": "Toca per desplaçar-te cap a dalt i torna a toca de nou per tornar a la ubicació anterior"
+ }
}
},
"suggestion_account": {
- "title": "Cerca Persones per Seguir",
+ "title": "Cerca Persones a Seguir",
"follow_explain": "Quan segueixes algú, veuràs les seves publicacions a Inici."
},
"compose": {
@@ -596,7 +601,48 @@
"send": "Envia Informe",
"skip_to_send": "Envia sense comentaris",
"text_placeholder": "Escriu o enganxa comentaris addicionals",
- "reported": "REPORTAT"
+ "reported": "REPORTAT",
+ "step_one": {
+ "step_1_of_4": "Pas 1 de 4",
+ "whats_wrong_with_this_post": "Quin és el problema amb aquesta publicació?",
+ "whats_wrong_with_this_account": "Quin és el problema amb aquest compte?",
+ "whats_wrong_with_this_username": "Quin és el problema amb %s?",
+ "select_the_best_match": "Selecciona la millor coincidència",
+ "i_dont_like_it": "No m'agrada",
+ "it_is_not_something_you_want_to_see": "No és una cosa que vulguis veure",
+ "its_spam": "És contingut brossa",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Enllaços maliciosos, compromís falç o respostes repetitives",
+ "it_violates_server_rules": "Infringeix les normes del servidor",
+ "you_are_aware_that_it_breaks_specific_rules": "Ets conscient que incompleix normes específiques",
+ "its_something_else": "És una altra cosa",
+ "the_issue_does_not_fit_into_other_categories": "El problema no encaixa en altres categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Pas 2 de 4",
+ "which_rules_are_being_violated": "Quines normes s'estan infringint?",
+ "select_all_that_apply": "Selecciona tot el que correspongui",
+ "i_just_don’t_like_it": "Simplement no m'agrada"
+ },
+ "step_three": {
+ "step_3_of_4": "Pas 3 de 4",
+ "are_there_any_posts_that_back_up_this_report": "Hi ha alguna publicació que recolzi aquest informe?",
+ "select_all_that_apply": "Selecciona tot el que correspongui"
+ },
+ "step_four": {
+ "step_4_of_4": "Pas 4 de 4",
+ "is_there_anything_else_we_should_know": "Hi ha res més que hauríem de saber?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "No vols veure això?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "Quan veus alguna cosa que no t'agrada a Mastodon, pots eliminar la persona de la vostra experiència.",
+ "unfollow": "Deixa de seguir",
+ "unfollowed": "S'ha deixat de seguir",
+ "unfollow_user": "Deixa de seguir %s",
+ "mute_user": "Silencia %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "No veuràs les seves publicacions o impulsos a la teva línia de temps personal. No sabran que han estat silenciats.",
+ "block_user": "Bloca %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "Ja no podran seguir ni veure les teves publicacions, però poden veure si han estat bloquejats."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/ckb_IR/app.json b/Localization/StringsConvertor/input/ckb_IR/app.json
index de4aab37..94892431 100644
--- a/Localization/StringsConvertor/input/ckb_IR/app.json
+++ b/Localization/StringsConvertor/input/ckb_IR/app.json
@@ -240,7 +240,8 @@
"category": "بەش"
},
"input": {
- "placeholder": "بگەڕێ"
+ "placeholder": "بگەڕێ",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "ڕاژەکار دەدۆزرێتەوە...",
@@ -342,7 +343,11 @@
"offline": "دەرهێڵ",
"new_posts": "پۆستە نوێکان ببینە",
"published": "بڵاوکرایەوە!",
- "Publishing": "پۆستەکە بڵاو دەکرێتەوە..."
+ "Publishing": "پۆستەکە بڵاو دەکرێتەوە...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "سکاڵاکە بنێرە",
"skip_to_send": "بەبێ لێدوان بینێرە",
"text_placeholder": "ڕوونکردنەوەی زۆرتر بدە",
- "reported": "سکاڵای لێ کرا"
+ "reported": "سکاڵای لێ کرا",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict b/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict
index e0f1e0f2..94759d78 100644
--- a/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict
+++ b/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict
@@ -47,7 +47,7 @@
many
%ld characters
other
- %ld characters
+ %ld nodau
a11y.plural.count.input_limit_remains
@@ -85,17 +85,17 @@
NSStringFormatValueTypeKey
ld
zero
- posts
+ post
one
post
two
- posts
+ postiau
few
posts
many
posts
other
- posts
+ postiau
plural.count.post
diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json
index 50512250..9297b165 100644
--- a/Localization/StringsConvertor/input/cy_GB/app.json
+++ b/Localization/StringsConvertor/input/cy_GB/app.json
@@ -138,7 +138,7 @@
},
"actions": {
"reply": "Reply",
- "reblog": "Reblog",
+ "reblog": "Hybwch",
"unreblog": "Undo reblog",
"favorite": "Favorite",
"unfavorite": "Unfavorite",
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -411,7 +416,7 @@
},
"profile": {
"dashboard": {
- "posts": "posts",
+ "posts": "postiadau",
"following": "following",
"followers": "followers"
},
@@ -423,9 +428,9 @@
}
},
"segmented_control": {
- "posts": "Posts",
+ "posts": "Postiadau",
"replies": "Replies",
- "posts_and_replies": "Posts and Replies",
+ "posts_and_replies": "Postiadau ac Atebion",
"media": "Media",
"about": "About"
},
@@ -484,7 +489,7 @@
"all": "All",
"people": "People",
"hashtags": "Hashtags",
- "posts": "Posts"
+ "posts": "Postiadau"
},
"empty_state": {
"no_results": "No results"
@@ -495,7 +500,7 @@
},
"discovery": {
"tabs": {
- "posts": "Posts",
+ "posts": "Postiadau",
"hashtags": "Hashtags",
"news": "News",
"community": "Community",
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/cy_GB/ios-infoPlist.json b/Localization/StringsConvertor/input/cy_GB/ios-infoPlist.json
index c6db73de..ee0c5bfe 100644
--- a/Localization/StringsConvertor/input/cy_GB/ios-infoPlist.json
+++ b/Localization/StringsConvertor/input/cy_GB/ios-infoPlist.json
@@ -1,6 +1,6 @@
{
"NSCameraUsageDescription": "Used to take photo for post status",
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
- "NewPostShortcutItemTitle": "New Post",
- "SearchShortcutItemTitle": "Search"
+ "NewPostShortcutItemTitle": "Post Newydd",
+ "SearchShortcutItemTitle": "Chwilio"
}
diff --git a/Localization/StringsConvertor/input/da_DK/app.json b/Localization/StringsConvertor/input/da_DK/app.json
index 50512250..8de2dc0b 100644
--- a/Localization/StringsConvertor/input/da_DK/app.json
+++ b/Localization/StringsConvertor/input/da_DK/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json
index 75b01afd..ddd60144 100644
--- a/Localization/StringsConvertor/input/de_DE/app.json
+++ b/Localization/StringsConvertor/input/de_DE/app.json
@@ -129,7 +129,7 @@
"show_post": "Beitrag anzeigen",
"show_user_profile": "Benutzerprofil anzeigen",
"content_warning": "Inhaltswarnung",
- "sensitive_content": "Sensitive Content",
+ "sensitive_content": "NSFW-Inhalt",
"media_content_warning": "Tippe irgendwo zum Anzeigen",
"tap_to_reveal": "Zum Anzeigen tippen",
"poll": {
@@ -240,7 +240,8 @@
"category": "KATEGORIE"
},
"input": {
- "placeholder": "Finde einen Server oder trete deinem eigenen bei..."
+ "placeholder": "Finde einen Server oder trete deinem eigenen bei...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Verfügbare Server werden gesucht...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "Neue Beiträge anzeigen",
"published": "Veröffentlicht!",
- "Publishing": "Beitrag wird veröffentlicht..."
+ "Publishing": "Beitrag wird veröffentlicht...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -501,7 +506,7 @@
"community": "Community",
"for_you": "Für dich"
},
- "intro": "These are the posts gaining traction in your corner of Mastodon."
+ "intro": "Dies sind die Beiträge, die in deiner Umgebung auf Mastodon beliebter werden."
},
"favorite": {
"title": "Deine Favoriten"
@@ -596,7 +601,48 @@
"send": "Meldung abschicken",
"skip_to_send": "Ohne Kommentar abschicken",
"text_placeholder": "Zusätzliche Kommentare eingeben oder einfügen",
- "reported": "GEMELDET"
+ "reported": "GEMELDET",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
@@ -612,7 +658,7 @@
},
"wizard": {
"new_in_mastodon": "Neu in Mastodon",
- "multiple_account_switch_intro_description": "Wechsel zwischen mehreren Konten durch drücken der Profil-Schaltfläche.",
+ "multiple_account_switch_intro_description": "Wechsel zwischen mehreren Konten durch Drücken der Profil-Schaltfläche.",
"accessibility_hint": "Doppeltippen, um diesen Assistenten zu schließen"
}
}
diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json
index 50512250..8de2dc0b 100644
--- a/Localization/StringsConvertor/input/en_US/app.json
+++ b/Localization/StringsConvertor/input/en_US/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json
index 8ef75d10..e0e7bbe1 100644
--- a/Localization/StringsConvertor/input/es_AR/app.json
+++ b/Localization/StringsConvertor/input/es_AR/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORÍA"
},
"input": {
- "placeholder": "Encontrá un servidor o unite al tuyo…"
+ "placeholder": "Encontrá un servidor o unite al tuyo…",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Buscando servidores disponibles…",
@@ -342,7 +343,11 @@
"offline": "Desconectado",
"new_posts": "Ver nuevos mensajes",
"published": "¡Enviado!",
- "Publishing": "Enviando mensaje…"
+ "Publishing": "Enviando mensaje…",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -498,7 +503,7 @@
"posts": "Mensajes",
"hashtags": "Etiquetas",
"news": "Novedades",
- "community": "Community",
+ "community": "Comunidad",
"for_you": "Para vos"
},
"intro": "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon."
@@ -596,7 +601,48 @@
"send": "Enviar denuncia",
"skip_to_send": "Enviar sin comentarios",
"text_placeholder": "Escribí o pegá comentarios adicionales",
- "reported": "DENUNCIADA"
+ "reported": "DENUNCIADA",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json
index b74b8e5e..614192cb 100644
--- a/Localization/StringsConvertor/input/es_ES/app.json
+++ b/Localization/StringsConvertor/input/es_ES/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORÍA"
},
"input": {
- "placeholder": "Encuentra un servidor o únete al tuyo propio..."
+ "placeholder": "Encuentra un servidor o únete al tuyo propio...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Encontrando servidores disponibles...",
@@ -342,7 +343,11 @@
"offline": "Sin Conexión",
"new_posts": "Ver nuevas publicaciones",
"published": "¡Publicado!",
- "Publishing": "Publicación en curso..."
+ "Publishing": "Publicación en curso...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Enviar Reporte",
"skip_to_send": "Enviar sin comentarios",
"text_placeholder": "Escribe o pega comentarios adicionales",
- "reported": "REPORTADO"
+ "reported": "REPORTADO",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json
index 6905c37a..286c58da 100644
--- a/Localization/StringsConvertor/input/eu_ES/app.json
+++ b/Localization/StringsConvertor/input/eu_ES/app.json
@@ -240,7 +240,8 @@
"category": "KATEGORIA"
},
"input": {
- "placeholder": "Bilatu zerbitzari bat edo sortu zurea..."
+ "placeholder": "Bilatu zerbitzari bat edo sortu zurea...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Erabilgarri dauden zerbitzariak bilatzen...",
@@ -342,7 +343,11 @@
"offline": "Konexio gabe",
"new_posts": "Ikusi bidal. berriak",
"published": "Argitaratua!",
- "Publishing": "Bidalketa argitaratzen..."
+ "Publishing": "Bidalketa argitaratzen...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Bidali salaketa",
"skip_to_send": "Bidali iruzkinik gabe",
"text_placeholder": "Idatzi edo itsatsi iruzkin gehigarriak",
- "reported": "SALATUA"
+ "reported": "SALATUA",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/fi_FI/Localizable.stringsdict b/Localization/StringsConvertor/input/fi_FI/Localizable.stringsdict
index 503ff9db..43231214 100644
--- a/Localization/StringsConvertor/input/fi_FI/Localizable.stringsdict
+++ b/Localization/StringsConvertor/input/fi_FI/Localizable.stringsdict
@@ -13,15 +13,15 @@
NSStringFormatValueTypeKey
ld
one
- 1 unread notification
+ 1 lukematon ilmoitus
other
- %ld unread notification
+ %ld lukematonta ilmoitusta
a11y.plural.count.input_limit_exceeds
NSStringLocalizedFormatKey
- Input limit exceeds %#@character_count@
+ Syöterajoitus ylittyy %#@character_count@
character_count
NSStringFormatSpecTypeKey
@@ -29,15 +29,15 @@
NSStringFormatValueTypeKey
ld
one
- 1 character
+ 1 merkki
other
- %ld characters
+ %ld merkkiä
a11y.plural.count.input_limit_remains
NSStringLocalizedFormatKey
- Input limit remains %#@character_count@
+ Syöterajoitus ylittyy %#@character_count@ päästä
character_count
NSStringFormatSpecTypeKey
@@ -45,9 +45,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 character
+ 1 merkki
other
- %ld characters
+ %ld merkkiä
plural.count.metric_formatted.post
@@ -61,9 +61,9 @@
NSStringFormatValueTypeKey
ld
one
- post
+ julkaisu
other
- posts
+ julkaisut
plural.count.post
@@ -77,9 +77,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 post
+ 1 julkaisu
other
- %ld posts
+ %ld julkaisua
plural.count.favorite
@@ -93,9 +93,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 favorite
+ 1 suosikki
other
- %ld favorites
+ %ld suosikkia
plural.count.reblog
@@ -109,9 +109,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 reblog
+ 1 edelleen jako
other
- %ld reblogs
+ %ld edelleen jakoa
plural.count.reply
@@ -141,9 +141,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 vote
+ 1 ääni
other
- %ld votes
+ %ld ääntä
plural.count.voter
@@ -157,9 +157,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 voter
+ 1 vastaaja
other
- %ld voters
+ %ld vastaajaa
plural.people_talking
@@ -173,9 +173,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 people talking
+ 1 ihminen puhuu
other
- %ld people talking
+ %ld ihmistä puhuu
plural.count.following
@@ -189,9 +189,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 following
+ 1 seurataan
other
- %ld following
+ %ld seurataan
plural.count.follower
@@ -205,9 +205,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 follower
+ 1 seuraaja
other
- %ld followers
+ %ld seuraajaa
date.year.left
@@ -221,9 +221,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 year left
+ 1 vuosi jäljellä
other
- %ld years left
+ %ld vuotta jäljellä
date.month.left
@@ -237,9 +237,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 months left
+ 1 kuukausi jäljellä
other
- %ld months left
+ %ld kuukautta jäljellä
date.day.left
@@ -253,9 +253,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 day left
+ 1 päivä jäljellä
other
- %ld days left
+ %ld päivää jäljellä
date.hour.left
@@ -269,9 +269,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 hour left
+ 1 tunti jäljellä
other
- %ld hours left
+ %ld tuntia jäljellä
date.minute.left
@@ -285,9 +285,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 minute left
+ 1 minuutti jäljellä
other
- %ld minutes left
+ %ld minuuttia jäljellä
date.second.left
@@ -301,9 +301,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 second left
+ 1 sekuntti
other
- %ld seconds left
+ %ld sekunttia jäljellä
date.year.ago.abbr
@@ -317,9 +317,9 @@
NSStringFormatValueTypeKey
ld
one
- 1y ago
+ 1v sitten
other
- %ldy ago
+ %ldv sitten
date.month.ago.abbr
@@ -333,9 +333,9 @@
NSStringFormatValueTypeKey
ld
one
- 1M ago
+ 1kk sitten
other
- %ldM ago
+ %ldkk sitten
date.day.ago.abbr
@@ -349,9 +349,9 @@
NSStringFormatValueTypeKey
ld
one
- 1d ago
+ 1pv sitten
other
- %ldd ago
+ %ldpv sitten
date.hour.ago.abbr
@@ -365,9 +365,9 @@
NSStringFormatValueTypeKey
ld
one
- 1h ago
+ 1t sitten
other
- %ldh ago
+ %ldt sitten
date.minute.ago.abbr
@@ -381,9 +381,9 @@
NSStringFormatValueTypeKey
ld
one
- 1m ago
+ 1min sitten
other
- %ldm ago
+ %ldmin sitten
date.second.ago.abbr
@@ -397,9 +397,9 @@
NSStringFormatValueTypeKey
ld
one
- 1s ago
+ 1s sitten
other
- %lds ago
+ %lds sitten
diff --git a/Localization/StringsConvertor/input/fi_FI/app.json b/Localization/StringsConvertor/input/fi_FI/app.json
index 50512250..4fe8f57b 100644
--- a/Localization/StringsConvertor/input/fi_FI/app.json
+++ b/Localization/StringsConvertor/input/fi_FI/app.json
@@ -2,147 +2,147 @@
"common": {
"alerts": {
"common": {
- "please_try_again": "Please try again.",
- "please_try_again_later": "Please try again later."
+ "please_try_again": "Yritä uudelleen.",
+ "please_try_again_later": "Yritä uudelleen myöhemmin."
},
"sign_up_failure": {
- "title": "Sign Up Failure"
+ "title": "Rekisteröinti epäonnistui"
},
"server_error": {
- "title": "Server Error"
+ "title": "Palvelinvirhe"
},
"vote_failure": {
"title": "Vote Failure",
- "poll_ended": "The poll has ended"
+ "poll_ended": "Kysely on päättynyt"
},
"discard_post_content": {
- "title": "Discard Draft",
+ "title": "Hylkää luonnos",
"message": "Confirm to discard composed post content."
},
"publish_post_failure": {
- "title": "Publish Failure",
- "message": "Failed to publish the post.\nPlease check your internet connection.",
+ "title": "Julkaiseminen epäonnistui",
+ "message": "Julkaisun julkaiseminen epäonnistui.\nTarkista internet-yhteytesi.",
"attachments_message": {
"video_attach_with_photo": "Cannot attach a video to a post that already contains images.",
- "more_than_one_video": "Cannot attach more than one video."
+ "more_than_one_video": "Ei voi liittä yhtä videota enempää."
}
},
"edit_profile_failure": {
- "title": "Edit Profile Error",
- "message": "Cannot edit profile. Please try again."
+ "title": "Virhe profiilin muokkauksessa",
+ "message": "Profiilia ei voida muoka. Yritä uudelleen."
},
"sign_out": {
- "title": "Sign Out",
- "message": "Are you sure you want to sign out?",
- "confirm": "Sign Out"
+ "title": "Kirjaudu ulos",
+ "message": "Haluatko varmasti kirjautua ulos?",
+ "confirm": "Kirjaudu ulos"
},
"block_domain": {
"title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.",
- "block_entire_domain": "Block Domain"
+ "block_entire_domain": "Estä verkkotunnus"
},
"save_photo_failure": {
- "title": "Save Photo Failure",
+ "title": "Kuvan tallentaminen epäonnistui",
"message": "Please enable the photo library access permission to save the photo."
},
"delete_post": {
- "title": "Delete Post",
+ "title": "Haluatko varmasti poistaa tämän julkaisun?",
"message": "Are you sure you want to delete this post?"
},
"clean_cache": {
- "title": "Clean Cache",
- "message": "Successfully cleaned %s cache."
+ "title": "Puhdista välimuisti",
+ "message": "%s välimuisti tyhjennetty onnistuneesti."
}
},
"controls": {
"actions": {
- "back": "Back",
- "next": "Next",
- "previous": "Previous",
- "open": "Open",
- "add": "Add",
- "remove": "Remove",
- "edit": "Edit",
- "save": "Save",
+ "back": "Takaisin",
+ "next": "Seuraava",
+ "previous": "Edellinen",
+ "open": "Avaa",
+ "add": "Lisää",
+ "remove": "Poista",
+ "edit": "Muokkaa",
+ "save": "Tallenna",
"ok": "OK",
- "done": "Done",
- "confirm": "Confirm",
- "continue": "Continue",
- "compose": "Compose",
- "cancel": "Cancel",
- "discard": "Discard",
- "try_again": "Try Again",
- "take_photo": "Take Photo",
- "save_photo": "Save Photo",
- "copy_photo": "Copy Photo",
- "sign_in": "Sign In",
- "sign_up": "Sign Up",
- "see_more": "See More",
- "preview": "Preview",
- "share": "Share",
- "share_user": "Share %s",
- "share_post": "Share Post",
- "open_in_safari": "Open in Safari",
+ "done": "Valmis",
+ "confirm": "Vahvista",
+ "continue": "Jatka",
+ "compose": "Koosta",
+ "cancel": "Kumoa",
+ "discard": "Hylkää",
+ "try_again": "Yritä uudelleen",
+ "take_photo": "Ota kuva",
+ "save_photo": "Tallenna kuva",
+ "copy_photo": "Kopioi kuva",
+ "sign_in": "Kirjaudu sisään",
+ "sign_up": "Rekisteröidy",
+ "see_more": "Näytä lisää",
+ "preview": "Esikatselu",
+ "share": "Jaa",
+ "share_user": "Jaa %s",
+ "share_post": "Jaa julkaisu",
+ "open_in_safari": "Avaa Safarissa",
"open_in_browser": "Open in Browser",
- "find_people": "Find people to follow",
+ "find_people": "Löydä tilejä seurattavaksi",
"manually_search": "Manually search instead",
- "skip": "Skip",
- "reply": "Reply",
- "report_user": "Report %s",
- "block_domain": "Block %s",
- "unblock_domain": "Unblock %s",
- "settings": "Settings",
- "delete": "Delete"
+ "skip": "Ohita",
+ "reply": "Vastaa",
+ "report_user": "Ilmianna %s",
+ "block_domain": "Estä %s",
+ "unblock_domain": "Poista esto %s",
+ "settings": "Asetukset",
+ "delete": "Poista"
},
"tabs": {
- "home": "Home",
- "search": "Search",
- "notification": "Notification",
- "profile": "Profile"
+ "home": "Koti",
+ "search": "Haku",
+ "notification": "Ilmoitus",
+ "profile": "Profiili"
},
"keyboard": {
"common": {
- "switch_to_tab": "Switch to %s",
- "compose_new_post": "Compose New Post",
- "show_favorites": "Show Favorites",
- "open_settings": "Open Settings"
+ "switch_to_tab": "Vaihda %s",
+ "compose_new_post": "Koosta uusi julkaisu",
+ "show_favorites": "Näytä suosikit",
+ "open_settings": "Avaa asetukset"
},
"timeline": {
- "previous_status": "Previous Post",
- "next_status": "Next Post",
- "open_status": "Open Post",
- "open_author_profile": "Open Author's Profile",
- "open_reblogger_profile": "Open Reblogger's Profile",
- "reply_status": "Reply to Post",
+ "previous_status": "Edellinen julkaisu",
+ "next_status": "Seuraava julkaisu",
+ "open_status": "Avaa julkaisu",
+ "open_author_profile": "Avaa tekijän profiili",
+ "open_reblogger_profile": "Avaa edelleen jakajan profiili",
+ "reply_status": "Vastaa julkaisuun",
"toggle_reblog": "Toggle Reblog on Post",
"toggle_favorite": "Toggle Favorite on Post",
- "toggle_content_warning": "Toggle Content Warning",
+ "toggle_content_warning": "Vaihda sisältövaroitus",
"preview_image": "Preview Image"
},
"segmented_control": {
"previous_section": "Previous Section",
- "next_section": "Next Section"
+ "next_section": "Seuraava lohko"
}
},
"status": {
- "user_reblogged": "%s reblogged",
- "user_replied_to": "Replied to %s",
- "show_post": "Show Post",
- "show_user_profile": "Show user profile",
- "content_warning": "Content Warning",
+ "user_reblogged": "%s jakoi edelleen",
+ "user_replied_to": "Vastasi %s:lle",
+ "show_post": "Näytä julkaisu",
+ "show_user_profile": "Näytä tili",
+ "content_warning": "Sisältövaroitus",
"sensitive_content": "Sensitive Content",
- "media_content_warning": "Tap anywhere to reveal",
+ "media_content_warning": "Napauta mistä tahansa paljastaaksesi",
"tap_to_reveal": "Tap to reveal",
"poll": {
"vote": "Vote",
- "closed": "Closed"
+ "closed": "Suljettu"
},
"actions": {
- "reply": "Reply",
- "reblog": "Reblog",
- "unreblog": "Undo reblog",
+ "reply": "Vastaa",
+ "reblog": "Jaa edelleen",
+ "unreblog": "Peru edelleen jako",
"favorite": "Favorite",
"unfavorite": "Unfavorite",
- "menu": "Menu",
+ "menu": "Valikko",
"hide": "Hide",
"show_image": "Show image",
"show_gif": "Show GIF",
@@ -152,9 +152,9 @@
"tag": {
"url": "URL",
"mention": "Mention",
- "link": "Link",
- "hashtag": "Hashtag",
- "email": "Email",
+ "link": "Linkki",
+ "hashtag": "Hashtagi",
+ "email": "Sähköposti",
"emoji": "Emoji"
},
"visibility": {
@@ -165,266 +165,271 @@
}
},
"friendship": {
- "follow": "Follow",
- "following": "Following",
- "request": "Request",
- "pending": "Pending",
- "block": "Block",
- "block_user": "Block %s",
- "block_domain": "Block %s",
- "unblock": "Unblock",
+ "follow": "Seuraa",
+ "following": "Seurataan",
+ "request": "Pyydä",
+ "pending": "Pyydetty",
+ "block": "Estä",
+ "block_user": "Estä %s",
+ "block_domain": "Estä %s",
+ "unblock": "Poista esto",
"unblock_user": "Unblock %s",
- "blocked": "Blocked",
- "mute": "Mute",
- "mute_user": "Mute %s",
- "unmute": "Unmute",
- "unmute_user": "Unmute %s",
- "muted": "Muted",
- "edit_info": "Edit Info"
+ "blocked": "Estetty",
+ "mute": "Mykistä",
+ "mute_user": "Mykistä %s",
+ "unmute": "Poista mykistys",
+ "unmute_user": "Poista mykistys tililtä %s",
+ "muted": "Mykistetty",
+ "edit_info": "Muokkaa profiilia"
},
"timeline": {
- "filtered": "Filtered",
+ "filtered": "Suodatettu",
"timestamp": {
- "now": "Now"
+ "now": "Nyt"
},
"loader": {
- "load_missing_posts": "Load missing posts",
- "loading_missing_posts": "Loading missing posts...",
- "show_more_replies": "Show more replies"
+ "load_missing_posts": "Lataa puuttuvat julkaisut",
+ "loading_missing_posts": "Ladataan puuttuvia julkaisuja...",
+ "show_more_replies": "Näytä lisää vastauksia"
},
"header": {
- "no_status_found": "No Post Found",
- "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.",
- "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.",
- "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.",
- "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.",
- "suspended_warning": "This user has been suspended.",
- "user_suspended_warning": "%s’s account has been suspended."
+ "no_status_found": "Julkaisua ei löytynyt",
+ "blocking_warning": "Et voi tarkastella tämän tilin profiilia\nennen kuin poistat sen esto.\nProfiilisi näyttää tältä hänelle.",
+ "user_blocking_warning": "Et voi tarkastella tilin %s profiilia\nennen kuin poistat sen esto.\nProfiilisi näyttää tältä hänelle.",
+ "blocked_warning": "Et voi tarkastella tämän tilin profiilia\nennen kuin hän poistaa eston.",
+ "user_blocked_warning": "Et voi tarkastella tilin %s profiilia\nennen kuin hän poistaa eston.",
+ "suspended_warning": "Tämä tili on lakkautettu.",
+ "user_suspended_warning": "Tili %s on lakkautettu."
}
}
}
},
"scene": {
"welcome": {
- "slogan": "Social networking\nback in your hands.",
+ "slogan": "Sosiaalinen verkostoituminen\ntakaisin käsissäsi.",
"get_started": "Get Started",
"log_in": "Log In"
},
"server_picker": {
- "title": "Mastodon is made of users in different servers.",
+ "title": "Valitse palvelin,\nmikä tahansa palvelin.",
"subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": {
"category": {
- "all": "All",
- "all_accessiblity_description": "Category: All",
- "academia": "academia",
- "activism": "activism",
- "food": "food",
- "furry": "furry",
- "games": "games",
- "general": "general",
- "journalism": "journalism",
- "lgbt": "lgbt",
- "regional": "regional",
- "art": "art",
- "music": "music",
- "tech": "tech"
+ "all": "Kaikki",
+ "all_accessiblity_description": "Kategoria: Kaikki",
+ "academia": "akateeminen",
+ "activism": "aktivismi",
+ "food": "ruoka",
+ "furry": "turri",
+ "games": "pelit",
+ "general": "yleinen",
+ "journalism": "journalismi",
+ "lgbt": "hlbt",
+ "regional": "alueellinen",
+ "art": "taide",
+ "music": "musiikki",
+ "tech": "tekniikka"
},
- "see_less": "See Less",
- "see_more": "See More"
+ "see_less": "Näytä vähemmän",
+ "see_more": "Näytä lisää"
},
"label": {
- "language": "LANGUAGE",
- "users": "USERS",
- "category": "CATEGORY"
+ "language": "KIELI",
+ "users": "TILIÄ",
+ "category": "KATEGORIA"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Etsi palvelin tai liity omaan...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
- "finding_servers": "Finding available servers...",
- "bad_network": "Something went wrong while loading the data. Check your internet connection.",
- "no_results": "No results"
+ "finding_servers": "Etsistään saatavilla olevia palvelimia...",
+ "bad_network": "Jokin meni pieleen dataa ladatessa. Tarkista internet-yhteytesi.",
+ "no_results": "Ei hakutuloksia"
}
},
"register": {
- "title": "Let’s get you set up on %s",
+ "title": "Kerro meille sinusta.",
"input": {
"avatar": {
- "delete": "Delete"
+ "delete": "Poista"
},
"username": {
- "placeholder": "username",
- "duplicate_prompt": "This username is taken."
+ "placeholder": "käyttäjänimi",
+ "duplicate_prompt": "Tämä käyttäjänimi on varattu."
},
"display_name": {
- "placeholder": "display name"
+ "placeholder": "näyttönimi"
},
"email": {
- "placeholder": "email"
+ "placeholder": "sähköposti"
},
"password": {
- "placeholder": "password",
+ "placeholder": "salasana",
"require": "Your password needs at least:",
"character_limit": "8 characters",
"accessibility": {
"checked": "checked",
"unchecked": "unchecked"
},
- "hint": "Your password needs at least eight characters"
+ "hint": "Salasanassasi on oltava vähintään kahdeksan merkkiä"
},
"invite": {
- "registration_user_invite_request": "Why do you want to join?"
+ "registration_user_invite_request": "Miksi haluat liittyä?"
}
},
"error": {
"item": {
- "username": "Username",
- "email": "Email",
- "password": "Password",
- "agreement": "Agreement",
+ "username": "Käyttäjänimi",
+ "email": "Sähköposti",
+ "password": "Salasana",
+ "agreement": "Hyväksy",
"locale": "Locale",
- "reason": "Reason"
+ "reason": "Syy"
},
"reason": {
- "blocked": "%s contains a disallowed email provider",
- "unreachable": "%s does not seem to exist",
- "taken": "%s is already in use",
+ "blocked": "%s sisältää estetyn sähköpostipalveluntarjoajan",
+ "unreachable": "%s ei näytä olevan olemassa",
+ "taken": "%s on jo käytössä",
"reserved": "%s is a reserved keyword",
- "accepted": "%s must be accepted",
- "blank": "%s is required",
- "invalid": "%s is invalid",
- "too_long": "%s is too long",
- "too_short": "%s is too short",
- "inclusion": "%s is not a supported value"
+ "accepted": "%s täytyy hyväksyä",
+ "blank": "%s vaaditaan",
+ "invalid": "%s on virheellinen",
+ "too_long": "%s on liian pitkä",
+ "too_short": "%s on liian lyhyt",
+ "inclusion": "%s ei ole tuettu arvo"
},
"special": {
- "username_invalid": "Username must only contain alphanumeric characters and underscores",
- "username_too_long": "Username is too long (can’t be longer than 30 characters)",
- "email_invalid": "This is not a valid email address",
- "password_too_short": "Password is too short (must be at least 8 characters)"
+ "username_invalid": "Käyttäjänimi voi sisältää ainoastaan aakkosnumerrisia merkkejä ja alaviivoja",
+ "username_too_long": "Käyttäjänimi on liian pitkä (ei voi olla pidempi kuin 30 merkkiä)",
+ "email_invalid": "Tämä ei ole kelvollinen sähköpostiosoite",
+ "password_too_short": "Salasana on liian lyhyt (täytyy olla vähintään 8 merkkiä)"
}
}
},
"server_rules": {
- "title": "Some ground rules.",
- "subtitle": "These are set and enforced by the %s moderators.",
- "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.",
- "terms_of_service": "terms of service",
- "privacy_policy": "privacy policy",
+ "title": "Joitakin perussääntöjä.",
+ "subtitle": "Nämä säännöt ovat %s -palvelun asettamia.",
+ "prompt": "Jatkamalla, hyväksyt palvelun %s palveluehdot ja tietosuojakäytönnön.",
+ "terms_of_service": "käyttöehdot",
+ "privacy_policy": "tietosuojakäytäntö",
"button": {
- "confirm": "I Agree"
+ "confirm": "Hyväksyn"
}
},
"confirm_email": {
- "title": "One last thing.",
- "subtitle": "Tap the link we emailed to you to verify your account.",
+ "title": "Viimeinen asia.",
+ "subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.",
"button": {
- "open_email_app": "Open Email App",
+ "open_email_app": "Avaa sähköpostisovellus",
"resend": "Resend"
},
"dont_receive_email": {
- "title": "Check your email",
- "description": "Check if your email address is correct as well as your junk folder if you haven’t.",
- "resend_email": "Resend Email"
+ "title": "Tarkista sähköpostisi",
+ "description": "Tarkista, että sähköpostiosoitteesi on oikea, sekä roskapostikansiosi, jos et vielä ole.",
+ "resend_email": "Lähetä sähköposti uudelleen"
},
"open_email_app": {
- "title": "Check your inbox.",
- "description": "We just sent you an email. Check your junk folder if you haven’t.",
- "mail": "Mail",
- "open_email_client": "Open Email Client"
+ "title": "Tarkasta postilaatikkosi.",
+ "description": "Lähetimme sinulle juuri sähköpostin. Tarkista myös roskapostikansiosi, jos et vielä ole.",
+ "mail": "Sähköposti",
+ "open_email_client": "Avaa sähköpostisovellus"
}
},
"home_timeline": {
- "title": "Home",
+ "title": "Koti",
"navigation_bar_state": {
- "offline": "Offline",
- "new_posts": "See new posts",
- "published": "Published!",
- "Publishing": "Publishing post..."
+ "offline": "Yhteydetön",
+ "new_posts": "Uusia julkaisuja",
+ "published": "Julkaistu!",
+ "Publishing": "Julkaistaan julkaisua...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
- "title": "Find People to Follow",
- "follow_explain": "When you follow someone, you’ll see their posts in your home feed."
+ "title": "Löydä tilejä seurattavaksi",
+ "follow_explain": "Kun seuraat jotakuta, näet hänen julkaisunsa kotisyötteessäsi."
},
"compose": {
"title": {
- "new_post": "New Post",
- "new_reply": "New Reply"
+ "new_post": "Uusi julkaisu",
+ "new_reply": "Uusi vastaus"
},
"media_selection": {
- "camera": "Take Photo",
- "photo_library": "Photo Library",
- "browse": "Browse"
+ "camera": "Ota kuva",
+ "photo_library": "Kuvakirjasto",
+ "browse": "Selaa"
},
- "content_input_placeholder": "Type or paste what’s on your mind",
- "compose_action": "Publish",
- "replying_to_user": "replying to %s",
+ "content_input_placeholder": "Kirjoita tai liitä, siitä mitä ajattelet",
+ "compose_action": "Julkaise",
+ "replying_to_user": "vastaamassa tilille %s",
"attachment": {
- "photo": "photo",
+ "photo": "kuva",
"video": "video",
"attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.",
- "description_photo": "Describe the photo for the visually-impaired...",
- "description_video": "Describe the video for the visually-impaired..."
+ "description_photo": "Kuvaile kuva näkövammaisille...",
+ "description_video": "Kuvaile video näkövammaisille..."
},
"poll": {
- "duration_time": "Duration: %s",
- "thirty_minutes": "30 minutes",
- "one_hour": "1 Hour",
- "six_hours": "6 Hours",
- "one_day": "1 Day",
- "three_days": "3 Days",
- "seven_days": "7 Days",
- "option_number": "Option %ld"
+ "duration_time": "Kesto: %s",
+ "thirty_minutes": "30 minuuttia",
+ "one_hour": "1 tunti",
+ "six_hours": "6 tuntia",
+ "one_day": "1 päivä",
+ "three_days": "3 päivää",
+ "seven_days": "7 päivää",
+ "option_number": "Vaihtoehto %ld"
},
"content_warning": {
- "placeholder": "Write an accurate warning here..."
+ "placeholder": "Kirjoita tarkka varoitus tähän..."
},
"visibility": {
- "public": "Public",
- "unlisted": "Unlisted",
- "private": "Followers only",
- "direct": "Only people I mention"
+ "public": "Julkinen",
+ "unlisted": "Listaamaton",
+ "private": "Vain seuraajat",
+ "direct": "Vain mainitsemani tilit"
},
"auto_complete": {
"space_to_add": "Space to add"
},
"accessibility": {
- "append_attachment": "Add Attachment",
- "append_poll": "Add Poll",
- "remove_poll": "Remove Poll",
- "custom_emoji_picker": "Custom Emoji Picker",
- "enable_content_warning": "Enable Content Warning",
- "disable_content_warning": "Disable Content Warning",
- "post_visibility_menu": "Post Visibility Menu"
+ "append_attachment": "Lisää liite",
+ "append_poll": "Lisää kysely",
+ "remove_poll": "Poista kysely",
+ "custom_emoji_picker": "Mukautettu emojivalitsin",
+ "enable_content_warning": "Ota sisältövaroitus käyttöön",
+ "disable_content_warning": "Poista sisältövaroitus käytöstä",
+ "post_visibility_menu": "Julkaisun näkyvyysvalikko"
},
"keyboard": {
- "discard_post": "Discard Post",
- "publish_post": "Publish Post",
- "toggle_poll": "Toggle Poll",
- "toggle_content_warning": "Toggle Content Warning",
- "append_attachment_entry": "Add Attachment - %s",
- "select_visibility_entry": "Select Visibility - %s"
+ "discard_post": "Hylkää julkaisu",
+ "publish_post": "Julkaise julkaisu",
+ "toggle_poll": "Vaihda kysely",
+ "toggle_content_warning": "Vaihda sisältövaroitus",
+ "append_attachment_entry": "Lisää liite - %s",
+ "select_visibility_entry": "Valitse näkyvyys - %s"
}
},
"profile": {
"dashboard": {
- "posts": "posts",
- "following": "following",
- "followers": "followers"
+ "posts": "julkaisut",
+ "following": "seurataan",
+ "followers": "seuraajat"
},
"fields": {
- "add_row": "Add Row",
+ "add_row": "Lisää rivi",
"placeholder": {
- "label": "Label",
- "content": "Content"
+ "label": "Nimi",
+ "content": "Sisältö"
}
},
"segmented_control": {
- "posts": "Posts",
- "replies": "Replies",
+ "posts": "Julkaisut",
+ "replies": "Vastaukset",
"posts_and_replies": "Posts and Replies",
"media": "Media",
"about": "About"
@@ -435,8 +440,8 @@
"message": "Confirm to mute %s"
},
"confirm_unmute_user": {
- "title": "Unmute Account",
- "message": "Confirm to unmute %s"
+ "title": "Poista tilin mykistys",
+ "message": "Vahvista, että haluat poistaa mykistyksen tililtä %s"
},
"confirm_block_user": {
"title": "Block Account",
@@ -455,42 +460,42 @@
}
},
"follower": {
- "footer": "Followers from other servers are not displayed."
+ "footer": "Seuraajia muilta palvelimilta ei näytetä."
},
"following": {
- "footer": "Follows from other servers are not displayed."
+ "footer": "Seurauksia muilta palvelimilta ei näytetä."
},
"search": {
- "title": "Search",
+ "title": "Haku",
"search_bar": {
- "placeholder": "Search hashtags and users",
- "cancel": "Cancel"
+ "placeholder": "Haku",
+ "cancel": "Kumoa"
},
"recommend": {
- "button_text": "See All",
+ "button_text": "Katso kaikki",
"hash_tag": {
- "title": "Trending on Mastodon",
- "description": "Hashtags that are getting quite a bit of attention",
- "people_talking": "%s people are talking"
+ "title": "Trendaavat Mastodonissa",
+ "description": "Hashtagit, jotka saavat melkoisesti huomiota",
+ "people_talking": "%s ihmistä puhuu"
},
"accounts": {
- "title": "Accounts you might like",
- "description": "You may like to follow these accounts",
- "follow": "Follow"
+ "title": "Saatat pitää näistä tileistä",
+ "description": "Haluta ehkä seurata näitä tilejä",
+ "follow": "Seuraa"
}
},
"searching": {
"segment": {
- "all": "All",
- "people": "People",
- "hashtags": "Hashtags",
- "posts": "Posts"
+ "all": "Kaikki",
+ "people": "Tilit",
+ "hashtags": "Hashtagit",
+ "posts": "Julkaisut"
},
"empty_state": {
- "no_results": "No results"
+ "no_results": "Ei hakutuloksia"
},
- "recent_search": "Recent searches",
- "clear": "Clear"
+ "recent_search": "Viimeaikaiset",
+ "clear": "Tyhjennä"
}
},
"discovery": {
@@ -504,12 +509,12 @@
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
- "title": "Your Favorites"
+ "title": "Omat suosikit"
},
"notification": {
"title": {
- "Everything": "Everything",
- "Mentions": "Mentions"
+ "Everything": "Kaikki",
+ "Mentions": "Maininnat"
},
"notification_description": {
"followed_you": "followed you",
@@ -520,22 +525,22 @@
"poll_has_ended": "poll has ended"
},
"keyobard": {
- "show_everything": "Show Everything",
- "show_mentions": "Show Mentions"
+ "show_everything": "Näytä kaikki",
+ "show_mentions": "Näytä maininnat"
}
},
"thread": {
- "back_title": "Post",
- "title": "Post from %s"
+ "back_title": "Julkaisu",
+ "title": "Julkaisu tililtä %s"
},
"settings": {
- "title": "Settings",
+ "title": "Asetukset",
"section": {
"appearance": {
- "title": "Appearance",
- "automatic": "Automatic",
- "light": "Always Light",
- "dark": "Always Dark"
+ "title": "Ulkoasu",
+ "automatic": "Seuraa järjestelmää",
+ "light": "Vaalea",
+ "dark": "Tumma"
},
"look_and_feel": {
"title": "Look and Feel",
@@ -545,75 +550,116 @@
"light": "Light"
},
"notifications": {
- "title": "Notifications",
+ "title": "Ilmoitukset",
"favorites": "Favorites my post",
- "follows": "Follows me",
- "boosts": "Reblogs my post",
- "mentions": "Mentions me",
+ "follows": "Seuraa minua",
+ "boosts": "Omien julkaisujen edelleen jaot",
+ "mentions": "Mainitsee minut",
"trigger": {
- "anyone": "anyone",
- "follower": "a follower",
- "follow": "anyone I follow",
- "noone": "no one",
- "title": "Notify me when"
+ "anyone": "kuka tahansa",
+ "follower": "seuraaja",
+ "follow": "kuka tahansa, jota seuraan",
+ "noone": "ei kukaan",
+ "title": "Ilmoita minulle, kun"
}
},
"preference": {
- "title": "Preferences",
- "true_black_dark_mode": "True black dark mode",
- "disable_avatar_animation": "Disable animated avatars",
- "disable_emoji_animation": "Disable animated emojis",
- "using_default_browser": "Use default browser to open links",
+ "title": "Lisäasetukset",
+ "true_black_dark_mode": "Todellinen mustan tumma tila",
+ "disable_avatar_animation": "Poista käytöstä animoidut avatarit",
+ "disable_emoji_animation": "Poista käytöstä animoidut emojit",
+ "using_default_browser": "Käytä oletusselainta linkkien avaamiseen",
"open_links_in_mastodon": "Open links in Mastodon"
},
"boring_zone": {
- "title": "The Boring Zone",
- "account_settings": "Account Settings",
- "terms": "Terms of Service",
- "privacy": "Privacy Policy"
+ "title": "Tylsä alue",
+ "account_settings": "Tiliasetukset",
+ "terms": "Palveluehdot",
+ "privacy": "Tietosuojakäytäntö"
},
"spicy_zone": {
- "title": "The Spicy Zone",
- "clear": "Clear Media Cache",
- "signout": "Sign Out"
+ "title": "Varovainen alue",
+ "clear": "Tyhjennä median välimuisti",
+ "signout": "Kirjaudu ulos"
}
},
"footer": {
- "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
+ "mastodon_description": "Mastodon on avoimen lähdekoodin ohjelmisto. Voit raportoida ongelmasta GitHubissa osoitteessa %s (%s)"
},
"keyboard": {
- "close_settings_window": "Close Settings Window"
+ "close_settings_window": "Sulje asetukset"
}
},
"report": {
"title_report": "Report",
- "title": "Report %s",
- "step1": "Step 1 of 2",
- "step2": "Step 2 of 2",
- "content1": "Are there any other posts you’d like to add to the report?",
- "content2": "Is there anything the moderators should know about this report?",
+ "title": "Ilmianna %s",
+ "step1": "Vaihe 1/2",
+ "step2": "Vaihe 2/2",
+ "content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?",
+ "content2": "Onko valvojien syytä tietää tästä ilmiannosta?",
"report_sent_title": "Thanks for reporting, we’ll look into this.",
- "send": "Send Report",
- "skip_to_send": "Send without comment",
- "text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "send": "Lähetä ilmianto",
+ "skip_to_send": "Lähetä ilman kommentteja",
+ "text_placeholder": "Kirjoita tai liitä lisäkommentteja",
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
- "close_preview": "Close Preview",
- "show_next": "Show Next",
- "show_previous": "Show Previous"
+ "close_preview": "Sulje esikatselu",
+ "show_next": "Näytä seuraava",
+ "show_previous": "Näytä edellinen"
}
},
"account_list": {
- "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
- "dismiss_account_switcher": "Dismiss Account Switcher",
- "add_account": "Add Account"
+ "tab_bar_hint": "Nykyinen valittu profiili: %s. Kaksoisnapauta ja pidä sitten painettuna näytääksesi tilin vaihtajan",
+ "dismiss_account_switcher": "Sulje tilin vaihtaja",
+ "add_account": "Lisää tili"
},
"wizard": {
- "new_in_mastodon": "New in Mastodon",
- "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
- "accessibility_hint": "Double tap to dismiss this wizard"
+ "new_in_mastodon": "Uutta Mastodonissa",
+ "multiple_account_switch_intro_description": "Vaihda useiden tilien välillä pitämällä profiilipainiketta painettuna.",
+ "accessibility_hint": "Hylkää tämä ohjattu toiminto kaksoisnapauttamalla"
}
}
}
\ No newline at end of file
diff --git a/Localization/StringsConvertor/input/fi_FI/ios-infoPlist.json b/Localization/StringsConvertor/input/fi_FI/ios-infoPlist.json
index c6db73de..eb389f3b 100644
--- a/Localization/StringsConvertor/input/fi_FI/ios-infoPlist.json
+++ b/Localization/StringsConvertor/input/fi_FI/ios-infoPlist.json
@@ -1,6 +1,6 @@
{
- "NSCameraUsageDescription": "Used to take photo for post status",
- "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
- "NewPostShortcutItemTitle": "New Post",
- "SearchShortcutItemTitle": "Search"
+ "NSCameraUsageDescription": "Käytetään kuvan ottamiseen julkaisua varten",
+ "NSPhotoLibraryAddUsageDescription": "Käytetään kuvan tallentamiseen kuvakirjastoon",
+ "NewPostShortcutItemTitle": "Uusi julkaisu",
+ "SearchShortcutItemTitle": "Haku"
}
diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json
index a3aa9802..ae5f10c8 100644
--- a/Localization/StringsConvertor/input/fr_FR/app.json
+++ b/Localization/StringsConvertor/input/fr_FR/app.json
@@ -240,7 +240,8 @@
"category": "CATÉGORIE"
},
"input": {
- "placeholder": "Trouvez un serveur ou rejoignez le vôtre..."
+ "placeholder": "Trouvez un serveur ou rejoignez le vôtre...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Recherche des serveurs disponibles...",
@@ -342,7 +343,11 @@
"offline": "Hors ligne",
"new_posts": "Voir les nouvelles publications",
"published": "Publié!",
- "Publishing": "Publication en cours ..."
+ "Publishing": "Publication en cours ...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Envoyer le rapport",
"skip_to_send": "Envoyer sans commentaire",
"text_placeholder": "Tapez ou collez des informations supplémentaires",
- "reported": "SIGNALÉ"
+ "reported": "SIGNALÉ",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json
index fc9270c5..4b18ab6d 100644
--- a/Localization/StringsConvertor/input/gd_GB/app.json
+++ b/Localization/StringsConvertor/input/gd_GB/app.json
@@ -240,7 +240,8 @@
"category": "ROINN-SEÒRSA"
},
"input": {
- "placeholder": "Lorg frithealaiche no gabh pàirt san fhear agad fhèin…"
+ "placeholder": "Lorg frithealaiche no gabh pàirt san fhear agad fhèin…",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "A’ lorg nam frithealaichean ri am faighinn…",
@@ -342,7 +343,11 @@
"offline": "Far loidhne",
"new_posts": "Seall na postaichean ùra",
"published": "Chaidh fhoillseachadh!",
- "Publishing": "A’ foillseachadh a’ phuist…"
+ "Publishing": "A’ foillseachadh a’ phuist…",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -498,7 +503,7 @@
"posts": "Postaichean",
"hashtags": "Tagaichean hais",
"news": "Naidheachdan",
- "community": "Community",
+ "community": "Coimhearsnachd",
"for_you": "Dhut-sa"
},
"intro": "Seo na postaichean fèillmhor ’nad cheàrnaidh de Mhastodon."
@@ -596,7 +601,48 @@
"send": "Cuir an gearan",
"skip_to_send": "Cuir gun bheachd ris",
"text_placeholder": "Sgrìobh no cuir ann beachdan a bharrachd",
- "reported": "CHAIDH GEARAN A DHÈANAMH"
+ "reported": "CHAIDH GEARAN A DHÈANAMH",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict
index 503ff9db..a67c938a 100644
--- a/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict
+++ b/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict
@@ -13,15 +13,15 @@
NSStringFormatValueTypeKey
ld
one
- 1 unread notification
+ 1 notificación non lida
other
- %ld unread notification
+ %ld notificacións non lidas
a11y.plural.count.input_limit_exceeds
NSStringLocalizedFormatKey
- Input limit exceeds %#@character_count@
+ O límite supera %#@character_count@
character_count
NSStringFormatSpecTypeKey
@@ -29,15 +29,15 @@
NSStringFormatValueTypeKey
ld
one
- 1 character
+ 1 caracter
other
- %ld characters
+ %ld caracteres
a11y.plural.count.input_limit_remains
NSStringLocalizedFormatKey
- Input limit remains %#@character_count@
+ O límite de entrada mantense en %#@character_count@
character_count
NSStringFormatSpecTypeKey
@@ -45,9 +45,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 character
+ 1 caracter
other
- %ld characters
+ %ld caracteres
plural.count.metric_formatted.post
@@ -61,9 +61,9 @@
NSStringFormatValueTypeKey
ld
one
- post
+ publicación
other
- posts
+ publicacións
plural.count.post
@@ -77,9 +77,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 post
+ 1 publicación
other
- %ld posts
+ %ld publicacións
plural.count.favorite
@@ -93,9 +93,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 favorite
+ 1 favorito
other
- %ld favorites
+ %ld favoritos
plural.count.reblog
@@ -109,9 +109,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 reblog
+ 1 promoción
other
- %ld reblogs
+ %ld promocións
plural.count.reply
@@ -125,9 +125,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 reply
+ 1 resposta
other
- %ld replies
+ %ld respostas
plural.count.vote
@@ -141,9 +141,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 vote
+ 1 voto
other
- %ld votes
+ %ld votos
plural.count.voter
@@ -157,9 +157,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 voter
+ 1 votante
other
- %ld voters
+ %ld votantes
plural.people_talking
@@ -173,9 +173,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 people talking
+ 1 persoa comentando
other
- %ld people talking
+ %ld persoas comentando
plural.count.following
@@ -189,9 +189,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 following
+ 1 seguimento
other
- %ld following
+ %ld seguimentos
plural.count.follower
@@ -205,9 +205,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 follower
+ 1 seguidora
other
- %ld followers
+ %ld seguidoras
date.year.left
@@ -221,9 +221,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 year left
+ Queda 1 ano
other
- %ld years left
+ Quedan %ld anos
date.month.left
@@ -237,9 +237,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 months left
+ Queda 1 mes
other
- %ld months left
+ Quedan %ld meses
date.day.left
@@ -253,9 +253,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 day left
+ Queda 1 día
other
- %ld days left
+ Quedan %ld días
date.hour.left
@@ -269,9 +269,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 hour left
+ Queda 1 hora
other
- %ld hours left
+ Quedan %ld horas
date.minute.left
@@ -285,9 +285,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 minute left
+ Queda 1 minuto
other
- %ld minutes left
+ Quedan %ld minutos
date.second.left
@@ -301,9 +301,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 second left
+ Queda 1 segundo
other
- %ld seconds left
+ Quedan %ld segundos
date.year.ago.abbr
@@ -317,9 +317,9 @@
NSStringFormatValueTypeKey
ld
one
- 1y ago
+ hai 1 ano
other
- %ldy ago
+ hai %ld anos
date.month.ago.abbr
@@ -333,9 +333,9 @@
NSStringFormatValueTypeKey
ld
one
- 1M ago
+ hai 1 mes
other
- %ldM ago
+ hai %ld meses
date.day.ago.abbr
@@ -349,9 +349,9 @@
NSStringFormatValueTypeKey
ld
one
- 1d ago
+ hai 1 día
other
- %ldd ago
+ hai %ld días
date.hour.ago.abbr
@@ -365,9 +365,9 @@
NSStringFormatValueTypeKey
ld
one
- 1h ago
+ fai 1 hora
other
- %ldh ago
+ fai %ld horas
date.minute.ago.abbr
@@ -381,9 +381,9 @@
NSStringFormatValueTypeKey
ld
one
- 1m ago
+ fai 1 minuto
other
- %ldm ago
+ fai %ld minutos
date.second.ago.abbr
@@ -397,9 +397,9 @@
NSStringFormatValueTypeKey
ld
one
- 1s ago
+ fai 1 seg.
other
- %lds ago
+ fai %ld seg.
diff --git a/Localization/StringsConvertor/input/gl_ES/app.json b/Localization/StringsConvertor/input/gl_ES/app.json
index 0c5cbc03..9c2f3f8a 100644
--- a/Localization/StringsConvertor/input/gl_ES/app.json
+++ b/Localization/StringsConvertor/input/gl_ES/app.json
@@ -195,18 +195,18 @@
"header": {
"no_status_found": "Non se atopa a publicación",
"blocking_warning": "Non podes ver o perfil da usuaria\nata que a desbloquees.\nAsí ven outras o teu perfil.",
- "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.",
- "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.",
- "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.",
- "suspended_warning": "This user has been suspended.",
- "user_suspended_warning": "%s’s account has been suspended."
+ "user_blocking_warning": "Non podes ver o perfil de %s\nata que o desbloquees.\nAsí se ve o teu perfil.",
+ "blocked_warning": "Non podes ver o perfil desta usuaria\nata que te desbloquee.",
+ "user_blocked_warning": "Non podes ver o perfil de %s\nata que te desbloquee.",
+ "suspended_warning": "Esta usuaria foi suspendida.",
+ "user_suspended_warning": "A conta de %s foi suspendida."
}
}
}
},
"scene": {
"welcome": {
- "slogan": "Social networking\nback in your hands.",
+ "slogan": "Comunicación social\nde volta ás túas mans.",
"get_started": "Comezar",
"log_in": "Acceder"
},
@@ -240,7 +240,8 @@
"category": "CATEGORÍA"
},
"input": {
- "placeholder": "Buscar comunidades"
+ "placeholder": "Buscar comunidades",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Buscando servidores dispoñibles...",
@@ -301,79 +302,83 @@
},
"special": {
"username_invalid": "O nome de usuaria só pode ter caracteres alfanuméricos e trazos baixos",
- "username_too_long": "Username is too long (can’t be longer than 30 characters)",
- "email_invalid": "This is not a valid email address",
- "password_too_short": "Password is too short (must be at least 8 characters)"
+ "username_too_long": "O nome de usuaria é demasiado longo (maior de 30 caracteres)",
+ "email_invalid": "Este non é un enderezo válido de email",
+ "password_too_short": "O contrasinal é demasiado curto (debe ter 8 caracteres como mínimo)"
}
}
},
"server_rules": {
- "title": "Some ground rules.",
- "subtitle": "These are set and enforced by the %s moderators.",
- "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.",
- "terms_of_service": "terms of service",
- "privacy_policy": "privacy policy",
+ "title": "Algunhas regras básicas.",
+ "subtitle": "Son establecidas e aplicadas pola moderación de %s.",
+ "prompt": "Ao continuar, acatas os termos do servizo e a política de privacidade para %s.",
+ "terms_of_service": "termos do servizo",
+ "privacy_policy": "polícica de privacidade",
"button": {
- "confirm": "I Agree"
+ "confirm": "Acepto"
}
},
"confirm_email": {
- "title": "One last thing.",
- "subtitle": "Tap the link we emailed to you to verify your account.",
+ "title": "O último detalle.",
+ "subtitle": "Preme na ligazón que che enviamos ao email para verificar a conta.",
"button": {
- "open_email_app": "Open Email App",
- "resend": "Resend"
+ "open_email_app": "Abrir app de email",
+ "resend": "Reenviar"
},
"dont_receive_email": {
- "title": "Check your email",
- "description": "Check if your email address is correct as well as your junk folder if you haven’t.",
- "resend_email": "Resend Email"
+ "title": "Revisa o teu correo",
+ "description": "Comproba que o enderezo de email é correcto e que non vaia directo ao cartafol de spam.",
+ "resend_email": "Volver enviar o correo"
},
"open_email_app": {
- "title": "Check your inbox.",
- "description": "We just sent you an email. Check your junk folder if you haven’t.",
- "mail": "Mail",
- "open_email_client": "Open Email Client"
+ "title": "Mira na caixa de correo.",
+ "description": "Enviámosche un email. Se non aparece, mira no cartafol do lixo.",
+ "mail": "Correo",
+ "open_email_client": "Abrir cliente de email"
}
},
"home_timeline": {
- "title": "Home",
+ "title": "Inicio",
"navigation_bar_state": {
- "offline": "Offline",
- "new_posts": "See new posts",
- "published": "Published!",
- "Publishing": "Publishing post..."
+ "offline": "Sen conexión",
+ "new_posts": "Novas publicacións",
+ "published": "Publicado!",
+ "Publishing": "Publicando...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
- "title": "Find People to Follow",
- "follow_explain": "When you follow someone, you’ll see their posts in your home feed."
+ "title": "Atopar persoas para seguir",
+ "follow_explain": "Cando sigas a alguén verás as súas publicacións na cronoloxía de inicio."
},
"compose": {
"title": {
- "new_post": "New Post",
- "new_reply": "New Reply"
+ "new_post": "Nova publicación",
+ "new_reply": "Nova resposta"
},
"media_selection": {
- "camera": "Take Photo",
- "photo_library": "Photo Library",
- "browse": "Browse"
+ "camera": "Facer foto",
+ "photo_library": "Biblioteca de fotos",
+ "browse": "Explorar"
},
- "content_input_placeholder": "Type or paste what’s on your mind",
- "compose_action": "Publish",
- "replying_to_user": "replying to %s",
+ "content_input_placeholder": "Escribe o que che apeteza",
+ "compose_action": "Publicar",
+ "replying_to_user": "en resposta a %s",
"attachment": {
- "photo": "photo",
- "video": "video",
- "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.",
- "description_photo": "Describe the photo for the visually-impaired...",
- "description_video": "Describe the video for the visually-impaired..."
+ "photo": "foto",
+ "video": "vídeo",
+ "attachment_broken": "Este %s está estragado e non pode\nser subido a Mastodon.",
+ "description_photo": "Describe a foto para persoas con problemas visuais...",
+ "description_video": "Describe o vídeo para persoas con problemas visuais..."
},
"poll": {
- "duration_time": "Duration: %s",
- "thirty_minutes": "30 minutes",
- "one_hour": "1 Hour",
- "six_hours": "6 Hours",
+ "duration_time": "Duración: %s",
+ "thirty_minutes": "30 minutos",
+ "one_hour": "1 Hora",
+ "six_hours": "6 Horas",
"one_day": "1 Día",
"three_days": "3 Días",
"seven_days": "7 Días",
@@ -499,90 +504,90 @@
"hashtags": "Cancelos",
"news": "Novas",
"community": "Comunidade",
- "for_you": "For You"
+ "for_you": "Para ti"
},
- "intro": "These are the posts gaining traction in your corner of Mastodon."
+ "intro": "Estas son as publicacións en voga no teu recuncho de Mastodon."
},
"favorite": {
- "title": "Your Favorites"
+ "title": "Publicacións Favoritas"
},
"notification": {
"title": {
- "Everything": "Everything",
- "Mentions": "Mentions"
+ "Everything": "Todo",
+ "Mentions": "Mencións"
},
"notification_description": {
- "followed_you": "followed you",
- "favorited_your_post": "favorited your post",
- "reblogged_your_post": "reblogged your post",
- "mentioned_you": "mentioned you",
- "request_to_follow_you": "request to follow you",
- "poll_has_ended": "poll has ended"
+ "followed_you": "séguete",
+ "favorited_your_post": "marcou a túa publicación como favorita",
+ "reblogged_your_post": "compartiu a túa publicación",
+ "mentioned_you": "mencionoute",
+ "request_to_follow_you": "solicitou seguirte",
+ "poll_has_ended": "a enquisa rematou"
},
"keyobard": {
- "show_everything": "Show Everything",
- "show_mentions": "Show Mentions"
+ "show_everything": "Mostrar Todo",
+ "show_mentions": "Mostrar mencións"
}
},
"thread": {
- "back_title": "Post",
- "title": "Post from %s"
+ "back_title": "Publicación",
+ "title": "Publicación de %s"
},
"settings": {
- "title": "Settings",
+ "title": "Axustes",
"section": {
"appearance": {
- "title": "Appearance",
- "automatic": "Automatic",
- "light": "Always Light",
- "dark": "Always Dark"
+ "title": "Aparencia",
+ "automatic": "Automático",
+ "light": "Sempre claro",
+ "dark": "Sempre escuro"
},
"look_and_feel": {
- "title": "Look and Feel",
- "use_system": "Use System",
- "really_dark": "Really Dark",
- "sorta_dark": "Sorta Dark",
- "light": "Light"
+ "title": "Aparencia",
+ "use_system": "Seguir o sistema",
+ "really_dark": "Realmente escuro",
+ "sorta_dark": "Algo escuro",
+ "light": "Claro"
},
"notifications": {
- "title": "Notifications",
- "favorites": "Favorites my post",
- "follows": "Follows me",
- "boosts": "Reblogs my post",
- "mentions": "Mentions me",
+ "title": "Notificacións",
+ "favorites": "Favorece a miña publicación",
+ "follows": "Me segue",
+ "boosts": "Promove a miña publicación",
+ "mentions": "Me menciona",
"trigger": {
- "anyone": "anyone",
- "follower": "a follower",
- "follow": "anyone I follow",
- "noone": "no one",
- "title": "Notify me when"
+ "anyone": "calquera",
+ "follower": "unha seguidora",
+ "follow": "alguén a quen sigo",
+ "noone": "ninguén",
+ "title": "Avisarme cando"
}
},
"preference": {
- "title": "Preferences",
- "true_black_dark_mode": "True black dark mode",
- "disable_avatar_animation": "Disable animated avatars",
- "disable_emoji_animation": "Disable animated emojis",
- "using_default_browser": "Use default browser to open links",
- "open_links_in_mastodon": "Open links in Mastodon"
+ "title": "Preferencias",
+ "true_black_dark_mode": "Modo negro verdadeiro",
+ "disable_avatar_animation": "Desactivar avatares animados",
+ "disable_emoji_animation": "Desactivar emojis animados",
+ "using_default_browser": "Usar navegador por defecto para as ligazóns",
+ "open_links_in_mastodon": "Abrir ligazóns en Mastodon"
},
"boring_zone": {
- "title": "The Boring Zone",
- "account_settings": "Account Settings",
- "terms": "Terms of Service",
- "privacy": "Privacy Policy"
+ "title": "A zona aburrida",
+ "account_settings": "Axustes da conta",
+ "terms": "Termos do Servizo",
+ "privacy": "Política de Privacidade"
},
"spicy_zone": {
- "title": "The Spicy Zone",
- "clear": "Clear Media Cache",
- "signout": "Sign Out"
+ "title": "A zona picante",
+ "clear": "Limpar caché multimedia",
+ "signout": "Pechar sesión"
}
},
"footer": {
- "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
+ "mastodon_description": "Mastodon é software de código aberto. Podes informar de fallos en GitHub en %s (%s)"
},
"keyboard": {
- "close_settings_window": "Close Settings Window"
+ "close_settings_window": "Pechar ventá de axustes"
}
},
"report": {
@@ -596,7 +601,48 @@
"send": "Enviar Denuncia",
"skip_to_send": "Enviar sen comentarios",
"text_placeholder": "Escribe ou pega comentarios adicionais",
- "reported": "DENUNCIADO"
+ "reported": "DENUNCIADO",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
@@ -606,14 +652,14 @@
}
},
"account_list": {
- "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
- "dismiss_account_switcher": "Dismiss Account Switcher",
- "add_account": "Add Account"
+ "tab_bar_hint": "Perfil seleccionado: %s. Dobre toque e manter para mostrar o intercambiador de contas",
+ "dismiss_account_switcher": "Desbotar intercambiador de contas",
+ "add_account": "Engadir conta"
},
"wizard": {
- "new_in_mastodon": "New in Mastodon",
- "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
- "accessibility_hint": "Double tap to dismiss this wizard"
+ "new_in_mastodon": "Novidade en Mastodon",
+ "multiple_account_switch_intro_description": "Cambia dunha conta a outra mantendo preso o botón do perfil.",
+ "accessibility_hint": "Dobre toque para desbotar este asistente"
}
}
}
\ No newline at end of file
diff --git a/Localization/StringsConvertor/input/gl_ES/ios-infoPlist.json b/Localization/StringsConvertor/input/gl_ES/ios-infoPlist.json
index c6db73de..e3ec3fb7 100644
--- a/Localization/StringsConvertor/input/gl_ES/ios-infoPlist.json
+++ b/Localization/StringsConvertor/input/gl_ES/ios-infoPlist.json
@@ -1,6 +1,6 @@
{
- "NSCameraUsageDescription": "Used to take photo for post status",
- "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
- "NewPostShortcutItemTitle": "New Post",
- "SearchShortcutItemTitle": "Search"
+ "NSCameraUsageDescription": "Utilizado para facer foto e publicar estado",
+ "NSPhotoLibraryAddUsageDescription": "Utilizado para gardar a foto na Biblioteca",
+ "NewPostShortcutItemTitle": "Nova publicación",
+ "SearchShortcutItemTitle": "Buscar"
}
diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json
index b9f99277..6bd6131b 100644
--- a/Localization/StringsConvertor/input/hi_IN/app.json
+++ b/Localization/StringsConvertor/input/hi_IN/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/id_ID/app.json b/Localization/StringsConvertor/input/id_ID/app.json
index 4e75ce92..87c213af 100644
--- a/Localization/StringsConvertor/input/id_ID/app.json
+++ b/Localization/StringsConvertor/input/id_ID/app.json
@@ -240,7 +240,8 @@
"category": "KATEGORI"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Mencari server yang tersedia...",
@@ -342,7 +343,11 @@
"offline": "Luring",
"new_posts": "Lihat postingan baru",
"published": "Dipublikasikan!",
- "Publishing": "Mempublikasikan postingan..."
+ "Publishing": "Mempublikasikan postingan...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Kirim Laporan",
"skip_to_send": "Kirim tanpa komentar",
"text_placeholder": "Ketik atau tempel komentar tambahan",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/it_IT/app.json b/Localization/StringsConvertor/input/it_IT/app.json
index 9ba5de28..6635a37c 100644
--- a/Localization/StringsConvertor/input/it_IT/app.json
+++ b/Localization/StringsConvertor/input/it_IT/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORIA"
},
"input": {
- "placeholder": "Cerca comunità"
+ "placeholder": "Cerca comunità",
+ "search_servers_or_enter_url": "Cerca comunità o inserisci l'URL"
},
"empty_state": {
"finding_servers": "Ricerca server disponibili...",
@@ -342,7 +343,11 @@
"offline": "Non in linea",
"new_posts": "Vedi nuovi post",
"published": "Pubblicato!",
- "Publishing": "Pubblicazione post..."
+ "Publishing": "Pubblicazione post...",
+ "accessibility": {
+ "logo_label": "Pulsante Logo",
+ "logo_hint": "Tocca per scorrere verso l'alto e tocca di nuovo verso la posizione precedente"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Invia segnalazione",
"skip_to_send": "Invia senza commento",
"text_placeholder": "Digita o incolla commenti aggiuntivi",
- "reported": "SEGNALATO"
+ "reported": "SEGNALATO",
+ "step_one": {
+ "step_1_of_4": "Fase 1 di 4",
+ "whats_wrong_with_this_post": "Cosa c'è che non va con questo post?",
+ "whats_wrong_with_this_account": "Cosa c'è che non va con questo account?",
+ "whats_wrong_with_this_username": "Cosa c'è che non va con %s?",
+ "select_the_best_match": "Scegli la migliore corrispondenza",
+ "i_dont_like_it": "Non mi piace",
+ "it_is_not_something_you_want_to_see": "È qualcosa che non vuoi vedere",
+ "its_spam": "È spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Collegamenti malevoli, false interazioni o risposte ripetitive",
+ "it_violates_server_rules": "Viola le regole del server",
+ "you_are_aware_that_it_breaks_specific_rules": "Sei consapevole che violi regole specifiche",
+ "its_something_else": "È qualcos'altro",
+ "the_issue_does_not_fit_into_other_categories": "Il problema non rientra in altre categorie"
+ },
+ "step_two": {
+ "step_2_of_4": "Fase 2 di 4",
+ "which_rules_are_being_violated": "Quali regole vengono violate?",
+ "select_all_that_apply": "Seleziona tutte le risposte pertinenti",
+ "i_just_don’t_like_it": "Non mi piace"
+ },
+ "step_three": {
+ "step_3_of_4": "Fase 3 di 4",
+ "are_there_any_posts_that_back_up_this_report": "Ci sono post a sostegno di questa segnalazione?",
+ "select_all_that_apply": "Seleziona tutte le risposte pertinenti"
+ },
+ "step_four": {
+ "step_4_of_4": "Fase 4 di 4",
+ "is_there_anything_else_we_should_know": "C'è altro che dovremmo sapere?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Non vuoi vedere questo?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "Quando vedi qualcosa che non ti piace su Mastodon, puoi rimuovere la persona dalla tua esperienza.",
+ "unfollow": "Smetti di seguire",
+ "unfollowed": "Non seguito",
+ "unfollow_user": "Smetti di seguire %s",
+ "mute_user": "Silenzia %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "Non vedrai i loro post o le condivisioni nel tuo feed. Non sapranno di essere stati silenziati.",
+ "block_user": "Blocca %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "Non saranno più in grado di seguire o vedere i tuoi post, ma possono vedere se sono stati bloccati."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict b/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict
index 8dfc9507..95c35172 100644
--- a/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict
+++ b/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict
@@ -153,7 +153,7 @@
NSStringFormatValueTypeKey
ld
other
- %ld people talking
+ %ld人が投稿
plural.count.following
diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json
index f0b759d1..04d5f015 100644
--- a/Localization/StringsConvertor/input/ja_JP/app.json
+++ b/Localization/StringsConvertor/input/ja_JP/app.json
@@ -45,8 +45,8 @@
"message": "写真を保存するには、フォトライブラリへのアクセス許可を有効にしてください。"
},
"delete_post": {
- "title": "この投稿を消去しますか?",
- "message": "本当に削除しますか?"
+ "title": "投稿を削除",
+ "message": "本当にこの投稿を削除しますか?"
},
"clean_cache": {
"title": "キャッシュを消去",
@@ -56,7 +56,7 @@
"controls": {
"actions": {
"back": "戻る",
- "next": "次",
+ "next": "次へ",
"previous": "前",
"open": "開く",
"add": "追加",
@@ -91,7 +91,7 @@
"block_domain": "%sをブロック",
"unblock_domain": "%sのブロックを解除",
"settings": "設定",
- "delete": "消去"
+ "delete": "削除"
},
"tabs": {
"home": "ホーム",
@@ -131,7 +131,7 @@
"content_warning": "コンテンツ警告",
"sensitive_content": "Sensitive Content",
"media_content_warning": "どこかをタップして表示",
- "tap_to_reveal": "Tap to reveal",
+ "tap_to_reveal": "タップして表示",
"poll": {
"vote": "投票",
"closed": "クローズド"
@@ -144,8 +144,8 @@
"unfavorite": "お気に入り登録を取り消す",
"menu": "メニュー",
"hide": "非表示",
- "show_image": "Show image",
- "show_gif": "Show GIF",
+ "show_image": "画像を表示",
+ "show_gif": "GIFを表示",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
},
@@ -207,7 +207,7 @@
"scene": {
"welcome": {
"slogan": "ソーシャルネットワーキングを、あなたの手の中に.",
- "get_started": "Get Started",
+ "get_started": "はじめる",
"log_in": "ログイン"
},
"server_picker": {
@@ -240,7 +240,8 @@
"category": "カテゴリー"
},
"input": {
- "placeholder": "サーバーを探す"
+ "placeholder": "サーバーを探す",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "利用可能なサーバーの検索...",
@@ -252,7 +253,7 @@
"title": "あなたのことを教えてください",
"input": {
"avatar": {
- "delete": "消去"
+ "delete": "削除"
},
"username": {
"placeholder": "ユーザー名",
@@ -342,7 +343,11 @@
"offline": "オフライン",
"new_posts": "新しい投稿を見る",
"published": "投稿しました!",
- "Publishing": "投稿中..."
+ "Publishing": "投稿中...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -498,10 +503,10 @@
"posts": "投稿",
"hashtags": "ハッシュタグ",
"news": "ニュース",
- "community": "Community",
- "for_you": "For You"
+ "community": "コミュニティ",
+ "for_you": "おすすめ"
},
- "intro": "These are the posts gaining traction in your corner of Mastodon."
+ "intro": "あなたのMastodonサーバーで注目を集めている投稿がここに表示されます。"
},
"favorite": {
"title": "お気に入り"
@@ -512,12 +517,12 @@
"Mentions": "メンション"
},
"notification_description": {
- "followed_you": "followed you",
- "favorited_your_post": "favorited your post",
- "reblogged_your_post": "reblogged your post",
- "mentioned_you": "mentioned you",
- "request_to_follow_you": "request to follow you",
- "poll_has_ended": "poll has ended"
+ "followed_you": "さんにフォローされました",
+ "favorited_your_post": "さんがあなたの投稿をお気に入りに登録しました",
+ "reblogged_your_post": "さんがあなたの投稿をブーストしました",
+ "mentioned_you": "さんがあなたに返信しました",
+ "request_to_follow_you": "さんがあなたにフォローリクエストしました",
+ "poll_has_ended": "アンケートが終了しました"
},
"keyobard": {
"show_everything": "すべて見る",
@@ -538,11 +543,11 @@
"dark": "ダーク"
},
"look_and_feel": {
- "title": "Look and Feel",
- "use_system": "Use System",
- "really_dark": "Really Dark",
- "sorta_dark": "Sorta Dark",
- "light": "Light"
+ "title": "テーマ",
+ "use_system": "端末の設定を使う",
+ "really_dark": "ブラック",
+ "sorta_dark": "ダーク",
+ "light": "ライト"
},
"notifications": {
"title": "通知",
@@ -564,7 +569,7 @@
"disable_avatar_animation": "アバターのアニメーションを無効化する",
"disable_emoji_animation": "絵文字のアニメーションを無効化する",
"using_default_browser": "既定のブラウザでリンクを開く",
- "open_links_in_mastodon": "Open links in Mastodon"
+ "open_links_in_mastodon": "Mastodonでリンクを開く"
},
"boring_zone": {
"title": "アプリについて",
@@ -596,7 +601,48 @@
"send": "通報を送信",
"skip_to_send": "コメントなしで送信",
"text_placeholder": "追加コメントを入力",
- "reported": "報告済み"
+ "reported": "報告済み",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json
index 1c73686b..30795293 100644
--- a/Localization/StringsConvertor/input/kab_KAB/app.json
+++ b/Localization/StringsConvertor/input/kab_KAB/app.json
@@ -240,7 +240,8 @@
"category": "TAGGAYT"
},
"input": {
- "placeholder": "Nadi timɣiwnin"
+ "placeholder": "Nadi timɣiwnin",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Tifin n yiqeddacen yellan...",
@@ -342,7 +343,11 @@
"offline": "Beṛṛa n tuqqna",
"new_posts": "Tissufaɣ timaynutin",
"published": "Yettwasuffeɣ!",
- "Publishing": "Asuffeɣ tasuffeɣt..."
+ "Publishing": "Asuffeɣ tasuffeɣt...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Azen aneqis",
"skip_to_send": "Azen s war awennit",
"text_placeholder": "Aru neɣ senteḍ iwenniten-nniḍen",
- "reported": "YETTWAMMEL"
+ "reported": "YETTWAMMEL",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json
index fcd6d022..d8396680 100644
--- a/Localization/StringsConvertor/input/kmr_TR/app.json
+++ b/Localization/StringsConvertor/input/kmr_TR/app.json
@@ -211,7 +211,7 @@
"log_in": "Têkeve"
},
"server_picker": {
- "title": "Rajekarekê hilbijêre,\nHer kîjan rajekar be.",
+ "title": "Mastodon ji bikarhênerên di civakên cuda de pêk tê.",
"subtitle": "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre.",
"subtitle_extend": "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre. Her civakek ji hêla rêxistinek an kesek bi tevahî serbixwe ve tê xebitandin.",
"button": {
@@ -240,7 +240,8 @@
"category": "BEŞ"
},
"input": {
- "placeholder": "Rajekarekî bibîne an jî beşdarî ya xwe bibe..."
+ "placeholder": "Li rajekaran bigere",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Peydakirina rajekarên berdest...",
@@ -342,7 +343,11 @@
"offline": "Derhêl",
"new_posts": "Şandiyên nû bibîne",
"published": "Hate weşandin!",
- "Publishing": "Şandî tê weşandin..."
+ "Publishing": "Şandî tê weşandin...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Ragihandinê bişîne",
"skip_to_send": "Bêyî şirove bişîne",
"text_placeholder": "Şiroveyên daxwazkirê binivîsine an jî pê ve bike",
- "reported": "HATE RAGIHANDIN"
+ "reported": "HATE RAGIHANDIN",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json
index 294a53bb..9d2fb90d 100644
--- a/Localization/StringsConvertor/input/ko_KR/app.json
+++ b/Localization/StringsConvertor/input/ko_KR/app.json
@@ -240,7 +240,8 @@
"category": "분류"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "오프라인",
"new_posts": "새 글 보기",
"published": "게시됨!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "신고 전송",
"skip_to_send": "추가설명 없이 보내기",
"text_placeholder": "추가 설명을 적거나 붙여넣으세요",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json
index aa43e849..f21f62a9 100644
--- a/Localization/StringsConvertor/input/nl_NL/app.json
+++ b/Localization/StringsConvertor/input/nl_NL/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORIE"
},
"input": {
- "placeholder": "Zoek uw server of sluit u bij een nieuwe server aan..."
+ "placeholder": "Zoek uw server of sluit u bij een nieuwe server aan...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Beschikbare servers zoeken...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "Bekijk nieuwe berichten",
"published": "Gepubliceerd!",
- "Publishing": "Bericht publiceren..."
+ "Publishing": "Bericht publiceren...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Stuur rapport",
"skip_to_send": "Verstuur zonder opmerkingen",
"text_placeholder": "Schrijf of plak aanvullende opmerkingen",
- "reported": "Gerapporteerd"
+ "reported": "Gerapporteerd",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json
index 77866999..5bb83793 100644
--- a/Localization/StringsConvertor/input/pt_BR/app.json
+++ b/Localization/StringsConvertor/input/pt_BR/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json
index 50512250..8de2dc0b 100644
--- a/Localization/StringsConvertor/input/pt_PT/app.json
+++ b/Localization/StringsConvertor/input/pt_PT/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json
index 3436a94e..3d130a84 100644
--- a/Localization/StringsConvertor/input/ro_RO/app.json
+++ b/Localization/StringsConvertor/input/ro_RO/app.json
@@ -240,7 +240,8 @@
"category": "CATEGORY"
},
"input": {
- "placeholder": "Search servers"
+ "placeholder": "Search servers",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Finding available servers...",
@@ -342,7 +343,11 @@
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
- "Publishing": "Publishing post..."
+ "Publishing": "Publishing post...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json
index 1f7a4554..05770e7e 100644
--- a/Localization/StringsConvertor/input/ru_RU/app.json
+++ b/Localization/StringsConvertor/input/ru_RU/app.json
@@ -240,7 +240,8 @@
"category": "КАТЕГОРИЯ"
},
"input": {
- "placeholder": "Найдите сервер или присоединитесь к своему..."
+ "placeholder": "Найдите сервер или присоединитесь к своему...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Ищем доступные сервера...",
@@ -342,7 +343,11 @@
"offline": "Не в сети",
"new_posts": "Показать новые",
"published": "Опубликовано!",
- "Publishing": "Публикуем пост..."
+ "Publishing": "Публикуем пост...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Пожаловаться",
"skip_to_send": "Отправить без комментария",
"text_placeholder": "Дополнительные комментарии",
- "reported": "REPORTED"
+ "reported": "REPORTED",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict
index a14b5f62..5bfb998f 100644
--- a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict
+++ b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict
@@ -157,7 +157,7 @@
NSStringFormatValueTypeKey
ld
one
- %ld röst
+ %ld röstare
other
%ld röster
@@ -317,7 +317,7 @@
NSStringFormatValueTypeKey
ld
one
- %ldå sedan
+ %ld år sedan
other
%ldå sedan
@@ -333,7 +333,7 @@
NSStringFormatValueTypeKey
ld
one
- %ldmån sedan
+ %ld mån sedan
other
%ld mån sedan
diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json
index 4f93231e..d7570575 100644
--- a/Localization/StringsConvertor/input/sv_SE/app.json
+++ b/Localization/StringsConvertor/input/sv_SE/app.json
@@ -23,13 +23,13 @@
"title": "Publicering misslyckades",
"message": "Det gick inte att publicera inlägget.\nKontrollera din internetanslutning.",
"attachments_message": {
- "video_attach_with_photo": "Det går inte att bifoga en video till en status som redan innehåller bilder.",
+ "video_attach_with_photo": "Det går inte att bifoga en video till ett inlägg som redan innehåller bilder.",
"more_than_one_video": "Det går inte att bifoga mer än en video."
}
},
"edit_profile_failure": {
- "title": "Fel vid profilredigering",
- "message": "Kan inte redigera profil. Försök igen."
+ "title": "Profilredigering misslyckades",
+ "message": "Kan inte redigera profil. Var god försök igen."
},
"sign_out": {
"title": "Logga ut",
@@ -41,7 +41,7 @@
"block_entire_domain": "Blockera domän"
},
"save_photo_failure": {
- "title": "Kunde inte spara foto",
+ "title": "Spara foto misslyckades",
"message": "Aktivera åtkomst till Bilder för att spara bilden."
},
"delete_post": {
@@ -57,7 +57,7 @@
"actions": {
"back": "Tillbaka",
"next": "Nästa",
- "previous": "Tidigare",
+ "previous": "Föregående",
"open": "Öppna",
"add": "Lägg till",
"remove": "Radera",
@@ -69,7 +69,7 @@
"continue": "Fortsätt",
"compose": "Skriv",
"cancel": "Avbryt",
- "discard": "Kasta",
+ "discard": "Släng",
"try_again": "Försök igen",
"take_photo": "Ta foto",
"save_photo": "Spara foto",
@@ -77,7 +77,7 @@
"sign_in": "Logga in",
"sign_up": "Registrera dig",
"see_more": "Visa mer",
- "preview": "Förhandstitt",
+ "preview": "Förhandsvisa",
"share": "Dela",
"share_user": "Dela %s",
"share_post": "Dela inlägg",
@@ -96,7 +96,7 @@
"tabs": {
"home": "Hem",
"search": "Sök",
- "notification": "Avisering",
+ "notification": "Notis",
"profile": "Profil"
},
"keyboard": {
@@ -151,7 +151,7 @@
},
"tag": {
"url": "URL",
- "mention": "Nämn",
+ "mention": "Omnämn",
"link": "Länk",
"hashtag": "Hashtagg",
"email": "E-post",
@@ -161,13 +161,13 @@
"unlisted": "Alla kan se detta inlägg men det visas inte i den offentliga tidslinjen.",
"private": "Endast deras följare kan se detta inlägg.",
"private_from_me": "Bara mina följare kan se det här inlägget.",
- "direct": "Endast nämnda användare kan se detta inlägg."
+ "direct": "Endast omnämnda användare kan se detta inlägg."
}
},
"friendship": {
"follow": "Följ",
"following": "Följer",
- "request": "Begäran",
+ "request": "Följ",
"pending": "Väntande",
"block": "Blockera",
"block_user": "Blockera %s",
@@ -198,7 +198,7 @@
"user_blocking_warning": "Du kan inte visa %ss profil\nförrän du avblockerar dem.\nDin profil ser ut så här för dem.",
"blocked_warning": "Du kan inte visa den här användarens profil\nförrän de avblockerar dig.",
"user_blocked_warning": "Du kan inte visa %ss profil\nförrän de avblockerar dig.",
- "suspended_warning": "Denna användare har stängts av.",
+ "suspended_warning": "Denna användare har blivit avstängd.",
"user_suspended_warning": "%ss konto har blivit avstängt."
}
}
@@ -211,9 +211,9 @@
"log_in": "Logga in"
},
"server_picker": {
- "title": "Mastodon utgörs av användare i olika gemenskaper.",
- "subtitle": "Välj en gemenskap baserad på dina intressen, region eller ett allmänt syfte.",
- "subtitle_extend": "Välj en gemenskap baserad på dina intressen, region eller ett allmänt syfte. Varje gemenskap drivs av en helt oberoende organisation eller individ.",
+ "title": "Mastodon utgörs av användare på olika servrar.",
+ "subtitle": "Välj en server baserat på dina intressen, region eller ett allmänt syfte.",
+ "subtitle_extend": "Välj en server baserat på dina intressen, region eller ett allmänt syfte. Varje server drivs av en helt oberoende organisation eller individ.",
"button": {
"category": {
"all": "Alla",
@@ -240,7 +240,8 @@
"category": "KATEGORI"
},
"input": {
- "placeholder": "Sök gemenskaper"
+ "placeholder": "Sök gemenskaper",
+ "search_servers_or_enter_url": "Sök gemenskaper eller ange URL"
},
"empty_state": {
"finding_servers": "Söker tillgängliga servrar...",
@@ -321,7 +322,7 @@
"title": "En sista sak.",
"subtitle": "Tryck på länken vi e-postade till dig för att verifiera ditt konto.",
"button": {
- "open_email_app": "Öppna epostappen",
+ "open_email_app": "Öppna e-postappen",
"resend": "Skicka igen"
},
"dont_receive_email": {
@@ -340,9 +341,13 @@
"title": "Hem",
"navigation_bar_state": {
"offline": "Offline",
- "new_posts": "Se nya inlägg",
- "published": "Publicerad!",
- "Publishing": "Publicerar inlägget..."
+ "new_posts": "Nya inlägg",
+ "published": "Publicerat!",
+ "Publishing": "Publicerar inlägget...",
+ "accessibility": {
+ "logo_label": "Logo-knapp",
+ "logo_hint": "Tryck för att bläddra till toppen och tryck igen för föregående plats"
+ }
}
},
"suggestion_account": {
@@ -370,11 +375,11 @@
"description_video": "Beskriv videon för de synskadade..."
},
"poll": {
- "duration_time": "Varaktighet: %s",
+ "duration_time": "Längd: %s",
"thirty_minutes": "30 minuter",
"one_hour": "1 timme",
"six_hours": "6 timmar",
- "one_day": "1dag",
+ "one_day": "1 dag",
"three_days": "3 dagar",
"seven_days": "7 dagar",
"option_number": "Alternativ %ld"
@@ -383,13 +388,13 @@
"placeholder": "Skriv en noggrann varning här..."
},
"visibility": {
- "public": "Publik",
+ "public": "Offentlig",
"unlisted": "Olistad",
"private": "Endast följare",
"direct": "Bara personer jag nämner"
},
"auto_complete": {
- "space_to_add": "Mellanslag att lägga till"
+ "space_to_add": "Mellanslag för att lägga till"
},
"accessibility": {
"append_attachment": "Lägg till bilaga",
@@ -401,8 +406,8 @@
"post_visibility_menu": "Inläggssynlighetsmeny"
},
"keyboard": {
- "discard_post": "Kasta inlägget",
- "publish_post": "Publicerar inlägget",
+ "discard_post": "Släng inlägget",
+ "publish_post": "Publicera inlägget",
"toggle_poll": "Växla omröstning",
"toggle_content_warning": "Växla innehållsvarning",
"append_attachment_entry": "Lägg till bilaga - %s",
@@ -498,7 +503,7 @@
"posts": "Inlägg",
"hashtags": "Hashtaggar",
"news": "Nyheter",
- "community": "Gemenskap",
+ "community": "Server",
"for_you": "För dig"
},
"intro": "Detta är de inlägg som engagerar i ditt hörn av Mastodon."
@@ -545,11 +550,11 @@
"light": "Ljust"
},
"notifications": {
- "title": "Aviseringar",
+ "title": "Notiser",
"favorites": "Favoriserar mitt inlägg",
"follows": "Följer mig",
"boosts": "Ompostar mitt inlägg",
- "mentions": "Nämner mig",
+ "mentions": "Omnämner mig",
"trigger": {
"anyone": "alla",
"follower": "en följare",
@@ -596,7 +601,48 @@
"send": "Skicka rapport",
"skip_to_send": "Skicka utan kommentar",
"text_placeholder": "Skriv eller klistra in ytterligare kommentarer",
- "reported": "RAPPORTERAD"
+ "reported": "RAPPORTERAD",
+ "step_one": {
+ "step_1_of_4": "Steg 1 av 4",
+ "whats_wrong_with_this_post": "Vad är fel med det här inlägget?",
+ "whats_wrong_with_this_account": "Vad är fel med det här kontot?",
+ "whats_wrong_with_this_username": "Vad är fel med %s?",
+ "select_the_best_match": "Välj den bästa träffen",
+ "i_dont_like_it": "Jag tycker inte om det",
+ "it_is_not_something_you_want_to_see": "Det är inget som du vill se",
+ "its_spam": "Det är skräppost",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Skadliga länkar, bedrägligt beteende eller repetitiva svar",
+ "it_violates_server_rules": "Det bryter mot serverns regler",
+ "you_are_aware_that_it_breaks_specific_rules": "Du är medveten om att det bryter mot specifika regler",
+ "its_something_else": "Det är något annat",
+ "the_issue_does_not_fit_into_other_categories": "Frågan passar inte in i andra kategorier"
+ },
+ "step_two": {
+ "step_2_of_4": "Steg 2 av 4",
+ "which_rules_are_being_violated": "Vilka regler överträds?",
+ "select_all_that_apply": "Välj allt som stämmer",
+ "i_just_don’t_like_it": "Jag tycker bara inte om det"
+ },
+ "step_three": {
+ "step_3_of_4": "Steg 3 av 4",
+ "are_there_any_posts_that_back_up_this_report": "Finns det några inlägg som stöder denna rapport?",
+ "select_all_that_apply": "Välj allt som stämmer"
+ },
+ "step_four": {
+ "step_4_of_4": "Steg 4 av 4",
+ "is_there_anything_else_we_should_know": "Finns det något annat vi borde veta?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Vill du inte se det här?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "När du ser något som du inte gillar på Mastodon kan du ta bort personen från din upplevelse.",
+ "unfollow": "Avfölj",
+ "unfollowed": "Slutade följa",
+ "unfollow_user": "Avfölj %s",
+ "mute_user": "Tysta %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "Du kommer inte att se deras inlägg eller ompostningar i ditt hemflöde. De kommer inte att veta att de har blivit tystade.",
+ "block_user": "Blockera %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "De kommer inte längre att kunna följa eller se dina inlägg, men de kan se om de har blockerats."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json b/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json
index 98ff6d3b..6073413d 100644
--- a/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json
+++ b/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json
@@ -1,6 +1,6 @@
{
"NSCameraUsageDescription": "Används för att ta foto till inlägg",
- "NSPhotoLibraryAddUsageDescription": "Används för att spara foto till Bilder",
+ "NSPhotoLibraryAddUsageDescription": "Används för att spara foto till bildbiblioteket",
"NewPostShortcutItemTitle": "Nytt inlägg",
"SearchShortcutItemTitle": "Sök"
}
diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json
index 50513e58..c162f9f0 100644
--- a/Localization/StringsConvertor/input/th_TH/app.json
+++ b/Localization/StringsConvertor/input/th_TH/app.json
@@ -211,20 +211,20 @@
"log_in": "เข้าสู่ระบบ"
},
"server_picker": {
- "title": "Mastodon ประกอบด้วยผู้ใช้ในชุมชนต่าง ๆ",
- "subtitle": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ",
- "subtitle_extend": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง",
+ "title": "Mastodon ประกอบด้วยผู้ใช้ในเซิร์ฟเวอร์ต่าง ๆ",
+ "subtitle": "เลือกเซิร์ฟเวอร์ตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ",
+ "subtitle_extend": "เลือกเซิร์ฟเวอร์ตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละเซิร์ฟเวอร์ดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง",
"button": {
"category": {
"all": "ทั้งหมด",
"all_accessiblity_description": "หมวดหมู่: ทั้งหมด",
- "academia": "วิชาการ",
+ "academia": "สถาบันการศึกษา",
"activism": "กิจกรรมเพื่อการเปลี่ยนแปลง",
"food": "อาหาร",
- "furry": "furry",
+ "furry": "สัตว์ขนยาว",
"games": "เกม",
"general": "ทั่วไป",
- "journalism": "การเขียนข่าว",
+ "journalism": "วารสารศาสตร์",
"lgbt": "lgbt",
"regional": "ภูมิภาค",
"art": "ศิลปะ",
@@ -240,7 +240,8 @@
"category": "หมวดหมู่"
},
"input": {
- "placeholder": "ค้นหาชุมชน"
+ "placeholder": "ค้นหาเซิร์ฟเวอร์",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "กำลังค้นหาเซิร์ฟเวอร์ที่พร้อมใช้งาน...",
@@ -266,13 +267,13 @@
},
"password": {
"placeholder": "รหัสผ่าน",
- "require": "รหัสผ่านของคุณต้องมีอย่างน้อย:",
+ "require": "รหัสผ่านของคุณจำเป็นต้องมีอย่างน้อย:",
"character_limit": "8 ตัวอักษร",
"accessibility": {
"checked": "กาเครื่องหมายแล้ว",
"unchecked": "ไม่ได้กาเครื่องหมาย"
},
- "hint": "รหัสผ่านของคุณต้องมีอย่างน้อยแปดตัวอักษร"
+ "hint": "รหัสผ่านของคุณจำเป็นต้องมีอย่างน้อยแปดตัวอักษร"
},
"invite": {
"registration_user_invite_request": "ทำไมคุณจึงต้องการเข้าร่วม?"
@@ -293,7 +294,7 @@
"taken": "%s ถูกใช้งานแล้ว",
"reserved": "%s เป็นคำสงวน",
"accepted": "ต้องยอมรับ %s",
- "blank": "ต้องมี %s",
+ "blank": "ต้องการ %s",
"invalid": "%s ไม่ถูกต้อง",
"too_long": "%s ยาวเกินไป",
"too_short": "%s สั้นเกินไป",
@@ -342,7 +343,11 @@
"offline": "ออฟไลน์",
"new_posts": "ดูโพสต์ใหม่",
"published": "เผยแพร่แล้ว!",
- "Publishing": "กำลังเผยแพร่โพสต์..."
+ "Publishing": "กำลังเผยแพร่โพสต์...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -498,7 +503,7 @@
"posts": "โพสต์",
"hashtags": "แฮชแท็ก",
"news": "ข่าว",
- "community": "Community",
+ "community": "ชุมชน",
"for_you": "สำหรับคุณ"
},
"intro": "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ"
@@ -596,7 +601,48 @@
"send": "ส่งรายงาน",
"skip_to_send": "ส่งโดยไม่มีความคิดเห็น",
"text_placeholder": "พิมพ์หรือวางความคิดเห็นเพิ่มเติม",
- "reported": "รายงานแล้ว"
+ "reported": "รายงานแล้ว",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/tr_TR/app.json b/Localization/StringsConvertor/input/tr_TR/app.json
index 9f41a72b..89659407 100644
--- a/Localization/StringsConvertor/input/tr_TR/app.json
+++ b/Localization/StringsConvertor/input/tr_TR/app.json
@@ -240,7 +240,8 @@
"category": "KATEGORİ"
},
"input": {
- "placeholder": "Toplulukları ara"
+ "placeholder": "Toplulukları ara",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Mevcut sunucular aranıyor...",
@@ -342,7 +343,11 @@
"offline": "Çevrimdışı",
"new_posts": "Yeni gönderiler gör",
"published": "Yayınlandı!",
- "Publishing": "Gönderi yayınlanıyor..."
+ "Publishing": "Gönderi yayınlanıyor...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -498,7 +503,7 @@
"posts": "Gönderiler",
"hashtags": "Etiketler",
"news": "Haberler",
- "community": "Community",
+ "community": "Topluluk",
"for_you": "Senin İçin"
},
"intro": "Bunlar, Mastodon'un köşesinde ilgi çeken gönderilerdir."
@@ -538,7 +543,7 @@
"dark": "Daima Koyu"
},
"look_and_feel": {
- "title": "Look and Feel",
+ "title": "Görünüm",
"use_system": "Sistem İle Aynı",
"really_dark": "Gerçek Koyu",
"sorta_dark": "Hafif Koyu",
@@ -596,7 +601,48 @@
"send": "Raporu Gönder",
"skip_to_send": "Yorum yapmadan gönder",
"text_placeholder": "Ek yorum yazın veya yapıştırın",
- "reported": "RAPORLANDI"
+ "reported": "RAPORLANDI",
+ "step_one": {
+ "step_1_of_4": "Adım 1/4",
+ "whats_wrong_with_this_post": "Bu gönderi ile ilgili sorun nedir?",
+ "whats_wrong_with_this_account": "Bu hesap ile ilgili sorun nedir?",
+ "whats_wrong_with_this_username": "%s kişisinin sorunu nedir?",
+ "select_the_best_match": "En iyi seçeneceği seçiniz",
+ "i_dont_like_it": "Beğenmedim",
+ "it_is_not_something_you_want_to_see": "Görmek isteyeceğim bir şey değil",
+ "its_spam": "Spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "Sunucu kurallarını ihlal ediyor",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "Başka bir şey",
+ "the_issue_does_not_fit_into_other_categories": "Sorun bunlardan biri değil"
+ },
+ "step_two": {
+ "step_2_of_4": "Adım 2/4",
+ "which_rules_are_being_violated": "Hangi kurallar ihlal ediliyor?",
+ "select_all_that_apply": "Geçerli olan tümünü seçiniz",
+ "i_just_don’t_like_it": "Beğenmedim"
+ },
+ "step_three": {
+ "step_3_of_4": "Adım 3/4",
+ "are_there_any_posts_that_back_up_this_report": "Bu bildirimi destekleyecek herhangi bir gönderi var mı?",
+ "select_all_that_apply": "Geçerli olanların tümünü seçiniz"
+ },
+ "step_four": {
+ "step_4_of_4": "Adım 4/4",
+ "is_there_anything_else_we_should_know": "Bilmemiz gereken başka bir şey var mı?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Bunu görmek istemiyor musunuz?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Takibi bırak",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/vi_VN/app.json b/Localization/StringsConvertor/input/vi_VN/app.json
index 2a6c1a49..73d3615c 100644
--- a/Localization/StringsConvertor/input/vi_VN/app.json
+++ b/Localization/StringsConvertor/input/vi_VN/app.json
@@ -240,7 +240,8 @@
"category": "PHÂN LOẠI"
},
"input": {
- "placeholder": "Tìm máy chủ"
+ "placeholder": "Tìm máy chủ",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "Đang tìm máy chủ hoạt động...",
@@ -342,7 +343,11 @@
"offline": "Ngoại tuyến",
"new_posts": "Đọc những tút mới",
"published": "Đã đăng!",
- "Publishing": "Đang đăng tút..."
+ "Publishing": "Đang đăng tút...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "Gửi báo cáo",
"skip_to_send": "Gửi không ghi chú",
"text_placeholder": "Nhập hoặc bổ sung chú thích",
- "reported": "ĐÃ BÁO CÁO"
+ "reported": "ĐÃ BÁO CÁO",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json
index 2809b4c3..8e63b09a 100644
--- a/Localization/StringsConvertor/input/zh_CN/app.json
+++ b/Localization/StringsConvertor/input/zh_CN/app.json
@@ -240,7 +240,8 @@
"category": "类别"
},
"input": {
- "placeholder": "查找或加入你自己的服务器..."
+ "placeholder": "查找或加入你自己的服务器...",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "正在查找可用的服务器...",
@@ -342,7 +343,11 @@
"offline": "离线",
"new_posts": "查看新帖子",
"published": "已发送",
- "Publishing": "正在发送..."
+ "Publishing": "正在发送...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "发送举报",
"skip_to_send": "直接发送",
"text_placeholder": "输入或粘贴额外的注释",
- "reported": "已报告"
+ "reported": "已报告",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json
index 1fd5e2f0..3c2d4313 100644
--- a/Localization/StringsConvertor/input/zh_TW/app.json
+++ b/Localization/StringsConvertor/input/zh_TW/app.json
@@ -240,7 +240,8 @@
"category": "分類"
},
"input": {
- "placeholder": "搜尋伺服器"
+ "placeholder": "搜尋伺服器",
+ "search_servers_or_enter_url": "Search communities or enter URL"
},
"empty_state": {
"finding_servers": "尋找可用的伺服器...",
@@ -342,7 +343,11 @@
"offline": "離線",
"new_posts": "檢視最新嘟文",
"published": "嘟出去!",
- "Publishing": "發表嘟文..."
+ "Publishing": "發表嘟文...",
+ "accessibility": {
+ "logo_label": "Logo Button",
+ "logo_hint": "Tap to scroll to top and tap again to previous location"
+ }
}
},
"suggestion_account": {
@@ -596,7 +601,48 @@
"send": "傳送檢舉報告",
"skip_to_send": "不加入備註並傳送",
"text_placeholder": "請輸入或貼上額外的備註",
- "reported": "已檢舉"
+ "reported": "已檢舉",
+ "step_one": {
+ "step_1_of_4": "Step 1 of 4",
+ "whats_wrong_with_this_post": "What's wrong with this post?",
+ "whats_wrong_with_this_account": "What's wrong with this account?",
+ "whats_wrong_with_this_username": "What's wrong with %s?",
+ "select_the_best_match": "Select the best match",
+ "i_dont_like_it": "I don’t like it",
+ "it_is_not_something_you_want_to_see": "It is not something you want to see",
+ "its_spam": "It’s spam",
+ "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
+ "it_violates_server_rules": "It violates server rules",
+ "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
+ "its_something_else": "It’s something else",
+ "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
+ },
+ "step_two": {
+ "step_2_of_4": "Step 2 of 4",
+ "which_rules_are_being_violated": "Which rules are being violated?",
+ "select_all_that_apply": "Select all that apply",
+ "i_just_don’t_like_it": "I just don’t like it"
+ },
+ "step_three": {
+ "step_3_of_4": "Step 3 of 4",
+ "are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
+ "select_all_that_apply": "Select all that apply"
+ },
+ "step_four": {
+ "step_4_of_4": "Step 4 of 4",
+ "is_there_anything_else_we_should_know": "Is there anything else we should know?"
+ },
+ "step_final": {
+ "dont_want_to_see_this": "Don’t want to see this?",
+ "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you don’t like on Mastodon, you can remove the person from your experience.",
+ "unfollow": "Unfollow",
+ "unfollowed": "Unfollowed",
+ "unfollow_user": "Unfollow %s",
+ "mute_user": "Mute %s",
+ "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
+ "block_user": "Block %s",
+ "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked."
+ }
},
"preview": {
"keyboard": {
diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj
index 711334cf..fb9e834c 100644
--- a/Mastodon.xcodeproj/project.pbxproj
+++ b/Mastodon.xcodeproj/project.pbxproj
@@ -87,7 +87,7 @@
2DF123A725C3B0210020F248 /* ActiveLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF123A625C3B0210020F248 /* ActiveLabel.swift */; };
2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BA625D10E1000694EC8 /* APIService+Favorite.swift */; };
5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */; };
- 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */; };
+ 5B24BBDB262DB14800A9381B /* ReportStatusViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD8262DB14800A9381B /* ReportStatusViewModel+Diffable.swift */; };
5B24BBE2262DB19100A9381B /* APIService+Report.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBE1262DB19100A9381B /* APIService+Report.swift */; };
5B90C45E262599800002E742 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C456262599800002E742 /* SettingsViewModel.swift */; };
5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */; };
@@ -408,6 +408,7 @@
DB7A9F932818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7A9F922818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift */; };
DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */; };
DB8190C62601FF0400020C08 /* AttachmentContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */; };
+ DB848E33282B62A800A302CC /* ReportResultView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB848E32282B62A800A302CC /* ReportResultView.swift */; };
DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */; };
DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */; };
DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; };
@@ -437,7 +438,7 @@
DB98337125C9443200AD9700 /* APIService+Authentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337025C9443200AD9700 /* APIService+Authentication.swift */; };
DB98337F25C9452D00AD9700 /* APIService+APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337E25C9452D00AD9700 /* APIService+APIError.swift */; };
DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98339B25C96DE600AD9700 /* APIService+Account.swift */; };
- DB98EB4727B0DFAA0082E365 /* ReportViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4627B0DFAA0082E365 /* ReportViewModel+State.swift */; };
+ DB98EB4727B0DFAA0082E365 /* ReportStatusViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4627B0DFAA0082E365 /* ReportStatusViewModel+State.swift */; };
DB98EB4927B0F0CD0082E365 /* ReportStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */; };
DB98EB4C27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */; };
DB98EB5327B0F9890082E365 /* ReportHeadlineTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5227B0F9890082E365 /* ReportHeadlineTableViewCell.swift */; };
@@ -448,7 +449,6 @@
DB98EB6027B10E150082E365 /* ReportCommentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */; };
DB98EB6227B215EB0082E365 /* ReportResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */; };
DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6427B216500082E365 /* ReportResultViewModel.swift */; };
- DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */; };
DB98EB6927B21A7C0082E365 /* ReportResultActionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */; };
DB98EB6B27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6A27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift */; };
DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */; };
@@ -564,6 +564,14 @@
DBE3CE07261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */; };
DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; };
DBE54ACC2636C8FD004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; };
+ DBEFCD71282A12B200C0ABEA /* ReportReasonViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD70282A12B200C0ABEA /* ReportReasonViewController.swift */; };
+ DBEFCD74282A130400C0ABEA /* ReportReasonViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD73282A130400C0ABEA /* ReportReasonViewModel.swift */; };
+ DBEFCD76282A143F00C0ABEA /* ReportStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD75282A143F00C0ABEA /* ReportStatusViewController.swift */; };
+ DBEFCD79282A147000C0ABEA /* ReportStatusViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD78282A147000C0ABEA /* ReportStatusViewModel.swift */; };
+ DBEFCD7B282A162400C0ABEA /* ReportReasonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD7A282A162400C0ABEA /* ReportReasonView.swift */; };
+ DBEFCD7D282A2A3B00C0ABEA /* ReportServerRulesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD7C282A2A3B00C0ABEA /* ReportServerRulesViewController.swift */; };
+ DBEFCD80282A2AA900C0ABEA /* ReportServerRulesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD7F282A2AA900C0ABEA /* ReportServerRulesViewModel.swift */; };
+ DBEFCD82282A2AB100C0ABEA /* ReportServerRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBEFCD81282A2AB100C0ABEA /* ReportServerRulesView.swift */; };
DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */; };
DBF156E22702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m in Sources */ = {isa = PBXBuildFile; fileRef = DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */; };
DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF156E32702DB3F00EC00B7 /* HandleTapAction.swift */; };
@@ -787,7 +795,7 @@
459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.debug.xcconfig"; sourceTree = ""; };
46DAB0EBDDFB678347CD96FF /* Pods-MastodonTests.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.asdk - release.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.asdk - release.xcconfig"; sourceTree = ""; };
5B24BBD7262DB14800A9381B /* ReportViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReportViewModel.swift; sourceTree = ""; };
- 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReportViewModel+Diffable.swift"; sourceTree = ""; };
+ 5B24BBD8262DB14800A9381B /* ReportStatusViewModel+Diffable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReportStatusViewModel+Diffable.swift"; sourceTree = ""; };
5B24BBE1262DB19100A9381B /* APIService+Report.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+Report.swift"; sourceTree = ""; };
5B90C456262599800002E742 /* SettingsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; };
5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsToggleTableViewCell.swift; sourceTree = ""; };
@@ -808,7 +816,10 @@
5DDDF1A82617489F00311060 /* Mastodon+Entity+History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+History.swift"; sourceTree = ""; };
5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVPlayer.swift; sourceTree = ""; };
6130CBE4B26E3C976ACC1688 /* Pods-ShareActionExtension.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.asdk - debug.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.asdk - debug.xcconfig"; sourceTree = ""; };
+ 63EF9E6E5B575CD2A8B0475D /* Pods-AppShared.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.profile.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.profile.xcconfig"; sourceTree = ""; };
+ 728DE51ADA27C395C6E1BAB5 /* Pods-Mastodon-MastodonUITests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.profile.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.profile.xcconfig"; sourceTree = ""; };
75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.release.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.release.xcconfig"; sourceTree = ""; };
+ 7CB58D292DA7ACEF179A9050 /* Pods-Mastodon.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.profile.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.profile.xcconfig"; sourceTree = ""; };
7CEFFAE9AF9284B13C0A758D /* Pods-MastodonTests.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.asdk - debug.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.asdk - debug.xcconfig"; sourceTree = ""; };
819CEC9DCAD8E8E7BD85A7BB /* Pods-Mastodon.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk.xcconfig"; sourceTree = ""; };
8850E70A1D5FF51432E43653 /* Pods-Mastodon-MastodonUITests.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk - release.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk - release.xcconfig"; sourceTree = ""; };
@@ -1158,6 +1169,7 @@
DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentContainerView.swift; sourceTree = ""; };
DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterTextFieldTableViewCell.swift; sourceTree = ""; };
DB84811627883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterPasswordHintTableViewCell.swift; sourceTree = ""; };
+ DB848E32282B62A800A302CC /* ReportResultView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultView.swift; sourceTree = ""; };
DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewController.swift; sourceTree = ""; };
DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootSplitViewController.swift; sourceTree = ""; };
DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewModel.swift; sourceTree = ""; };
@@ -1194,7 +1206,7 @@
DB98337025C9443200AD9700 /* APIService+Authentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Authentication.swift"; sourceTree = ""; };
DB98337E25C9452D00AD9700 /* APIService+APIError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+APIError.swift"; sourceTree = ""; };
DB98339B25C96DE600AD9700 /* APIService+Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Account.swift"; sourceTree = ""; };
- DB98EB4627B0DFAA0082E365 /* ReportViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportViewModel+State.swift"; sourceTree = ""; };
+ DB98EB4627B0DFAA0082E365 /* ReportStatusViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportStatusViewModel+State.swift"; sourceTree = ""; };
DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportStatusTableViewCell.swift; sourceTree = ""; };
DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportStatusTableViewCell+ViewModel.swift"; sourceTree = ""; };
DB98EB5227B0F9890082E365 /* ReportHeadlineTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportHeadlineTableViewCell.swift; sourceTree = ""; };
@@ -1205,7 +1217,6 @@
DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportCommentTableViewCell.swift; sourceTree = ""; };
DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewController.swift; sourceTree = ""; };
DB98EB6427B216500082E365 /* ReportResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewModel.swift; sourceTree = ""; };
- DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportResultViewModel+Diffable.swift"; sourceTree = ""; };
DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultActionTableViewCell.swift; sourceTree = ""; };
DB98EB6A27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SettingsAppearanceTableViewCell+ViewModel.swift"; sourceTree = ""; };
DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentContainerView+EmptyStateView.swift"; sourceTree = ""; };
@@ -1325,6 +1336,14 @@
DBEB19E927E4F37B00B0E80E /* ku */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ku; path = ku.lproj/Intents.strings; sourceTree = ""; };
DBEB19EA27E4F37B00B0E80E /* ku */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ku; path = ku.lproj/InfoPlist.strings; sourceTree = ""; };
DBEB19EB27E4F37B00B0E80E /* ku */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ku; path = ku.lproj/Intents.stringsdict; sourceTree = ""; };
+ DBEFCD70282A12B200C0ABEA /* ReportReasonViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportReasonViewController.swift; sourceTree = ""; };
+ DBEFCD73282A130400C0ABEA /* ReportReasonViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportReasonViewModel.swift; sourceTree = ""; };
+ DBEFCD75282A143F00C0ABEA /* ReportStatusViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportStatusViewController.swift; sourceTree = ""; };
+ DBEFCD78282A147000C0ABEA /* ReportStatusViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportStatusViewModel.swift; sourceTree = ""; };
+ DBEFCD7A282A162400C0ABEA /* ReportReasonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportReasonView.swift; sourceTree = ""; };
+ DBEFCD7C282A2A3B00C0ABEA /* ReportServerRulesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportServerRulesViewController.swift; sourceTree = ""; };
+ DBEFCD7F282A2AA900C0ABEA /* ReportServerRulesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportServerRulesViewModel.swift; sourceTree = ""; };
+ DBEFCD81282A2AB100C0ABEA /* ReportServerRulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportServerRulesView.swift; sourceTree = ""; };
DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAddAccountCollectionViewCell.swift; sourceTree = ""; };
DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Mastodon-Bridging-Header.h"; sourceTree = ""; };
DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIStatusBarManager+HandleTapAction.m"; sourceTree = ""; };
@@ -1365,6 +1384,7 @@
DBFEF07226A6913D006D7ED1 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; };
DBFEF07A26A6BCE8006D7ED1 /* APIService+Status+Publish.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Status+Publish.swift"; sourceTree = ""; };
DDB1B139FA8EA26F510D58B6 /* Pods-AppShared.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.asdk - release.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.asdk - release.xcconfig"; sourceTree = ""; };
+ DF65937EC1FF64462BC002EE /* Pods-MastodonTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.profile.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.profile.xcconfig"; sourceTree = ""; };
E5C7236E58D14A0322FE00F2 /* Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig"; sourceTree = ""; };
E9AABD3D26B64B8C00E237DA /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Intents.strings; sourceTree = ""; };
E9AABD4026B64B8D00E237DA /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; };
@@ -1567,6 +1587,10 @@
0655B257371274BEB7EB1C19 /* Pods-Mastodon.release snapshot.xcconfig */,
0827D1674B2523503E8605F6 /* Pods-Mastodon-MastodonUITests.release snapshot.xcconfig */,
8E79CCBE51FBC3F7FE8CF49F /* Pods-MastodonTests.release snapshot.xcconfig */,
+ 63EF9E6E5B575CD2A8B0475D /* Pods-AppShared.profile.xcconfig */,
+ 7CB58D292DA7ACEF179A9050 /* Pods-Mastodon.profile.xcconfig */,
+ 728DE51ADA27C395C6E1BAB5 /* Pods-Mastodon-MastodonUITests.profile.xcconfig */,
+ DF65937EC1FF64462BC002EE /* Pods-MastodonTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "";
@@ -1836,6 +1860,9 @@
isa = PBXGroup;
children = (
DB98EB5727B0FF1F0082E365 /* Share */,
+ DBEFCD77282A144D00C0ABEA /* Report */,
+ DBEFCD72282A12B900C0ABEA /* ReportReason */,
+ DBEFCD7E282A2A3D00C0ABEA /* ReportServerRules */,
DB98EB4F27B0F9300082E365 /* ReportStatus */,
DB98EB5A27B109900082E365 /* ReportSupplementary */,
DB98EB6327B216490082E365 /* ReportResult */,
@@ -2202,8 +2229,8 @@
DB427DD425BAA00100D1B89D /* Mastodon */ = {
isa = PBXGroup;
children = (
- DB427DE325BAA00100D1B89D /* Info.plist */,
DB89BA1025C10FF5008580ED /* Mastodon.entitlements */,
+ DB427DE325BAA00100D1B89D /* Info.plist */,
2D76319C25C151DE00929FB9 /* Diffiable */,
DB8AF52A25C13561002E6C99 /* State */,
2D61335525C1886800CAE157 /* Service */,
@@ -2844,10 +2871,10 @@
DB98EB4F27B0F9300082E365 /* ReportStatus */ = {
isa = PBXGroup;
children = (
- 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */,
- 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */,
- 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */,
- DB98EB4627B0DFAA0082E365 /* ReportViewModel+State.swift */,
+ DBEFCD75282A143F00C0ABEA /* ReportStatusViewController.swift */,
+ DBEFCD78282A147000C0ABEA /* ReportStatusViewModel.swift */,
+ 5B24BBD8262DB14800A9381B /* ReportStatusViewModel+Diffable.swift */,
+ DB98EB4627B0DFAA0082E365 /* ReportStatusViewModel+State.swift */,
);
path = ReportStatus;
sourceTree = "";
@@ -2876,7 +2903,7 @@
children = (
DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */,
DB98EB6427B216500082E365 /* ReportResultViewModel.swift */,
- DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */,
+ DB848E32282B62A800A302CC /* ReportResultView.swift */,
);
path = ReportResult;
sourceTree = "";
@@ -3171,6 +3198,35 @@
path = Favorite;
sourceTree = "";
};
+ DBEFCD72282A12B900C0ABEA /* ReportReason */ = {
+ isa = PBXGroup;
+ children = (
+ DBEFCD70282A12B200C0ABEA /* ReportReasonViewController.swift */,
+ DBEFCD73282A130400C0ABEA /* ReportReasonViewModel.swift */,
+ DBEFCD7A282A162400C0ABEA /* ReportReasonView.swift */,
+ );
+ path = ReportReason;
+ sourceTree = "";
+ };
+ DBEFCD77282A144D00C0ABEA /* Report */ = {
+ isa = PBXGroup;
+ children = (
+ 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */,
+ 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */,
+ );
+ path = Report;
+ sourceTree = "";
+ };
+ DBEFCD7E282A2A3D00C0ABEA /* ReportServerRules */ = {
+ isa = PBXGroup;
+ children = (
+ DBEFCD7C282A2A3B00C0ABEA /* ReportServerRulesViewController.swift */,
+ DBEFCD7F282A2AA900C0ABEA /* ReportServerRulesViewModel.swift */,
+ DBEFCD81282A2AB100C0ABEA /* ReportServerRulesView.swift */,
+ );
+ path = ReportServerRules;
+ sourceTree = "";
+ };
DBF1D24F269DAF6100C1C08A /* SearchDetail */ = {
isa = PBXGroup;
children = (
@@ -3867,6 +3923,7 @@
2D364F7225E66D7500204FDC /* MastodonResendEmailViewController.swift in Sources */,
DB68A06325E905E000CFDF14 /* UIApplication.swift in Sources */,
DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */,
+ DBEFCD80282A2AA900C0ABEA /* ReportServerRulesViewModel.swift in Sources */,
DB0617FF27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift in Sources */,
DBB5255E2611F07A002F1F29 /* ProfileViewModel.swift in Sources */,
DB0FCB982797F6BF006C02E2 /* UserTableViewCell+ViewModel.swift in Sources */,
@@ -3888,12 +3945,14 @@
5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */,
DB63F767279A5EB300455B82 /* NotificationTimelineViewModel.swift in Sources */,
2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */,
+ DB848E33282B62A800A302CC /* ReportResultView.swift in Sources */,
DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */,
DB564BD3269F3B35001E39A7 /* StatusFilterService.swift in Sources */,
DB0FCB9C27980AB6006C02E2 /* HashtagTimelineViewController+DataSourceProvider.swift in Sources */,
DB63F76F279A7D1100455B82 /* NotificationTableViewCell.swift in Sources */,
DB297B1B2679FAE200704C90 /* PlaceholderImageCacheService.swift in Sources */,
DB0FCB8C2796BF8D006C02E2 /* SearchViewModel+Diffable.swift in Sources */,
+ DBEFCD76282A143F00C0ABEA /* ReportStatusViewController.swift in Sources */,
2D8FCA082637EABB00137F46 /* APIService+FollowRequest.swift in Sources */,
DBDFF1952805561700557A48 /* DiscoveryPostsViewModel+Diffable.swift in Sources */,
DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */,
@@ -4024,7 +4083,7 @@
DB63F75C279956D000455B82 /* Persistence+Tag.swift in Sources */,
2D84350525FF858100EECE90 /* UIScrollView.swift in Sources */,
DB49A61F25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift in Sources */,
- 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */,
+ 5B24BBDB262DB14800A9381B /* ReportStatusViewModel+Diffable.swift in Sources */,
DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */,
0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */,
5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */,
@@ -4036,6 +4095,7 @@
DBBF1DC92652538500E5B703 /* AutoCompleteSection.swift in Sources */,
DB3E6FE72806A7A200B035AE /* DiscoveryItem.swift in Sources */,
DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */,
+ DBEFCD79282A147000C0ABEA /* ReportStatusViewModel.swift in Sources */,
DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */,
DB647C5926F1EA2700F7F82C /* WizardPreference.swift in Sources */,
DB0A322E280EE9FD001729D2 /* DiscoveryIntroBannerView.swift in Sources */,
@@ -4061,7 +4121,6 @@
DB3E6FEF2806D82600B035AE /* DiscoveryNewsViewModel.swift in Sources */,
DBBF1DCB2652539E00E5B703 /* AutoCompleteItem.swift in Sources */,
2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */,
- DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */,
DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */,
DB025B95278D6530002F581E /* Persistence+MastodonUser.swift in Sources */,
DB3667A6268AE2620027D07F /* ComposeStatusPollSection.swift in Sources */,
@@ -4087,7 +4146,7 @@
DB336F28278D6EC70031E64B /* MastodonFieldContainer.swift in Sources */,
DBCA0EBC282BB38A0029E2B0 /* PageboyNavigateable.swift in Sources */,
DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */,
- DB98EB4727B0DFAA0082E365 /* ReportViewModel+State.swift in Sources */,
+ DB98EB4727B0DFAA0082E365 /* ReportStatusViewModel+State.swift in Sources */,
2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */,
DB6B74F6272FBCDB00C70B6E /* FollowerListViewModel+State.swift in Sources */,
DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */,
@@ -4145,6 +4204,7 @@
DB6D9F8426358EEC008423CD /* SettingsItem.swift in Sources */,
2D364F7825E66D8300204FDC /* MastodonResendEmailViewModel.swift in Sources */,
DBA465932696B495002B41DB /* APIService+WebFinger.swift in Sources */,
+ DBEFCD7B282A162400C0ABEA /* ReportReasonView.swift in Sources */,
DB8AF54525C13647002E6C99 /* NeedsDependency.swift in Sources */,
DB63F77B279ACAE500455B82 /* DataSourceFacade+Favorite.swift in Sources */,
DB9D6BF825E4F5690051B173 /* NotificationViewController.swift in Sources */,
@@ -4159,6 +4219,7 @@
DB4F097526A037F500D62E92 /* SearchHistoryViewModel.swift in Sources */,
DB3EA8E9281B7A3700598866 /* DiscoveryCommunityViewModel.swift in Sources */,
DB6180F826391D660018D199 /* MediaPreviewingViewController.swift in Sources */,
+ DBEFCD71282A12B200C0ABEA /* ReportReasonViewController.swift in Sources */,
DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */,
DB98EB5627B0FF1B0082E365 /* ReportViewControllerAppearance.swift in Sources */,
DB938F1526241FDF00E5B6C1 /* APIService+Thread.swift in Sources */,
@@ -4195,6 +4256,7 @@
2D7867192625B77500211898 /* NotificationItem.swift in Sources */,
DB45FAB625CA5485005A8AC7 /* UIAlertController.swift in Sources */,
DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */,
+ DBEFCD74282A130400C0ABEA /* ReportReasonViewModel.swift in Sources */,
2D5A3D0325CF8742002347D6 /* ControlContainableScrollViews.swift in Sources */,
DB36679D268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift in Sources */,
DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */,
@@ -4280,6 +4342,7 @@
DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */,
DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */,
DB63F74B279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift in Sources */,
+ DBEFCD7D282A2A3B00C0ABEA /* ReportServerRulesViewController.swift in Sources */,
DBB525362611ECEB002F1F29 /* UserTimelineViewController.swift in Sources */,
DB938F3326243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift in Sources */,
DB98EB4927B0F0CD0082E365 /* ReportStatusTableViewCell.swift in Sources */,
@@ -4290,6 +4353,7 @@
DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */,
DB4F096A269EDAD200D62E92 /* SearchResultViewModel+State.swift in Sources */,
5BB04FF5262F0E6D0043BFF6 /* ReportSection.swift in Sources */,
+ DBEFCD82282A2AB100C0ABEA /* ReportServerRulesView.swift in Sources */,
DBA94436265CBB7400C537E1 /* ProfileFieldItem.swift in Sources */,
DB023D2A27A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift in Sources */,
DB98EB6027B10E150082E365 /* ReportCommentTableViewCell.swift in Sources */,
@@ -4604,7 +4668,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
@@ -4699,7 +4763,7 @@
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = Mastodon/Info.plist;
@@ -4729,7 +4793,7 @@
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = Mastodon/Info.plist;
@@ -4837,11 +4901,11 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 126;
+ DYLIB_CURRENT_VERSION = 127;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = AppShared/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -4868,11 +4932,11 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 126;
+ DYLIB_CURRENT_VERSION = 127;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = AppShared/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -4891,12 +4955,247 @@
};
name = Release;
};
+ DB848E2A282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "PROFILE=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ INTENTS_CODEGEN_LANGUAGE = Swift;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = PROFILE;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ };
+ name = Profile;
+ };
+ DB848E2B282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7CB58D292DA7ACEF179A9050 /* Pods-Mastodon.profile.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 127;
+ DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ INFOPLIST_FILE = Mastodon/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0.7;
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ DB848E2C282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DF65937EC1FF64462BC002EE /* Pods-MastodonTests.profile.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ INFOPLIST_FILE = MastodonTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon";
+ };
+ name = Profile;
+ };
+ DB848E2D282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 728DE51ADA27C395C6E1BAB5 /* Pods-Mastodon-MastodonUITests.profile.xcconfig */;
+ buildSettings = {
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ INFOPLIST_FILE = MastodonUITests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonUITests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = Mastodon;
+ };
+ name = Profile;
+ };
+ DB848E2E282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 63EF9E6E5B575CD2A8B0475D /* Pods-AppShared.profile.xcconfig */;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 127;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 127;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = AppShared/Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.AppShared;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = Profile;
+ };
+ DB848E2F282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 127;
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ INFOPLIST_FILE = NotificationService/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0.7;
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ DB848E30282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 127;
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ INFOPLIST_FILE = ShareActionExtension/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0.7;
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ DB848E31282B5E6300A302CC /* Profile */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 127;
+ DEVELOPMENT_TEAM = 5Z4GVSS33P;
+ INFOPLIST_FILE = MastodonIntent/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@executable_path/../../Frameworks",
+ );
+ MARKETING_VERSION = 1.0.7;
+ PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
DB8FABD026AEC7B2008E5AF4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = MastodonIntent/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4920,7 +5219,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = MastodonIntent/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4944,7 +5243,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = ShareActionExtension/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -4968,7 +5267,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = ShareActionExtension/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -5055,7 +5354,7 @@
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = Mastodon/Info.plist;
@@ -5122,11 +5421,11 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 126;
+ DYLIB_CURRENT_VERSION = 127;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = AppShared/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -5150,7 +5449,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = NotificationService/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -5173,7 +5472,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = ShareActionExtension/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -5197,7 +5496,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = MastodonIntent/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -5221,7 +5520,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = NotificationService/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -5244,7 +5543,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 126;
+ CURRENT_PROJECT_VERSION = 127;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = NotificationService/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@@ -5269,6 +5568,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DB427DFA25BAA00100D1B89D /* Debug */,
+ DB848E2A282B5E6300A302CC /* Profile */,
DB427DFB25BAA00100D1B89D /* Release */,
DBEB19E127E4658E00B0E80E /* Release Snapshot */,
);
@@ -5279,6 +5579,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DB427DFD25BAA00100D1B89D /* Debug */,
+ DB848E2B282B5E6300A302CC /* Profile */,
DB427DFE25BAA00100D1B89D /* Release */,
DBEB19E227E4658E00B0E80E /* Release Snapshot */,
);
@@ -5289,6 +5590,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DB427E0025BAA00100D1B89D /* Debug */,
+ DB848E2C282B5E6300A302CC /* Profile */,
DB427E0125BAA00100D1B89D /* Release */,
DBEB19E327E4658E00B0E80E /* Release Snapshot */,
);
@@ -5299,6 +5601,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DB427E0325BAA00100D1B89D /* Debug */,
+ DB848E2D282B5E6300A302CC /* Profile */,
DB427E0425BAA00100D1B89D /* Release */,
DBEB19E427E4658E00B0E80E /* Release Snapshot */,
);
@@ -5309,6 +5612,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DB6804892637CD4C00430867 /* Debug */,
+ DB848E2E282B5E6300A302CC /* Profile */,
DB68048A2637CD4C00430867 /* Release */,
DBEB19E527E4658E00B0E80E /* Release Snapshot */,
);
@@ -5319,6 +5623,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DB8FABD026AEC7B2008E5AF4 /* Debug */,
+ DB848E31282B5E6300A302CC /* Profile */,
DB8FABD326AEC7B2008E5AF4 /* Release */,
DBEB19E827E4658E00B0E80E /* Release Snapshot */,
);
@@ -5329,6 +5634,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DBC6461D26A170AB00B0E31B /* Debug */,
+ DB848E30282B5E6300A302CC /* Profile */,
DBC6462026A170AB00B0E31B /* Release */,
DBEB19E727E4658E00B0E80E /* Release Snapshot */,
);
@@ -5339,6 +5645,7 @@
isa = XCConfigurationList;
buildConfigurations = (
DBF8AE1C263293E400C9C23C /* Debug */,
+ DB848E2F282B5E6300A302CC /* Profile */,
DBF8AE1D263293E400C9C23C /* Release */,
DBEB19E627E4658E00B0E80E /* Release Snapshot */,
);
diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist
index bc5c3a93..5041bc0b 100644
--- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -9,7 +9,7 @@
isShown
orderHint
- 4
+ 5
CoreDataStack.xcscheme_^#shared#^_
@@ -19,27 +19,27 @@
Mastodon - Profile.xcscheme_^#shared#^_
orderHint
- 19
+ 1
Mastodon - RTL.xcscheme_^#shared#^_
orderHint
- 5
+ 8
Mastodon - Release.xcscheme_^#shared#^_
orderHint
- 1
+ 2
Mastodon - Snapshot.xcscheme_^#shared#^_
orderHint
- 2
+ 3
Mastodon - ar.xcscheme
orderHint
- 3
+ 4
Mastodon - ar.xcscheme_^#shared#^_
@@ -114,7 +114,7 @@
MastodonIntent.xcscheme_^#shared#^_
orderHint
- 21
+ 31
MastodonIntents.xcscheme_^#shared#^_
@@ -129,12 +129,12 @@
NotificationService.xcscheme_^#shared#^_
orderHint
- 20
+ 30
ShareActionExtension.xcscheme_^#shared#^_
orderHint
- 22
+ 32
SuppressBuildableAutocreation
diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift
index 5e7fbf47..d149e63a 100644
--- a/Mastodon/Coordinator/SceneCoordinator.swift
+++ b/Mastodon/Coordinator/SceneCoordinator.swift
@@ -158,7 +158,7 @@ extension SceneCoordinator {
case mastodonServerRules(viewModel: MastodonServerRulesViewModel)
case mastodonConfirmEmail(viewModel: MastodonConfirmEmailViewModel)
case mastodonResendEmail(viewModel: MastodonResendEmailViewModel)
- case mastodonWebView(viewModel:WebViewModel)
+ case mastodonWebView(viewModel: WebViewModel)
// search
case searchDetail(viewModel: SearchDetailViewModel)
@@ -184,6 +184,8 @@ extension SceneCoordinator {
// report
case report(viewModel: ReportViewModel)
+ case reportServerRules(viewModel: ReportServerRulesViewModel)
+ case reportStatus(viewModel: ReportStatusViewModel)
case reportSupplementary(viewModel: ReportSupplementaryViewModel)
case reportResult(viewModel: ReportResultViewModel)
@@ -447,6 +449,14 @@ private extension SceneCoordinator {
let _viewController = ReportViewController()
_viewController.viewModel = viewModel
viewController = _viewController
+ case .reportServerRules(let viewModel):
+ let _viewController = ReportServerRulesViewController()
+ _viewController.viewModel = viewModel
+ viewController = _viewController
+ case .reportStatus(let viewModel):
+ let _viewController = ReportStatusViewController()
+ _viewController.viewModel = viewModel
+ viewController = _viewController
case .reportSupplementary(let viewModel):
let _viewController = ReportSupplementaryViewController()
_viewController.viewModel = viewModel
diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist
index c93fd9a6..0c3dea8f 100644
--- a/Mastodon/Info.plist
+++ b/Mastodon/Info.plist
@@ -30,7 +30,7 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleURLTypes
@@ -43,7 +43,7 @@
CFBundleVersion
- 126
+ 127
ITSAppUsesNonExemptEncryption
LSApplicationQueriesSchemes
diff --git a/Mastodon/Scene/Discovery/View/DiscoveryIntroBannerView.swift b/Mastodon/Scene/Discovery/View/DiscoveryIntroBannerView.swift
index e3e1c454..afc2cb7d 100644
--- a/Mastodon/Scene/Discovery/View/DiscoveryIntroBannerView.swift
+++ b/Mastodon/Scene/Discovery/View/DiscoveryIntroBannerView.swift
@@ -9,6 +9,7 @@ import os.log
import UIKit
import Combine
import MastodonAsset
+import MastodonLocalization
public protocol DiscoveryIntroBannerViewDelegate: AnyObject {
func discoveryIntroBannerView(_ bannerView: DiscoveryIntroBannerView, closeButtonDidPressed button: UIButton)
@@ -26,7 +27,7 @@ public final class DiscoveryIntroBannerView: UIView {
let label = UILabel()
label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 16, weight: .regular))
label.textColor = Asset.Colors.Label.primary.color
- label.text = "These are the posts gaining traction in your corner of Mastodon." // TODO: i18n
+ label.text = L10n.Scene.Discovery.intro
label.numberOfLines = 0
return label
}()
diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift
index b1b2280d..cb7a96f8 100644
--- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift
+++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift
@@ -229,6 +229,11 @@ extension MastodonConfirmEmailViewController {
}
}
+// MARK: - PanPopableViewController
+extension MastodonConfirmEmailViewController: PanPopableViewController {
+ var isPanPopable: Bool { false }
+}
+
// MARK: - OnboardingViewControllerAppearance
extension MastodonConfirmEmailViewController: OnboardingViewControllerAppearance { }
diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift
index 1a47de22..2be7c61d 100644
--- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift
+++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift
@@ -197,9 +197,6 @@ struct MastodonRegisterView: View {
}
}
-
-
-
}
struct WidthKey: PreferenceKey {
diff --git a/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift b/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift
index e5220ef7..67a0ca93 100644
--- a/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift
+++ b/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift
@@ -44,7 +44,7 @@ final class ProfilePagingViewModel: NSObject {
let barItems: [TMBarItemable] = {
let items = [
TMBarItem(title: L10n.Scene.Profile.SegmentedControl.posts),
- TMBarItem(title: L10n.Scene.Profile.SegmentedControl.postsAndReplies), // TODO: i18n
+ TMBarItem(title: L10n.Scene.Profile.SegmentedControl.postsAndReplies),
TMBarItem(title: L10n.Scene.Profile.SegmentedControl.media),
TMBarItem(title: L10n.Scene.Profile.SegmentedControl.about),
]
diff --git a/Mastodon/Scene/Report/Report/ReportViewController.swift b/Mastodon/Scene/Report/Report/ReportViewController.swift
new file mode 100644
index 00000000..1fe1a720
--- /dev/null
+++ b/Mastodon/Scene/Report/Report/ReportViewController.swift
@@ -0,0 +1,206 @@
+//
+// ReportViewController.swift
+// Mastodon
+//
+// Created by ihugo on 2021/4/20.
+//
+
+import os.log
+import UIKit
+import Combine
+import CoreDataStack
+import MastodonAsset
+import MastodonLocalization
+
+class ReportViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance {
+
+ let logger = Logger(subsystem: "ReportViewController", category: "ViewController")
+
+ var disposeBag = Set()
+ private var observations = Set()
+
+ weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
+ weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
+
+ var viewModel: ReportViewModel!
+
+ lazy var cancelBarButtonItem = UIBarButtonItem(
+ barButtonSystemItem: .cancel,
+ target: self,
+ action: #selector(ReportViewController.cancelBarButtonItemDidPressed(_:))
+ )
+
+ deinit {
+ os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
+ }
+
+}
+
+extension ReportViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ setupAppearance()
+ defer { setupNavigationBarBackgroundView() }
+
+ navigationItem.rightBarButtonItem = cancelBarButtonItem
+
+ viewModel.reportReasonViewModel.delegate = self
+ viewModel.reportServerRulesViewModel.delegate = self
+ viewModel.reportStatusViewModel.delegate = self
+ viewModel.reportSupplementaryViewModel.delegate = self
+
+ let reportReasonViewController = ReportReasonViewController()
+ reportReasonViewController.context = context
+ reportReasonViewController.coordinator = coordinator
+ reportReasonViewController.viewModel = viewModel.reportReasonViewModel
+
+ addChild(reportReasonViewController)
+ reportReasonViewController.view.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(reportReasonViewController.view)
+ reportReasonViewController.didMove(toParent: self)
+ NSLayoutConstraint.activate([
+ reportReasonViewController.view.topAnchor.constraint(equalTo: view.topAnchor),
+ reportReasonViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ reportReasonViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ reportReasonViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
+ ])
+ }
+
+}
+
+extension ReportViewController {
+
+ @objc private func cancelBarButtonItemDidPressed(_ sender: UIBarButtonItem) {
+ dismiss(animated: true, completion: nil)
+ }
+
+}
+
+// MARK: - UIAdaptivePresentationControllerDelegate
+extension ReportViewController: UIAdaptivePresentationControllerDelegate {
+ func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
+ return viewModel.isReportSuccess
+ }
+}
+
+// MARK: - ReportReasonViewControllerDelegate
+extension ReportViewController: ReportReasonViewControllerDelegate {
+ func reportReasonViewController(_ viewController: ReportReasonViewController, nextButtonPressed button: UIButton) {
+ guard let reason = viewController.viewModel.selectReason else { return }
+ switch reason {
+ case .dislike:
+ let reportResultViewModel = ReportResultViewModel(
+ context: context,
+ user: viewModel.user,
+ isReported: false
+ )
+ coordinator.present(
+ scene: .reportResult(viewModel: reportResultViewModel),
+ from: self,
+ transition: .show
+ )
+ case .violateRule:
+ coordinator.present(
+ scene: .reportServerRules(viewModel: viewModel.reportServerRulesViewModel),
+ from: self,
+ transition: .show
+ )
+ case .spam, .other:
+ coordinator.present(
+ scene: .reportStatus(viewModel: viewModel.reportStatusViewModel),
+ from: self,
+ transition: .show
+ )
+ }
+ }
+}
+
+// MARK: - ReportServerRulesViewControllerDelegate
+extension ReportViewController: ReportServerRulesViewControllerDelegate {
+ func reportServerRulesViewController(_ viewController: ReportServerRulesViewController, nextButtonPressed button: UIButton) {
+ if viewController.viewModel.isDislike {
+ let reportResultViewModel = ReportResultViewModel(
+ context: context,
+ user: viewModel.user,
+ isReported: false
+ )
+ coordinator.present(
+ scene: .reportResult(viewModel: reportResultViewModel),
+ from: self,
+ transition: .show
+ )
+ } else if viewController.viewModel.selectRule != nil {
+ coordinator.present(
+ scene: .reportStatus(viewModel: viewModel.reportStatusViewModel),
+ from: self,
+ transition: .show
+ )
+ } else {
+ assertionFailure()
+ }
+ }
+}
+
+// MARK: - ReportStatusViewControllerDelegate
+extension ReportViewController: ReportStatusViewControllerDelegate {
+ func reportStatusViewController(_ viewController: ReportStatusViewController, skipButtonDidPressed button: UIButton) {
+ coordinateToReportSupplementary()
+ }
+
+ func reportStatusViewController(_ viewController: ReportStatusViewController, nextButtonDidPressed button: UIButton) {
+ coordinateToReportSupplementary()
+ }
+
+ private func coordinateToReportSupplementary() {
+ coordinator.present(
+ scene: .reportSupplementary(viewModel: viewModel.reportSupplementaryViewModel),
+ from: self,
+ transition: .show
+ )
+ }
+}
+
+// MARK: - ReportSupplementaryViewControllerDelegate
+extension ReportViewController: ReportSupplementaryViewControllerDelegate {
+ func reportSupplementaryViewController(_ viewController: ReportSupplementaryViewController, skipButtonDidPressed button: UIButton) {
+ report()
+ }
+
+ func reportSupplementaryViewController(_ viewController: ReportSupplementaryViewController, nextButtonDidPressed button: UIButton) {
+ report()
+ }
+
+ private func report() {
+ Task { @MainActor in
+ do {
+ let _ = try await viewModel.report()
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): report success")
+
+ let reportResultViewModel = ReportResultViewModel(
+ context: context,
+ user: viewModel.user,
+ isReported: true
+ )
+
+ coordinator.present(
+ scene: .reportResult(viewModel: reportResultViewModel),
+ from: self,
+ transition: .show
+ )
+
+ } catch {
+ let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert)
+ let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil)
+ alertController.addAction(okAction)
+ self.coordinator.present(
+ scene: .alertController(alertController: alertController),
+ from: nil,
+ transition: .alertController(animated: true, completion: nil)
+ )
+ }
+ } // end Task
+ }
+
+}
diff --git a/Mastodon/Scene/Report/Report/ReportViewModel.swift b/Mastodon/Scene/Report/Report/ReportViewModel.swift
new file mode 100644
index 00000000..f94a92d3
--- /dev/null
+++ b/Mastodon/Scene/Report/Report/ReportViewModel.swift
@@ -0,0 +1,190 @@
+//
+// ReportViewModel.swift
+// Mastodon
+//
+// Created by ihugo on 2021/4/19.
+//
+
+import Combine
+import CoreData
+import CoreDataStack
+import Foundation
+import GameplayKit
+import MastodonSDK
+import OrderedCollections
+import os.log
+import UIKit
+import MastodonLocalization
+
+class ReportViewModel {
+
+ var disposeBag = Set()
+
+ let reportReasonViewModel: ReportReasonViewModel
+ let reportServerRulesViewModel: ReportServerRulesViewModel
+ let reportStatusViewModel: ReportStatusViewModel
+ let reportSupplementaryViewModel: ReportSupplementaryViewModel
+
+ // input
+ let context: AppContext
+ let user: ManagedObjectRecord
+ let status: ManagedObjectRecord?
+
+ // output
+ @Published var isReporting = false
+ @Published var isReportSuccess = false
+
+ init(
+ context: AppContext,
+ user: ManagedObjectRecord,
+ status: ManagedObjectRecord?
+ ) {
+ self.context = context
+ self.user = user
+ self.status = status
+ self.reportReasonViewModel = ReportReasonViewModel(context: context)
+ self.reportServerRulesViewModel = ReportServerRulesViewModel(context: context)
+ self.reportStatusViewModel = ReportStatusViewModel(context: context, user: user, status: status)
+ self.reportSupplementaryViewModel = ReportSupplementaryViewModel(context: context, user: user)
+ // end init
+
+ guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else {
+ return
+ }
+
+ // setup reason viewModel
+ if status != nil {
+ reportReasonViewModel.headline = L10n.Scene.Report.StepOne.whatsWrongWithThisPost
+ } else {
+ Task { @MainActor in
+ let managedObjectContext = context.managedObjectContext
+ let _username: String? = try? await managedObjectContext.perform {
+ let user = user.object(in: managedObjectContext)
+ return user?.acctWithDomain
+ }
+ if let username = _username {
+ reportReasonViewModel.headline = L10n.Scene.Report.StepOne.whatsWrongWithThisUsername(username)
+ } else {
+ reportReasonViewModel.headline = L10n.Scene.Report.StepOne.whatsWrongWithThisAccount
+ }
+ } // end Task
+ }
+
+ // bind server rules
+ Task { @MainActor in
+ do {
+ let response = try await context.apiService.instance(domain: authenticationBox.domain)
+ .timeout(3, scheduler: DispatchQueue.main)
+ .singleOutput()
+ let rules = response.value.rules ?? []
+ reportReasonViewModel.serverRules = rules
+ reportServerRulesViewModel.serverRules = rules
+ } catch {
+ reportReasonViewModel.serverRules = []
+ reportServerRulesViewModel.serverRules = []
+ }
+ } // end Task
+
+ $isReporting
+ .assign(to: &reportSupplementaryViewModel.$isBusy)
+ }
+
+}
+
+extension ReportViewModel {
+ @MainActor
+ func report() async throws {
+ guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value,
+ !isReporting
+ else {
+ assertionFailure()
+ return
+ }
+
+ let managedObjectContext = context.managedObjectContext
+ let _query: Mastodon.API.Reports.FileReportQuery? = try await managedObjectContext.perform {
+ guard let user = self.user.object(in: managedObjectContext) else { return nil }
+
+ // the status picker is essential step in report flow
+ // only check isSkip or not
+ let statusIDs: [Status.ID]? = {
+ if self.reportStatusViewModel.isSkip {
+ let _id: Status.ID? = self.reportStatusViewModel.status.flatMap { record -> Status.ID? in
+ guard let status = record.object(in: managedObjectContext) else { return nil }
+ return status.id
+ }
+ return _id.flatMap { [$0] }
+ } else {
+ return self.reportStatusViewModel.selectStatuses.compactMap { record -> Status.ID? in
+ guard let status = record.object(in: managedObjectContext) else { return nil }
+ return status.id
+ }
+ }
+ }()
+
+ // the user comment is essential step in report flow
+ // only check isSkip or not
+ let comment: String? = {
+ var suffixes: [String] = []
+ let content: String?
+
+ // the server rules is NOT essential step in report flow
+ // append suffix depends which reason
+ if let reason = self.reportReasonViewModel.selectReason {
+ switch reason {
+ case .spam:
+ suffixes.append(reason.rawValue)
+ case .violateRule:
+ suffixes.append(reason.rawValue)
+ if let rule = self.reportServerRulesViewModel.selectRule {
+ suffixes.append(rule.text)
+ } else {
+ assertionFailure("should select valid rule")
+ }
+ case .dislike:
+ assertionFailure("should not enter the report flow")
+ case .other:
+ break
+ }
+ }
+
+ content = self.reportSupplementaryViewModel.isSkip ? nil : self.reportSupplementaryViewModel.commentContext.comment
+
+ let suffix: String? = {
+ let text = suffixes.joined(separator: ". ")
+ guard !text.isEmpty else { return nil }
+ return "<" + text + ">"
+ }()
+
+ let comment = [content, suffix]
+ .compactMap { $0 }
+ .joined(separator: " ")
+ return comment.isEmpty ? nil : comment
+ }()
+ return Mastodon.API.Reports.FileReportQuery(
+ accountID: user.id,
+ statusIDs: statusIDs,
+ comment: comment,
+ forward: true
+ )
+ }
+
+ guard let query = _query else { return }
+
+ do {
+ isReporting = true
+ #if DEBUG
+ try await Task.sleep(nanoseconds: .second * 3)
+ #else
+ let _ = try await context.apiService.report(
+ query: query,
+ authenticationBox: authenticationBox
+ )
+ #endif
+ isReportSuccess = true
+ } catch {
+ isReporting = false
+ throw error
+ }
+ }
+}
diff --git a/Mastodon/Scene/Report/ReportReason/ReportReasonView.swift b/Mastodon/Scene/Report/ReportReason/ReportReasonView.swift
new file mode 100644
index 00000000..67e94872
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportReason/ReportReasonView.swift
@@ -0,0 +1,112 @@
+//
+// ReportReasonView.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-10.
+//
+
+import UIKit
+import SwiftUI
+import MastodonLocalization
+import MastodonSDK
+import MastodonAsset
+
+struct ReportReasonView: View {
+
+ @ObservedObject var viewModel: ReportReasonViewModel
+
+ var body: some View {
+ ScrollView(.vertical) {
+ HStack {
+ VStack(alignment: .leading, spacing: 8) {
+ Text(L10n.Scene.Report.StepOne.step1Of4)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) as CTFont))
+ Text(viewModel.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) as CTFont))
+ Text(L10n.Scene.Report.StepOne.selectTheBestMatch)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) as CTFont))
+ }
+ Spacer()
+ }
+ .padding()
+
+ VStack(spacing: 16) {
+ if let serverRules = viewModel.serverRules {
+ ForEach(ReportReasonViewModel.Reason.allCases, id: \.self) { reason in
+ switch reason {
+ case .violateRule where serverRules.isEmpty:
+ EmptyView()
+ default:
+ ReportReasonRowView(reason: reason, isSelect: reason == viewModel.selectReason)
+ .background(
+ Color(viewModel.backgroundColor)
+ )
+ .onTapGesture {
+ viewModel.selectReason = reason
+ }
+ }
+ }
+ } else {
+ ProgressView()
+ }
+ }
+ .padding()
+ .transition(.opacity)
+ .animation(.easeInOut)
+
+ Spacer()
+ .frame(minHeight: viewModel.bottomPaddingHeight)
+ }
+ .background(
+ Color(viewModel.backgroundColor)
+ )
+ }
+
+}
+
+struct ReportReasonRowView: View {
+
+ var reason: ReportReasonViewModel.Reason
+ var isSelect: Bool
+
+ var body: some View {
+ HStack(spacing: 14) {
+ Image(systemName: isSelect ? "checkmark.circle.fill" : "circle")
+ .resizable()
+ .frame(width: 28, height: 28, alignment: .center)
+ VStack(alignment: .leading, spacing: 4) {
+ Text(reason.title)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ .font(.headline)
+ Text(reason.subtitle)
+ .font(.subheadline)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ }
+ Spacer()
+ }
+ }
+
+}
+
+#if DEBUG
+struct ReportReasonView_Previews: PreviewProvider {
+ static var previews: some View {
+ Group {
+ NavigationView {
+ ReportReasonView(viewModel: ReportReasonViewModel(context: .shared))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ NavigationView {
+ ReportReasonView(viewModel: ReportReasonViewModel(context: .shared))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ .preferredColorScheme(.dark)
+ }
+ }
+}
+#endif
diff --git a/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift b/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift
new file mode 100644
index 00000000..ac5d9e79
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift
@@ -0,0 +1,104 @@
+//
+// ReportReasonViewController.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-10.
+//
+
+import os.log
+import UIKit
+import SwiftUI
+import Combine
+import MastodonUI
+import MastodonAsset
+import MastodonLocalization
+
+protocol ReportReasonViewControllerDelegate: AnyObject {
+ func reportReasonViewController(_ viewController: ReportReasonViewController, nextButtonPressed button: UIButton)
+}
+
+final class ReportReasonViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance {
+
+ let logger = Logger(subsystem: "ReportReasonViewController", category: "ViewController")
+
+ weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
+ weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
+
+ var disposeBag = Set()
+ private var observations = Set()
+
+ var viewModel: ReportReasonViewModel!
+ private(set) lazy var reportReasonView = ReportReasonView(viewModel: viewModel)
+
+ let navigationActionView: NavigationActionView = {
+ let navigationActionView = NavigationActionView()
+ navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color
+ navigationActionView.hidesBackButton = true
+ return navigationActionView
+ }()
+
+ deinit {
+ os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
+ }
+
+}
+
+extension ReportReasonViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ setupAppearance()
+ defer { setupNavigationBarBackgroundView() }
+
+ let hostingViewController = UIHostingController(rootView: reportReasonView)
+ hostingViewController.view.preservesSuperviewLayoutMargins = true
+ addChild(hostingViewController)
+ hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(hostingViewController.view)
+ NSLayoutConstraint.activate([
+ hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor),
+ hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
+ ])
+
+ navigationActionView.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(navigationActionView)
+ defer {
+ view.bringSubviewToFront(navigationActionView)
+ }
+ NSLayoutConstraint.activate([
+ navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor),
+ ])
+
+ navigationActionView
+ .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in
+ guard let self = self else { return }
+ let inset = navigationActionView.frame.height
+ self.viewModel.bottomPaddingHeight = inset
+ }
+ .store(in: &observations)
+
+ viewModel.$selectReason
+ .map { $0 != nil }
+ .assign(to: \.isEnabled, on: navigationActionView.nextButton)
+ .store(in: &disposeBag)
+
+ navigationActionView.nextButton.addTarget(self, action: #selector(ReportReasonViewController.nextButtonPressed(_:)), for: .touchUpInside)
+ }
+
+}
+
+extension ReportReasonViewController {
+
+ @objc private func nextButtonPressed(_ sender: UIButton) {
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
+
+ assert(viewModel.delegate != nil)
+ viewModel.delegate?.reportReasonViewController(self, nextButtonPressed: sender)
+ }
+
+}
diff --git a/Mastodon/Scene/Report/ReportReason/ReportReasonViewModel.swift b/Mastodon/Scene/Report/ReportReason/ReportReasonViewModel.swift
new file mode 100644
index 00000000..91715cba
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportReason/ReportReasonViewModel.swift
@@ -0,0 +1,84 @@
+//
+// ReportReasonViewModel.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-10.
+//
+
+import UIKit
+import SwiftUI
+import MastodonAsset
+import MastodonSDK
+import MastodonLocalization
+
+final class ReportReasonViewModel: ObservableObject {
+
+ weak var delegate: ReportReasonViewControllerDelegate?
+
+ // input
+ let context: AppContext
+
+ @Published var headline = L10n.Scene.Report.StepOne.whatsWrongWithThisAccount
+ @Published var serverRules: [Mastodon.Entity.Instance.Rule]?
+
+ @Published var bottomPaddingHeight: CGFloat = .zero
+ @Published var backgroundColor: UIColor = Asset.Scene.Report.background.color
+
+ // output
+ @Published var selectReason: Reason?
+
+ init(context: AppContext) {
+ self.context = context
+ // end init
+ }
+
+}
+
+extension ReportReasonViewModel {
+ enum Reason: Hashable, CaseIterable {
+ case dislike
+ case spam
+ case violateRule
+ case other
+
+ var title: String {
+ switch self {
+ case .dislike:
+ return L10n.Scene.Report.StepOne.iDontLikeIt
+ case .spam:
+ return L10n.Scene.Report.StepOne.itsSpam
+ case .violateRule:
+ return L10n.Scene.Report.StepOne.itViolatesServerRules
+ case .other:
+ return L10n.Scene.Report.StepOne.itsSomethingElse
+ }
+ }
+
+ var subtitle: String {
+ switch self {
+ case .dislike:
+ return L10n.Scene.Report.StepOne.itIsNotSomethingYouWantToSee
+ case .spam:
+ return L10n.Scene.Report.StepOne.maliciousLinksFakeEngagementOrRepetetiveReplies
+ case .violateRule:
+ return L10n.Scene.Report.StepOne.youAreAwareThatItBreaksSpecificRules
+ case .other:
+ return L10n.Scene.Report.StepOne.theIssueDoesNotFitIntoOtherCategories
+ }
+ }
+
+ // do not i18n this
+ var rawValue: String {
+ switch self {
+ case .dislike:
+ return "I don’t like it"
+ case .spam:
+ return "It’s spam"
+ case .violateRule:
+ return "It violates server rules"
+ case .other:
+ return "It’s something else"
+ }
+ }
+ }
+}
diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultView.swift b/Mastodon/Scene/Report/ReportResult/ReportResultView.swift
new file mode 100644
index 00000000..7931538f
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportResult/ReportResultView.swift
@@ -0,0 +1,217 @@
+//
+// ReportResultView.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-11.
+//
+
+import UIKit
+import SwiftUI
+import MastodonSDK
+import MastodonUI
+import MastodonAsset
+import MastodonLocalization
+import CoreDataStack
+
+struct ReportResultView: View {
+
+ @ObservedObject var viewModel: ReportResultViewModel
+
+ var avatarView: some View {
+ HStack {
+ Spacer()
+ ZStack {
+ AnimatedImage(imageURL: viewModel.avatarURL)
+ .frame(width: 106, height: 106, alignment: .center)
+ .background(Color(UIColor.systemFill))
+ .cornerRadius(27)
+ Text(L10n.Scene.Report.reported)
+ .font(Font(FontFamily.Staatliches.regular.font(size: 49) as CTFont))
+ .foregroundColor(Color(Asset.Scene.Report.reportBanner.color))
+ .padding(EdgeInsets(top: 0, leading: 10, bottom: -2, trailing: 10))
+ .background(Color(viewModel.backgroundColor))
+ .cornerRadius(7)
+ .padding(7)
+ .background(Color(Asset.Scene.Report.reportBanner.color))
+ .cornerRadius(12)
+ .rotationEffect(.degrees(-8))
+ .offset(x: 0, y: -5)
+ }
+ Spacer()
+ }
+ .padding()
+ }
+
+ var body: some View {
+ ScrollView(.vertical) {
+ HStack {
+ VStack(alignment: .leading, spacing: 8) {
+ Text(viewModel.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) as CTFont))
+ if viewModel.isReported {
+ avatarView
+ Text(verbatim: "While we review this, you can take action against @\(viewModel.username)")
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) as CTFont))
+ } else {
+ Text(verbatim: L10n.Scene.Report.StepFinal.whenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) as CTFont))
+ }
+ }
+ Spacer()
+ }
+ .padding()
+
+ VStack(spacing: 32) {
+ // Follow
+ VStack(alignment: .leading, spacing: 4) {
+ Text(L10n.Scene.Report.StepFinal.unfollowUser("@\(viewModel.username)"))
+ .font(.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ ReportActionButton(
+ action: {
+ viewModel.followActionPublisher.send()
+ },
+ title: viewModel.relationshipViewModel.isFollowing ? "Unfollow" : "Unfollowed",
+ isBusy: viewModel.isRequestFollow
+ )
+ }
+
+ // Mute
+ VStack(alignment: .leading, spacing: 4) {
+ Text(L10n.Scene.Report.StepFinal.muteUser("@\(viewModel.username)"))
+ .font(.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ Text(verbatim: L10n.Scene.Report.StepFinal.youWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 13, weight: .regular)) as CTFont))
+ ReportActionButton(
+ action: {
+ viewModel.muteActionPublisher.send()
+ },
+ title: viewModel.relationshipViewModel.isMuting ? L10n.Common.Controls.Friendship.muted : L10n.Common.Controls.Friendship.mute,
+ isBusy: viewModel.isRequestMute
+ )
+ }
+
+ // Block
+ VStack(alignment: .leading, spacing: 4) {
+ Text(L10n.Scene.Report.StepFinal.blockUser("@\(viewModel.username)"))
+ .font(.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ Text(verbatim: L10n.Scene.Report.StepFinal.theyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 13, weight: .regular)) as CTFont))
+ ReportActionButton(
+ action: {
+ viewModel.blockActionPublisher.send()
+ },
+ title: viewModel.relationshipViewModel.isBlocking ? L10n.Common.Controls.Friendship.blocked : L10n.Common.Controls.Friendship.block,
+ isBusy: viewModel.isRequestBlock
+ )
+ }
+ }
+ .padding()
+
+ Spacer()
+ .frame(minHeight: viewModel.bottomPaddingHeight)
+ }
+ .background(
+ Color(viewModel.backgroundColor)
+ )
+ }
+
+}
+
+struct ReportActionButton: View {
+
+ var action: () -> Void
+ var title: String
+ var isBusy: Bool
+
+ var body: some View {
+ Button {
+ action()
+ } label: {
+ ZStack {
+ ProgressView()
+ .opacity(isBusy ? 1 : 0)
+ Text(title)
+ .font(.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ .opacity(isBusy ? 0 : 1)
+ }
+ .frame(maxWidth: .infinity)
+ .padding()
+ .background(Color(UIColor.systemBackground))
+ .cornerRadius(10)
+ .shadow(color: .black.opacity(0.1), radius: 2, x: 0, y: 1)
+ }
+ }
+
+}
+
+#if DEBUG
+struct ReportResultView_Previews: PreviewProvider {
+
+ static func viewModel(isReported: Bool) -> ReportResultViewModel {
+ let context = AppContext.shared
+ let request = MastodonUser.sortedFetchRequest
+ request.fetchLimit = 1
+
+ let property = MastodonUser.Property(
+ identifier: "1",
+ domain: "domain.com",
+ id: "1",
+ acct: "@user@domain.com",
+ username: "user",
+ displayName: "User",
+ avatar: "",
+ avatarStatic: "",
+ header: "",
+ headerStatic: "",
+ note: "",
+ url: "",
+ statusesCount: Int64(100),
+ followingCount: Int64(100),
+ followersCount: Int64(100),
+ locked: false,
+ bot: false,
+ suspended: false,
+ createdAt: Date(),
+ updatedAt: Date(),
+ emojis: [],
+ fields: []
+ )
+ let user = try! context.managedObjectContext.fetch(request).first ?? MastodonUser.insert(into: context.managedObjectContext, property: property)
+
+ return ReportResultViewModel(
+ context: context,
+ user: .init(objectID: user.objectID),
+ isReported: isReported
+ )
+ }
+ static var previews: some View {
+ Group {
+ NavigationView {
+ ReportResultView(viewModel: viewModel(isReported: true))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ NavigationView {
+ ReportResultView(viewModel: viewModel(isReported: false))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ NavigationView {
+ ReportResultView(viewModel: viewModel(isReported: true))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ .preferredColorScheme(.dark)
+ }
+ }
+}
+#endif
diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift
index 26f56b98..957760f3 100644
--- a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift
+++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift
@@ -7,6 +7,7 @@
import os.log
import UIKit
+import SwiftUI
import Combine
import MastodonAsset
import MastodonLocalization
@@ -20,22 +21,13 @@ final class ReportResultViewController: UIViewController, NeedsDependency, Repor
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
var viewModel: ReportResultViewModel!
-
- let tableView: UITableView = {
- let tableView = ControlContainableTableView()
- tableView.backgroundColor = Asset.Scene.Report.background.color
- tableView.rowHeight = UITableView.automaticDimension
- tableView.separatorStyle = .none
- tableView.backgroundColor = .clear
- tableView.keyboardDismissMode = .onDrag
- tableView.allowsMultipleSelection = true
- if #available(iOS 15.0, *) {
- tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude
- } else {
- // Fallback on earlier versions
- }
- return tableView
- }()
+ private(set) lazy var reportResultView = ReportResultView(viewModel: viewModel)
+
+ lazy var doneBarButtonItem = UIBarButtonItem(
+ barButtonSystemItem: .done,
+ target: self,
+ action: #selector(ReportResultViewController.doneBarButtonItemDidPressed(_:))
+ )
let navigationActionView: NavigationActionView = {
let navigationActionView = NavigationActionView()
@@ -60,21 +52,20 @@ extension ReportResultViewController {
defer { setupNavigationBarBackgroundView() }
navigationItem.hidesBackButton = true
+ navigationItem.rightBarButtonItem = doneBarButtonItem
- tableView.translatesAutoresizingMaskIntoConstraints = false
- view.addSubview(tableView)
+ let hostingViewController = UIHostingController(rootView: reportResultView)
+ hostingViewController.view.preservesSuperviewLayoutMargins = true
+ addChild(hostingViewController)
+ hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(hostingViewController.view)
NSLayoutConstraint.activate([
- tableView.topAnchor.constraint(equalTo: view.topAnchor),
- tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
- tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
- tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
+ hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor),
+ hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])
- tableView.delegate = self
- viewModel.setupDiffableDataSource(
- tableView: tableView
- )
-
navigationActionView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(navigationActionView)
defer {
@@ -90,18 +81,93 @@ extension ReportResultViewController {
.observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in
guard let self = self else { return }
let inset = navigationActionView.frame.height
- self.tableView.contentInset.bottom = inset
- self.tableView.verticalScrollIndicatorInsets.bottom = inset
+ self.viewModel.bottomPaddingHeight = inset
}
.store(in: &observations)
navigationActionView.nextButton.addTarget(self, action: #selector(ReportSupplementaryViewController.nextButtonDidPressed(_:)), for: .touchUpInside)
+
+ viewModel.followActionPublisher
+ .throttle(for: 0.3, scheduler: DispatchQueue.main, latest: false)
+ .sink { [weak self] in
+ guard let self = self else { return }
+ guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else {
+ return
+ }
+ Task { @MainActor in
+ guard !self.viewModel.isRequestFollow else { return }
+ self.viewModel.isRequestFollow = true
+ do {
+ try await DataSourceFacade.responseToUserFollowAction(
+ dependency: self,
+ user: self.viewModel.user,
+ authenticationBox: authenticationBox
+ )
+ } catch {
+ // handle error
+ }
+ self.viewModel.isRequestFollow = false
+ } // end Task
+ }
+ .store(in: &disposeBag)
+
+ viewModel.muteActionPublisher
+ .throttle(for: 0.3, scheduler: DispatchQueue.main, latest: false)
+ .sink { [weak self] in
+ guard let self = self else { return }
+ guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else {
+ return
+ }
+ Task { @MainActor in
+ guard !self.viewModel.isRequestMute else { return }
+ self.viewModel.isRequestMute = true
+ do {
+ try await DataSourceFacade.responseToUserMuteAction(
+ dependency: self,
+ user: self.viewModel.user,
+ authenticationBox: authenticationBox
+ )
+ } catch {
+ // handle error
+ }
+ self.viewModel.isRequestMute = false
+ } // end Task
+ }
+ .store(in: &disposeBag)
+
+ viewModel.blockActionPublisher
+ .throttle(for: 0.3, scheduler: DispatchQueue.main, latest: false)
+ .sink { [weak self] in
+ guard let self = self else { return }
+ guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else {
+ return
+ }
+ Task { @MainActor in
+ guard !self.viewModel.isRequestBlock else { return }
+ self.viewModel.isRequestBlock = true
+ do {
+ try await DataSourceFacade.responseToUserBlockAction(
+ dependency: self,
+ user: self.viewModel.user,
+ authenticationBox: authenticationBox
+ )
+ } catch {
+ // handle error
+ }
+ self.viewModel.isRequestBlock = false
+ } // end Task
+ }
+ .store(in: &disposeBag)
}
}
extension ReportResultViewController {
+
+ @objc func doneBarButtonItemDidPressed(_ sender: UIButton) {
+ dismiss(animated: true, completion: nil)
+ }
@objc func nextButtonDidPressed(_ sender: UIButton) {
dismiss(animated: true, completion: nil)
@@ -109,5 +175,7 @@ extension ReportResultViewController {
}
-// MARK: - UITableViewDelegate
-extension ReportResultViewController: UITableViewDelegate { }
+// MARK: - PanPopableViewController
+extension ReportResultViewController: PanPopableViewController {
+ var isPanPopable: Bool { false }
+}
diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift
deleted file mode 100644
index a9c1272d..00000000
--- a/Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ReportResultViewModel+Diffable.swift
-// Mastodon
-//
-// Created by MainasuK on 2022-2-8.
-//
-
-import UIKit
-import Combine
-import CoreData
-import CoreDataStack
-import MastodonAsset
-import MastodonLocalization
-
-extension ReportResultViewModel {
-
- static let reportItemHeaderContext = ReportItem.HeaderContext(
- primaryLabelText: "Thanks for reporting, we’ll look into this.",
- secondaryLabelText: ""
- )
-
- func setupDiffableDataSource(
- tableView: UITableView
- ) {
- diffableDataSource = ReportSection.diffableDataSource(
- tableView: tableView,
- context: context,
- configuration: ReportSection.Configuration()
- )
-
- var snapshot = NSDiffableDataSourceSnapshot()
- snapshot.appendSections([.main])
- snapshot.appendItems([.header(context: ReportResultViewModel.reportItemHeaderContext)], toSection: .main)
- snapshot.appendItems([.result(record: user)], toSection: .main)
- diffableDataSource?.apply(snapshot)
- }
-}
diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift
index 79fec493..67d7475d 100644
--- a/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift
+++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift
@@ -12,25 +12,60 @@ import Foundation
import MastodonSDK
import os.log
import UIKit
+import MastodonAsset
+import MastodonUI
+import MastodonLocalization
-class ReportResultViewModel {
+class ReportResultViewModel: ObservableObject {
var disposeBag = Set()
// input
let context: AppContext
let user: ManagedObjectRecord
+ let isReported: Bool
+
+ var headline: String {
+ isReported ? L10n.Scene.Report.reportSentTitle : L10n.Scene.Report.StepFinal.dontWantToSeeThis
+ }
+ @Published var bottomPaddingHeight: CGFloat = .zero
+ @Published var backgroundColor: UIColor = Asset.Scene.Report.background.color
+
+ @Published var isRequestFollow = false
+ @Published var isRequestMute = false
+ @Published var isRequestBlock = false
// output
- var diffableDataSource: UITableViewDiffableDataSource?
+ @Published var avatarURL: URL?
+ @Published var username: String = ""
+
+ let relationshipViewModel = RelationshipViewModel()
+ let muteActionPublisher = PassthroughSubject()
+ let followActionPublisher = PassthroughSubject()
+ let blockActionPublisher = PassthroughSubject()
init(
context: AppContext,
- user: ManagedObjectRecord
+ user: ManagedObjectRecord,
+ isReported: Bool
) {
self.context = context
self.user = user
+ self.isReported = isReported
// end init
+
+ Task { @MainActor in
+ guard let user = user.object(in: context.managedObjectContext) else { return }
+ guard let me = context.authenticationService.activeMastodonAuthenticationBox.value?.authenticationRecord.object(in: context.managedObjectContext)?.user else { return }
+ self.relationshipViewModel.user = user
+ self.relationshipViewModel.me = me
+
+ self.avatarURL = user.avatarImageURL()
+ self.username = user.acctWithDomain
+
+ } // end Task
}
}
+
+
diff --git a/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesView.swift b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesView.swift
new file mode 100644
index 00000000..57406402
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesView.swift
@@ -0,0 +1,115 @@
+//
+// ReportServerRulesView.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-10.
+//
+
+import UIKit
+import SwiftUI
+import MastodonLocalization
+import MastodonSDK
+import MastodonAsset
+
+struct ReportServerRulesView: View {
+
+ @ObservedObject var viewModel: ReportServerRulesViewModel
+
+ var body: some View {
+ ScrollView(.vertical) {
+ HStack {
+ VStack(alignment: .leading, spacing: 8) {
+ Text(L10n.Scene.Report.StepTwo.step2Of4)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) as CTFont))
+ Text(viewModel.headline)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) as CTFont))
+ Text(L10n.Scene.Report.StepTwo.selectAllThatApply)
+ .foregroundColor(Color(Asset.Colors.Label.secondary.color))
+ .font(Font(UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) as CTFont))
+ }
+ Spacer()
+ }
+ .padding()
+
+ VStack(spacing: 32) {
+ ForEach(viewModel.serverRules, id: \.self) { rule in
+ ReportServerRulesRowView(
+ title: rule.text,
+ isSelect: rule == viewModel.selectRule
+ )
+ .background(
+ Color(viewModel.backgroundColor)
+ )
+ .onTapGesture {
+ viewModel.selectRule = rule
+ viewModel.isDislike = false
+ }
+ }
+ ReportServerRulesRowView(
+ title: L10n.Scene.Report.StepTwo.iJustDonTLikeIt,
+ isSelect: viewModel.isDislike
+ )
+ .background(
+ Color(viewModel.backgroundColor)
+ )
+ .onTapGesture {
+ viewModel.selectRule = nil
+ viewModel.isDislike = true
+ }
+ }
+ .padding()
+ .transition(.opacity)
+ .animation(.easeInOut)
+
+ Spacer()
+ .frame(minHeight: viewModel.bottomPaddingHeight)
+ }
+ .background(
+ Color(viewModel.backgroundColor)
+ )
+ }
+
+}
+
+struct ReportServerRulesRowView: View {
+
+ var title: String
+ var isSelect: Bool
+
+ var body: some View {
+ HStack(spacing: 14) {
+ Image(systemName: isSelect ? "checkmark.circle.fill" : "circle")
+ .resizable()
+ .frame(width: 28, height: 28, alignment: .center)
+ VStack(alignment: .leading, spacing: 4) {
+ Text(title)
+ .foregroundColor(Color(Asset.Colors.Label.primary.color))
+ .font(.headline)
+ }
+ Spacer()
+ }
+ }
+
+}
+
+#if DEBUG
+struct ReportServerRulesView_Previews: PreviewProvider {
+ static var previews: some View {
+ Group {
+ NavigationView {
+ ReportServerRulesView(viewModel: ReportServerRulesViewModel(context: .shared))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ NavigationView {
+ ReportServerRulesView(viewModel: ReportServerRulesViewModel(context: .shared))
+ .navigationBarTitle(Text(""))
+ .navigationBarTitleDisplayMode(.inline)
+ }
+ .preferredColorScheme(.dark)
+ }
+ }
+}
+#endif
diff --git a/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift
new file mode 100644
index 00000000..330debbb
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift
@@ -0,0 +1,117 @@
+//
+// ReportServerRulesViewController.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-10.
+//
+
+import os.log
+import UIKit
+import SwiftUI
+import Combine
+import MastodonUI
+import MastodonAsset
+import MastodonLocalization
+
+protocol ReportServerRulesViewControllerDelegate: AnyObject {
+ func reportServerRulesViewController(_ viewController: ReportServerRulesViewController, nextButtonPressed button: UIButton)
+}
+
+final class ReportServerRulesViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance {
+
+ let logger = Logger(subsystem: "ReportReasonViewController", category: "ViewController")
+
+ weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
+ weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
+
+ var disposeBag = Set()
+ private var observations = Set()
+
+ var viewModel: ReportServerRulesViewModel!
+ private(set) lazy var reportServerRulesView = ReportServerRulesView(viewModel: viewModel)
+
+ lazy var cancelBarButtonItem = UIBarButtonItem(
+ barButtonSystemItem: .cancel,
+ target: self,
+ action: #selector(ReportServerRulesViewController.cancelBarButtonItemDidPressed(_:))
+ )
+
+ let navigationActionView: NavigationActionView = {
+ let navigationActionView = NavigationActionView()
+ navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color
+ navigationActionView.hidesBackButton = true
+ return navigationActionView
+ }()
+
+ deinit {
+ os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
+ }
+
+}
+
+extension ReportServerRulesViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+
+ setupAppearance()
+ defer { setupNavigationBarBackgroundView() }
+
+ let hostingViewController = UIHostingController(rootView: reportServerRulesView)
+ hostingViewController.view.preservesSuperviewLayoutMargins = true
+ addChild(hostingViewController)
+ hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(hostingViewController.view)
+ NSLayoutConstraint.activate([
+ hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor),
+ hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
+ ])
+
+ navigationActionView.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(navigationActionView)
+ defer {
+ view.bringSubviewToFront(navigationActionView)
+ }
+ NSLayoutConstraint.activate([
+ navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor),
+ ])
+
+ navigationActionView
+ .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in
+ guard let self = self else { return }
+ let inset = navigationActionView.frame.height
+ self.viewModel.bottomPaddingHeight = inset
+ }
+ .store(in: &observations)
+
+ Publishers.CombineLatest(
+ viewModel.$selectRule,
+ viewModel.$isDislike
+ )
+ .map { $0 != nil || $1 }
+ .assign(to: \.isEnabled, on: navigationActionView.nextButton)
+ .store(in: &disposeBag)
+
+ navigationActionView.nextButton.addTarget(self, action: #selector(ReportServerRulesViewController.nextButtonPressed(_:)), for: .touchUpInside)
+ }
+
+}
+
+extension ReportServerRulesViewController {
+
+ @objc private func cancelBarButtonItemDidPressed(_ sender: UIBarButtonItem) {
+ dismiss(animated: true, completion: nil)
+ }
+
+ @objc private func nextButtonPressed(_ sender: UIButton) {
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
+
+ assert(viewModel.delegate != nil)
+ viewModel.delegate?.reportServerRulesViewController(self, nextButtonPressed: sender)
+ }
+
+}
diff --git a/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewModel.swift b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewModel.swift
new file mode 100644
index 00000000..e0e21f30
--- /dev/null
+++ b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewModel.swift
@@ -0,0 +1,36 @@
+//
+// ReportServerRulesViewModel.swift
+// Mastodon
+//
+// Created by MainasuK on 2022-5-10.
+//
+
+import UIKit
+import SwiftUI
+import MastodonAsset
+import MastodonSDK
+import MastodonLocalization
+
+final class ReportServerRulesViewModel: ObservableObject {
+
+ weak var delegate: ReportServerRulesViewControllerDelegate?
+
+ // input
+ let context: AppContext
+
+ @Published var headline = L10n.Scene.Report.StepTwo.whichRulesAreBeingViolated
+ @Published var serverRules: [Mastodon.Entity.Instance.Rule] = []
+
+ @Published var bottomPaddingHeight: CGFloat = .zero
+ @Published var backgroundColor: UIColor = Asset.Scene.Report.background.color
+
+ // output
+ @Published var selectRule: Mastodon.Entity.Instance.Rule?
+ @Published var isDislike: Bool = false
+
+ init(context: AppContext) {
+ self.context = context
+ // end init
+ }
+
+}
diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift
similarity index 75%
rename from Mastodon/Scene/Report/ReportStatus/ReportViewController.swift
rename to Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift
index 12291a96..d3844a3b 100644
--- a/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift
+++ b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift
@@ -1,8 +1,8 @@
//
-// ReportViewController.swift
+// ReportStatusViewController.swift
// Mastodon
//
-// Created by ihugo on 2021/4/20.
+// Created by MainasuK on 2022-5-10.
//
import os.log
@@ -12,21 +12,29 @@ import CoreDataStack
import MastodonAsset
import MastodonLocalization
-class ReportViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance {
+protocol ReportStatusViewControllerDelegate: AnyObject {
+ func reportStatusViewController(_ viewController: ReportStatusViewController, skipButtonDidPressed button: UIButton)
+ func reportStatusViewController(_ viewController: ReportStatusViewController, nextButtonDidPressed button: UIButton)
+}
+
+class ReportStatusViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance {
+
+ let logger = Logger(subsystem: "ReportStatusViewController", category: "ViewController")
var disposeBag = Set()
private var observations = Set()
weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
-
- var viewModel: ReportViewModel!
+
+ var viewModel: ReportStatusViewModel!
// MAKK: - UI
+
lazy var cancelBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .cancel,
target: self,
- action: #selector(ReportViewController.cancelBarButtonItemDidPressed(_:))
+ action: #selector(ReportStatusViewController.cancelBarButtonItemDidPressed(_:))
)
let tableView: UITableView = {
@@ -58,7 +66,7 @@ class ReportViewController: UIViewController, NeedsDependency, ReportViewControl
}
-extension ReportViewController {
+extension ReportStatusViewController {
override func viewDidLoad() {
super.viewDidLoad()
@@ -67,7 +75,7 @@ extension ReportViewController {
defer { setupNavigationBarBackgroundView() }
navigationItem.rightBarButtonItem = cancelBarButtonItem
-
+
tableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tableView)
NSLayoutConstraint.activate([
@@ -109,7 +117,7 @@ extension ReportViewController {
.sink { [weak self] _ in
guard let self = self else { return }
guard self.view.window != nil else { return }
- self.viewModel.stateMachine.enter(ReportViewModel.State.Loading.self)
+ self.viewModel.stateMachine.enter(ReportStatusViewModel.State.Loading.self)
}
.store(in: &disposeBag)
@@ -118,56 +126,38 @@ extension ReportViewController {
.assign(to: \.isEnabled, on: navigationActionView.nextButton)
.store(in: &disposeBag)
- navigationActionView.backButton.addTarget(self, action: #selector(ReportViewController.skipButtonDidPressed(_:)), for: .touchUpInside)
- navigationActionView.nextButton.addTarget(self, action: #selector(ReportViewController.nextButtonDidPressed(_:)), for: .touchUpInside)
+ navigationActionView.backButton.addTarget(self, action: #selector(ReportStatusViewController.skipButtonDidPressed(_:)), for: .touchUpInside)
+ navigationActionView.nextButton.addTarget(self, action: #selector(ReportStatusViewController.nextButtonDidPressed(_:)), for: .touchUpInside)
}
}
-extension ReportViewController {
-
+extension ReportStatusViewController {
+
@objc private func cancelBarButtonItemDidPressed(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil)
}
- @objc func skipButtonDidPressed(_ sender: UIButton) {
- var selectStatuses: [ManagedObjectRecord] = []
- if let selectStatus = viewModel.status {
- selectStatuses.append(selectStatus)
- }
+ @objc private func skipButtonDidPressed(_ sender: UIButton) {
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
- let reportSupplementaryViewModel = ReportSupplementaryViewModel(
- context: context,
- user: viewModel.user,
- selectStatuses: selectStatuses
- )
- coordinator.present(
- scene: .reportSupplementary(viewModel: reportSupplementaryViewModel),
- from: self,
- transition: .show
- )
+ assert(viewModel.delegate != nil)
+ viewModel.isSkip = true
+ viewModel.delegate?.reportStatusViewController(self, skipButtonDidPressed: sender)
}
- @objc func nextButtonDidPressed(_ sender: UIButton) {
- let selectStatuses = Array(viewModel.selectStatuses)
- guard !selectStatuses.isEmpty else { return }
+ @objc private func nextButtonDidPressed(_ sender: UIButton) {
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
- let reportSupplementaryViewModel = ReportSupplementaryViewModel(
- context: context,
- user: viewModel.user,
- selectStatuses: selectStatuses
- )
- coordinator.present(
- scene: .reportSupplementary(viewModel: reportSupplementaryViewModel),
- from: self,
- transition: .show
- )
+ assert(viewModel.delegate != nil)
+ viewModel.isSkip = false
+ viewModel.delegate?.reportStatusViewController(self, nextButtonDidPressed: sender)
}
}
// MARK: - UITableViewDelegate
-extension ReportViewController: UITableViewDelegate {
+extension ReportStatusViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath),
case .status = item
@@ -214,7 +204,7 @@ extension ReportViewController: UITableViewDelegate {
}
// MARK: - UIAdaptivePresentationControllerDelegate
-extension ReportViewController: UIAdaptivePresentationControllerDelegate {
+extension ReportStatusViewController: UIAdaptivePresentationControllerDelegate {
func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
return false
}
diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+Diffable.swift
similarity index 93%
rename from Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift
rename to Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+Diffable.swift
index 30ec5d87..4610a38d 100644
--- a/Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift
+++ b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+Diffable.swift
@@ -12,11 +12,11 @@ import CoreDataStack
import MastodonAsset
import MastodonLocalization
-extension ReportViewModel {
+extension ReportStatusViewModel {
static let reportItemHeaderContext = ReportItem.HeaderContext(
primaryLabelText: L10n.Scene.Report.content1,
- secondaryLabelText: L10n.Scene.Report.step1
+ secondaryLabelText: L10n.Scene.Report.StepThree.step3Of4
)
func setupDiffableDataSource(
@@ -41,7 +41,7 @@ extension ReportViewModel {
var snapshot = NSDiffableDataSourceSnapshot()
snapshot.appendSections([.main])
- snapshot.appendItems([.header(context: ReportViewModel.reportItemHeaderContext)], toSection: .main)
+ snapshot.appendItems([.header(context: ReportStatusViewModel.reportItemHeaderContext)], toSection: .main)
let items = records.map { ReportItem.status(record: $0) }
snapshot.appendItems(items, toSection: .main)
diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift
similarity index 92%
rename from Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift
rename to Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift
index 1bc43830..c653fc4a 100644
--- a/Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift
+++ b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift
@@ -12,7 +12,7 @@ import CoreData
import CoreDataStack
import GameplayKit
-extension ReportViewModel {
+extension ReportStatusViewModel {
class State: GKState {
let logger = Logger(subsystem: "ReportViewModel.State", category: "StateMachine")
@@ -23,15 +23,15 @@ extension ReportViewModel {
String(describing: Self.self)
}
- weak var viewModel: ReportViewModel?
+ weak var viewModel: ReportStatusViewModel?
- init(viewModel: ReportViewModel) {
+ init(viewModel: ReportStatusViewModel) {
self.viewModel = viewModel
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
- let previousState = previousState as? ReportViewModel.State
+ let previousState = previousState as? ReportStatusViewModel.State
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")")
}
@@ -46,8 +46,8 @@ extension ReportViewModel {
}
}
-extension ReportViewModel.State {
- class Initial: ReportViewModel.State {
+extension ReportStatusViewModel.State {
+ class Initial: ReportStatusViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
guard let _ = viewModel else { return false }
switch stateClass {
@@ -59,7 +59,7 @@ extension ReportViewModel.State {
}
}
- class Loading: ReportViewModel.State {
+ class Loading: ReportStatusViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Fail.Type:
@@ -128,7 +128,7 @@ extension ReportViewModel.State {
}
}
- class Fail: ReportViewModel.State {
+ class Fail: ReportStatusViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Loading.Type:
@@ -139,7 +139,7 @@ extension ReportViewModel.State {
}
}
- class Idle: ReportViewModel.State {
+ class Idle: ReportStatusViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Loading.Type:
@@ -150,7 +150,7 @@ extension ReportViewModel.State {
}
}
- class NoMore: ReportViewModel.State {
+ class NoMore: ReportStatusViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
return false
}
diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel.swift
similarity index 91%
rename from Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift
rename to Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel.swift
index 46a47526..23996063 100644
--- a/Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift
+++ b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel.swift
@@ -1,8 +1,8 @@
//
-// ReportViewModel.swift
+// ReportStatusViewModel.swift
// Mastodon
//
-// Created by ihugo on 2021/4/19.
+// Created by MainasuK on 2022-5-10.
//
import Combine
@@ -15,10 +15,12 @@ import OrderedCollections
import os.log
import UIKit
-class ReportViewModel {
+class ReportStatusViewModel {
var disposeBag = Set()
+ weak var delegate: ReportStatusViewControllerDelegate?
+
// input
let context: AppContext
let user: ManagedObjectRecord
@@ -26,6 +28,7 @@ class ReportViewModel {
let statusFetchedResultsController: StatusFetchedResultsController
let listBatchFetchViewModel = ListBatchFetchViewModel()
+ @Published var isSkip = false
@Published var selectStatuses = OrderedSet>()
// output
diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift
index 4f6e102b..fd778317 100644
--- a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift
+++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift
@@ -11,20 +11,25 @@ import Combine
import MastodonAsset
import MastodonLocalization
+protocol ReportSupplementaryViewControllerDelegate: AnyObject {
+ func reportSupplementaryViewController(_ viewController: ReportSupplementaryViewController, skipButtonDidPressed button: UIButton)
+ func reportSupplementaryViewController(_ viewController: ReportSupplementaryViewController, nextButtonDidPressed button: UIButton)
+}
+
final class ReportSupplementaryViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance {
let logger = Logger(subsystem: "ReportSupplementaryViewController", category: "ViewController")
var disposeBag = Set()
private var observations = Set()
-
+
weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
var viewModel: ReportSupplementaryViewModel! { willSet { precondition(!isViewLoaded) } }
-
// MAKK: - UI
+
lazy var cancelBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .cancel,
target: self,
@@ -74,16 +79,16 @@ extension ReportSupplementaryViewController {
setupAppearance()
defer { setupNavigationBarBackgroundView() }
- navigationItem.rightBarButtonItem = cancelBarButtonItem
-
- viewModel.$isReporting
+ viewModel.$isBusy
.receive(on: DispatchQueue.main)
- .sink { [weak self] isReporting in
+ .sink { [weak self] isBusy in
guard let self = self else { return }
- self.navigationActionView.isUserInteractionEnabled = !isReporting
+ self.navigationItem.rightBarButtonItem = isBusy ? self.activityIndicatorBarButtonItem : self.cancelBarButtonItem
+ self.navigationItem.hidesBackButton = isBusy
+ self.navigationActionView.backButton.isUserInteractionEnabled = !isBusy
}
.store(in: &disposeBag)
-
+
tableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tableView)
NSLayoutConstraint.activate([
@@ -130,49 +135,25 @@ extension ReportSupplementaryViewController {
}
extension ReportSupplementaryViewController {
- private func report(withComment: Bool) {
- Task {
- do {
- let _ = try await viewModel.report(withComment: withComment)
- logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): report success")
-
- let reportResultViewModel = ReportResultViewModel(
- context: context,
- user: viewModel.user
- )
-
- coordinator.present(
- scene: .reportResult(viewModel: reportResultViewModel),
- from: self,
- transition: .show
- )
-
- } catch {
- let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert)
- let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil)
- alertController.addAction(okAction)
- self.coordinator.present(
- scene: .alertController(alertController: alertController),
- from: nil,
- transition: .alertController(animated: true, completion: nil)
- )
- }
- } // end Task
- }
-}
-
-extension ReportSupplementaryViewController {
-
+
@objc private func cancelBarButtonItemDidPressed(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil)
}
@objc func skipButtonDidPressed(_ sender: UIButton) {
- report(withComment: false)
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
+
+ assert(viewModel.delegate != nil)
+ viewModel.isSkip = true
+ viewModel.delegate?.reportSupplementaryViewController(self, skipButtonDidPressed: sender)
}
@objc func nextButtonDidPressed(_ sender: UIButton) {
- report(withComment: true)
+ logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
+
+ assert(viewModel.delegate != nil)
+ viewModel.isSkip = false
+ viewModel.delegate?.reportSupplementaryViewController(self, nextButtonDidPressed: sender)
}
}
diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift
index 5fb9e742..8cbc1624 100644
--- a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift
+++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift
@@ -15,8 +15,8 @@ import MastodonLocalization
extension ReportSupplementaryViewModel {
static let reportItemHeaderContext = ReportItem.HeaderContext(
- primaryLabelText: L10n.Scene.Report.content2,
- secondaryLabelText: L10n.Scene.Report.step2
+ primaryLabelText: L10n.Scene.Report.StepFour.isThereAnythingElseWeShouldKnow,
+ secondaryLabelText: L10n.Scene.Report.StepFour.step4Of4
)
func setupDiffableDataSource(
diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift
index e73e82dd..c07ee1f5 100644
--- a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift
+++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift
@@ -12,71 +12,37 @@ import MastodonSDK
class ReportSupplementaryViewModel {
+ weak var delegate: ReportSupplementaryViewControllerDelegate?
+
// Input
var context: AppContext
let user: ManagedObjectRecord
- let selectStatuses: [ManagedObjectRecord]
let commentContext = ReportItem.CommentContext()
+ @Published var isSkip = false
+ @Published var isBusy = false
+
// output
var diffableDataSource: UITableViewDiffableDataSource?
@Published var isNextButtonEnabled = false
- @Published var isReporting = false
- @Published var isReportSuccess = false
init(
context: AppContext,
- user: ManagedObjectRecord,
- selectStatuses: [ManagedObjectRecord]
+ user: ManagedObjectRecord
) {
self.context = context
self.user = user
- self.selectStatuses = selectStatuses
// end init
- commentContext.$comment
- .map { comment -> Bool in
- return !comment.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
- }
- .assign(to: &$isNextButtonEnabled)
+ Publishers.CombineLatest(
+ commentContext.$comment,
+ $isBusy
+ )
+ .map { comment, isBusy -> Bool in
+ guard !isBusy else { return false }
+ return !comment.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
+ }
+ .assign(to: &$isNextButtonEnabled)
}
}
-
-extension ReportSupplementaryViewModel {
- func report(withComment: Bool) async throws {
- guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else {
- assertionFailure()
- return
- }
-
- let managedObjectContext = context.managedObjectContext
- let _query: Mastodon.API.Reports.FileReportQuery? = try await managedObjectContext.perform {
- guard let user = self.user.object(in: managedObjectContext) else { return nil }
- let statusIDs = self.selectStatuses.compactMap { record -> Status.ID? in
- guard let status = record.object(in: managedObjectContext) else { return nil }
- return status.id
- }
- return Mastodon.API.Reports.FileReportQuery(
- accountID: user.id,
- statusIDs: statusIDs,
- comment: withComment ? self.commentContext.comment : nil,
- forward: nil
- )
- }
-
- guard let query = _query else { return }
-
- do {
- isReporting = true
- let _ = try await context.apiService.report(
- query: query,
- authenticationBox: authenticationBox
- )
- isReportSuccess = true
- } catch {
- isReporting = false
- throw error
- }
- }
-}
diff --git a/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift
index b982ee5a..d735a094 100644
--- a/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift
+++ b/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift
@@ -8,6 +8,7 @@
import UIKit
import Combine
import MastodonUI
+import MastodonAsset
import MastodonLocalization
import UITextView_Placeholder
@@ -27,7 +28,8 @@ final class ReportCommentTableViewCell: UITableViewCell {
textView.attributedPlaceholder = NSAttributedString(
string: L10n.Scene.Report.textPlaceholder,
attributes: [
- .font: font
+ .font: font,
+ .foregroundColor: Asset.Colors.Label.secondary.color
]
)
textView.textContainerInset = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16)
@@ -80,4 +82,17 @@ extension ReportCommentTableViewCell {
commentTextView.heightAnchor.constraint(greaterThanOrEqualToConstant: 100).priority(.defaultHigh),
])
}
+
+ override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
+ super.traitCollectionDidChange(previousTraitCollection)
+
+ commentTextView.attributedPlaceholder = NSAttributedString(
+ string: L10n.Scene.Report.textPlaceholder,
+ attributes: [
+ .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)),
+ .foregroundColor: Asset.Colors.Label.secondary.color
+ ]
+ )
+ }
+
}
diff --git a/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift b/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift
index 6b35f3d8..fb9bcd63 100644
--- a/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift
+++ b/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift
@@ -19,7 +19,7 @@ extension ReportViewControllerAppearance {
func setupAppearance() {
- title = L10n.Scene.Report.titleReport
+ // title = L10n.Scene.Report.titleReport
view.backgroundColor = Asset.Scene.Report.background.color
setupNavigationBarAppearance()
diff --git a/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift b/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift
index f4ad467d..ec145f86 100644
--- a/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift
+++ b/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift
@@ -23,6 +23,7 @@ extension AdaptiveStatusBarStyleNavigationController {
override func viewDidLoad() {
super.viewDidLoad()
+
setupFullWidthBackGesture()
}
@@ -45,6 +46,11 @@ extension AdaptiveStatusBarStyleNavigationController: UIGestureRecognizerDelegat
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
let isSystemSwipeToBackEnabled = interactivePopGestureRecognizer?.isEnabled == true
let isThereStackedViewControllers = viewControllers.count > 1
- return isSystemSwipeToBackEnabled && isThereStackedViewControllers
+ let isPanPopable = (topViewController as? PanPopableViewController)?.isPanPopable ?? true
+ return isSystemSwipeToBackEnabled && isThereStackedViewControllers && isPanPopable
}
}
+
+protocol PanPopableViewController: UIViewController {
+ var isPanPopable: Bool { get }
+}
diff --git a/Mastodon/Supporting Files/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift
index d178cd0d..54b1fd57 100644
--- a/Mastodon/Supporting Files/SceneDelegate.swift
+++ b/Mastodon/Supporting Files/SceneDelegate.swift
@@ -10,7 +10,7 @@ import UIKit
import Combine
import CoreDataStack
-#if DEBUG
+#if PROFILE
import FPSIndicator
#endif
@@ -22,7 +22,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
var coordinator: SceneCoordinator?
- #if DEBUG
+ #if PROFILE
var fpsIndicator: FPSIndicator?
#endif
@@ -87,8 +87,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
}
.store(in: &observations)
- #if DEBUG
- // fpsIndicator = FPSIndicator(windowScene: windowScene)
+ #if PROFILE
+ fpsIndicator = FPSIndicator(windowScene: windowScene)
#endif
}
diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist
index 3f163094..f1f54a5e 100644
--- a/MastodonIntent/Info.plist
+++ b/MastodonIntent/Info.plist
@@ -17,9 +17,9 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleVersion
- 126
+ 127
NSExtension
NSExtensionAttributes
diff --git a/MastodonIntent/gl.lproj/Intents.strings b/MastodonIntent/gl.lproj/Intents.strings
index 6877490b..2083cc70 100644
--- a/MastodonIntent/gl.lproj/Intents.strings
+++ b/MastodonIntent/gl.lproj/Intents.strings
@@ -1,51 +1,51 @@
-"16wxgf" = "Post on Mastodon";
+"16wxgf" = "Publicar en Mastodon";
-"751xkl" = "Text Content";
+"751xkl" = "Texto a incluír";
-"CsR7G2" = "Post on Mastodon";
+"CsR7G2" = "Publicar en Mastodon";
-"HZSGTr" = "What content to post?";
+"HZSGTr" = "Cal é o contido a publicar?";
-"HdGikU" = "Posting failed";
+"HdGikU" = "Fallou a publicación";
-"KDNTJ4" = "Failure Reason";
+"KDNTJ4" = "Razón do fallo";
-"RHxKOw" = "Send Post with text content";
+"RHxKOw" = "Enviar Publicación con texto";
-"RxSqsb" = "Post";
+"RxSqsb" = "Publicación";
-"WCIR3D" = "Post ${content} on Mastodon";
+"WCIR3D" = "Publicar ${content} en Mastodon";
-"ZKJSNu" = "Post";
+"ZKJSNu" = "Publicación";
"ZS1XaK" = "${content}";
-"ZbSjzC" = "Visibility";
+"ZbSjzC" = "Visibilidade";
-"Zo4jgJ" = "Post Visibility";
+"Zo4jgJ" = "Visibilidade da publicación";
-"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’.";
+"apSxMG-dYQ5NN" = "Hai ${count} opcións que coinciden con ‘Público’.";
-"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’.";
+"apSxMG-ehFLjY" = "Hai ${count} opcións que coinciden con 'Só seguidoras’.";
-"ayoYEb-dYQ5NN" = "${content}, Public";
+"ayoYEb-dYQ5NN" = "${content}, Público";
-"ayoYEb-ehFLjY" = "${content}, Followers Only";
+"ayoYEb-ehFLjY" = "${content}, Só seguidoras";
-"dUyuGg" = "Post on Mastodon";
+"dUyuGg" = "Publicar en Mastodon";
-"dYQ5NN" = "Public";
+"dYQ5NN" = "Público";
-"ehFLjY" = "Followers Only";
+"ehFLjY" = "Só seguidoras";
-"gfePDu" = "Posting failed. ${failureReason}";
+"gfePDu" = "Fallou a publicación. ${failureReason}";
-"k7dbKQ" = "Post was sent successfully.";
+"k7dbKQ" = "Publicación correcta.";
-"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?";
+"oGiqmY-dYQ5NN" = "Só para confirmar, querías ’Público'?";
-"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?";
+"oGiqmY-ehFLjY" = "Só para confirmar, querías ’Só para seguidoras'?";
"rM6dvp" = "URL";
-"ryJLwG" = "Post was sent successfully. ";
+"ryJLwG" = "Publicación correcta. ";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift
index de6b55cb..b5403a14 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift
+++ b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift
@@ -585,6 +585,12 @@ public enum L10n {
public static let published = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Published")
/// Publishing post...
public static let publishing = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Publishing")
+ public enum Accessibility {
+ /// Tap to scroll to top and tap again to previous location
+ public static let logoHint = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint")
+ /// Logo Button
+ public static let logoLabel = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel")
+ }
}
}
public enum Notification {
@@ -840,6 +846,86 @@ public enum L10n {
}
/// Report
public static let titleReport = L10n.tr("Localizable", "Scene.Report.TitleReport")
+ public enum StepFinal {
+ /// Block %@
+ public static func blockUser(_ p1: Any) -> String {
+ return L10n.tr("Localizable", "Scene.Report.StepFinal.BlockUser", String(describing: p1))
+ }
+ /// Don’t want to see this?
+ public static let dontWantToSeeThis = L10n.tr("Localizable", "Scene.Report.StepFinal.DontWantToSeeThis")
+ /// Mute %@
+ public static func muteUser(_ p1: Any) -> String {
+ return L10n.tr("Localizable", "Scene.Report.StepFinal.MuteUser", String(describing: p1))
+ }
+ /// They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.
+ public static let theyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked = L10n.tr("Localizable", "Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked")
+ /// Unfollow
+ public static let unfollow = L10n.tr("Localizable", "Scene.Report.StepFinal.Unfollow")
+ /// Unfollowed
+ public static let unfollowed = L10n.tr("Localizable", "Scene.Report.StepFinal.Unfollowed")
+ /// Unfollow %@
+ public static func unfollowUser(_ p1: Any) -> String {
+ return L10n.tr("Localizable", "Scene.Report.StepFinal.UnfollowUser", String(describing: p1))
+ }
+ /// When you see something you don’t like on Mastodon, you can remove the person from your experience.
+ public static let whenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience = L10n.tr("Localizable", "Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience.")
+ /// You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.
+ public static let youWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted = L10n.tr("Localizable", "Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted")
+ }
+ public enum StepFour {
+ /// Is there anything else we should know?
+ public static let isThereAnythingElseWeShouldKnow = L10n.tr("Localizable", "Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow")
+ /// Step 4 of 4
+ public static let step4Of4 = L10n.tr("Localizable", "Scene.Report.StepFour.Step4Of4")
+ }
+ public enum StepOne {
+ /// I don’t like it
+ public static let iDontLikeIt = L10n.tr("Localizable", "Scene.Report.StepOne.IDontLikeIt")
+ /// It is not something you want to see
+ public static let itIsNotSomethingYouWantToSee = L10n.tr("Localizable", "Scene.Report.StepOne.ItIsNotSomethingYouWantToSee")
+ /// It’s something else
+ public static let itsSomethingElse = L10n.tr("Localizable", "Scene.Report.StepOne.ItsSomethingElse")
+ /// It’s spam
+ public static let itsSpam = L10n.tr("Localizable", "Scene.Report.StepOne.ItsSpam")
+ /// It violates server rules
+ public static let itViolatesServerRules = L10n.tr("Localizable", "Scene.Report.StepOne.ItViolatesServerRules")
+ /// Malicious links, fake engagement, or repetetive replies
+ public static let maliciousLinksFakeEngagementOrRepetetiveReplies = L10n.tr("Localizable", "Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies")
+ /// Select the best match
+ public static let selectTheBestMatch = L10n.tr("Localizable", "Scene.Report.StepOne.SelectTheBestMatch")
+ /// Step 1 of 4
+ public static let step1Of4 = L10n.tr("Localizable", "Scene.Report.StepOne.Step1Of4")
+ /// The issue does not fit into other categories
+ public static let theIssueDoesNotFitIntoOtherCategories = L10n.tr("Localizable", "Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories")
+ /// What's wrong with this account?
+ public static let whatsWrongWithThisAccount = L10n.tr("Localizable", "Scene.Report.StepOne.WhatsWrongWithThisAccount")
+ /// What's wrong with this post?
+ public static let whatsWrongWithThisPost = L10n.tr("Localizable", "Scene.Report.StepOne.WhatsWrongWithThisPost")
+ /// What's wrong with %@?
+ public static func whatsWrongWithThisUsername(_ p1: Any) -> String {
+ return L10n.tr("Localizable", "Scene.Report.StepOne.WhatsWrongWithThisUsername", String(describing: p1))
+ }
+ /// You are aware that it breaks specific rules
+ public static let youAreAwareThatItBreaksSpecificRules = L10n.tr("Localizable", "Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules")
+ }
+ public enum StepThree {
+ /// Are there any posts that back up this report?
+ public static let areThereAnyPostsThatBackUpThisReport = L10n.tr("Localizable", "Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport")
+ /// Select all that apply
+ public static let selectAllThatApply = L10n.tr("Localizable", "Scene.Report.StepThree.SelectAllThatApply")
+ /// Step 3 of 4
+ public static let step3Of4 = L10n.tr("Localizable", "Scene.Report.StepThree.Step3Of4")
+ }
+ public enum StepTwo {
+ /// I just don’t like it
+ public static let iJustDonTLikeIt = L10n.tr("Localizable", "Scene.Report.StepTwo.IJustDon’tLikeIt")
+ /// Select all that apply
+ public static let selectAllThatApply = L10n.tr("Localizable", "Scene.Report.StepTwo.SelectAllThatApply")
+ /// Step 2 of 4
+ public static let step2Of4 = L10n.tr("Localizable", "Scene.Report.StepTwo.Step2Of4")
+ /// Which rules are being violated?
+ public static let whichRulesAreBeingViolated = L10n.tr("Localizable", "Scene.Report.StepTwo.WhichRulesAreBeingViolated")
+ }
}
public enum Search {
/// Search
@@ -947,6 +1033,8 @@ public enum L10n {
public enum Input {
/// Search servers
public static let placeholder = L10n.tr("Localizable", "Scene.ServerPicker.Input.Placeholder")
+ /// Search communities or enter URL
+ public static let searchServersOrEnterUrl = L10n.tr("Localizable", "Scene.ServerPicker.Input.SearchServersOrEnterUrl")
}
public enum Label {
/// CATEGORY
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings
index 2ed1a8ad..c49b9f9d 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings
@@ -58,7 +58,7 @@
"Common.Controls.Actions.SignIn" = "تسجيل الدخول";
"Common.Controls.Actions.SignUp" = "إنشاء حِساب";
"Common.Controls.Actions.Skip" = "تخطي";
-"Common.Controls.Actions.TakePhoto" = "التقاط صورة";
+"Common.Controls.Actions.TakePhoto" = "اِلتِقاطُ صُورَة";
"Common.Controls.Actions.TryAgain" = "المُحاولة مرة أُخرى";
"Common.Controls.Actions.UnblockDomain" = "رفع الحظر عن %@";
"Common.Controls.Friendship.Block" = "حظر";
@@ -164,7 +164,7 @@
"Scene.Compose.Attachment.Video" = "مقطع مرئي";
"Scene.Compose.AutoComplete.SpaceToAdd" = "انقر على مساحة لإضافتِها";
"Scene.Compose.ComposeAction" = "نَشر";
-"Scene.Compose.ContentInputPlaceholder" = "أخبِرنا بِما يَجُولُ فِي ذِهنَك";
+"Scene.Compose.ContentInputPlaceholder" = "عَبِّر عَمَّ يَجُولُ فِي ذِهنِك";
"Scene.Compose.ContentWarning.Placeholder" = "اكتب تَحذيرًا دَقيقًا هُنا...";
"Scene.Compose.Keyboard.AppendAttachmentEntry" = "إضافة مُرفَق - %@";
"Scene.Compose.Keyboard.DiscardPost" = "تجاهُل المنشور";
@@ -172,9 +172,9 @@
"Scene.Compose.Keyboard.SelectVisibilityEntry" = "اختر مدى الظهور - %@";
"Scene.Compose.Keyboard.ToggleContentWarning" = "تبديل تحذير المُحتَوى";
"Scene.Compose.Keyboard.TogglePoll" = "تبديل الاستطلاع";
-"Scene.Compose.MediaSelection.Browse" = "تصفح";
-"Scene.Compose.MediaSelection.Camera" = "إلتقاط صورة";
-"Scene.Compose.MediaSelection.PhotoLibrary" = "مكتبة الصور";
+"Scene.Compose.MediaSelection.Browse" = "تَصَفَّح";
+"Scene.Compose.MediaSelection.Camera" = "اِلتِقاطُ صُورَة";
+"Scene.Compose.MediaSelection.PhotoLibrary" = "مَكتَبَةُ الصُّوَر";
"Scene.Compose.Poll.DurationTime" = "المُدَّة: %@";
"Scene.Compose.Poll.OneDay" = "يومٌ واحِد";
"Scene.Compose.Poll.OneHour" = "ساعةٌ واحدة";
@@ -211,6 +211,8 @@
"Scene.Favorite.Title" = "مُفضَّلَتُك";
"Scene.Follower.Footer" = "لا يُمكِن عَرض المُتابِعين مِنَ الخوادم الأُخرى.";
"Scene.Following.Footer" = "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "اُنقُر لِلتمريرِ لأعلى واُنقُر مَرّةً أُخرَى لِلذَّهابِ إلَى المَوقِعِ السَّابِق";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "ُّزِرُّ الشِّعار";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "إظهار منشورات جديدة";
"Scene.HomeTimeline.NavigationBarState.Offline" = "غَير مُتَّصِل";
"Scene.HomeTimeline.NavigationBarState.Published" = "تمَّ النَّشر!";
@@ -291,8 +293,39 @@
"Scene.Report.Reported" = "مُبْلَغٌ عَنه";
"Scene.Report.Send" = "إرسال البلاغ";
"Scene.Report.SkipToSend" = "إرسال بدون تعليق";
-"Scene.Report.Step1" = "الخطوة الأولى مِن أصل اثنتين";
-"Scene.Report.Step2" = "الخطوة الثانية والأخيرة";
+"Scene.Report.Step1" = "الخطوة 1 مِن أصل 2";
+"Scene.Report.Step2" = "الخطوة 2 مِن أصل 2";
+"Scene.Report.StepFinal.BlockUser" = "حَظرُ %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "ألَا تُريدُ رُؤيَةَ هَذَا؟";
+"Scene.Report.StepFinal.MuteUser" = "كَتمُ %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "لَن يَتمكَّنَ بَعدَ الآنِ مِن مُتابَعَةِ مَنشوراتِكَ أو رُؤيَتِها، وَلكِن يُمكِنَهُ مَعرِفَةُ مَا إذا حُظَرِت عَنه.";
+"Scene.Report.StepFinal.Unfollow" = "إلغاءُ المُتابَعَة";
+"Scene.Report.StepFinal.UnfollowUser" = "إلغاءُ مُتابَعَةِ %@";
+"Scene.Report.StepFinal.Unfollowed" = "أُلغِيَت المُتابَعَة";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "عِندما تَرى شيئًا لَا يُعجِبُكَ عَلَى مَاستودُون، يُمكِنُكَ إزالَةُ الشَّخصِ مِن تَجرِبَتِك.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "لَن تَرى مُشارَكاتِهِ أو إعادَاتِ تَدوينَهِ فِي تغذيَتِكَ الرَّئيسَة. لَن يَعرِفَ أنَّهُ قَد كُتِمَ أيضًا.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "هَل هُناكَ شَيءٌ آخَرَ يَجِبُ أن نَعلَمَ بِه؟";
+"Scene.Report.StepFour.Step4Of4" = "الخطوة 4 مِن أصل 4";
+"Scene.Report.StepOne.IDontLikeIt" = "لا يُعجِبُني";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "إنَّهُ ليسَ شيئًا تُريدُ رُؤيَتَه";
+"Scene.Report.StepOne.ItViolatesServerRules" = "يَنتَهِكُ قَواعِدَ الخادِم";
+"Scene.Report.StepOne.ItsSomethingElse" = "إنَّهُ شَيءٌ آخَر";
+"Scene.Report.StepOne.ItsSpam" = "إنَّهُ غَيرٌ مَرغوبٍ فيه";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "رَوابِطٌ ضَارَّة، اِرتِباطاتٌ مُزيَّفَة أو رُدودٌ مُتَكَرِّرَة";
+"Scene.Report.StepOne.SelectTheBestMatch" = "اِختَر أفضلَ تَطابُق";
+"Scene.Report.StepOne.Step1Of4" = "الخطوة 1 مِن أصل 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "المُشكِلَةُ لَا تَتَناسَبُ مَعَ الفِئاتِ الأُخرَى";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "ما المُشكِلَةُ فِي هَذَا الحِساب؟";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "ما المُشكِلَةُ فِي هَذَا المَنشُور؟";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "ما المُشكِلَة مَعَ %@؟";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "أنتَ مُدِركٌ لِانتِهاكِهِ قَواعِدًا مُحَدَّدَة";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "هَل هُناكَ أيُّ مَنشُوراتٍ أُخرَى تَتَوافَقُ مَعَ هَذَا التَّقرير؟";
+"Scene.Report.StepThree.SelectAllThatApply" = "اِختَر كُلَّ ما يَنطَبِق";
+"Scene.Report.StepThree.Step3Of4" = "الخطوة 3 مِن أصل 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "أنا فَقَط لا يُعجِبُني";
+"Scene.Report.StepTwo.SelectAllThatApply" = "اِختَر كُلَّ ما يَنطَبِق";
+"Scene.Report.StepTwo.Step2Of4" = "الخطوة 2 مِن أصل 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "مَا هِيَ القَواعِدُ الَّتي تُنتَهَك؟";
"Scene.Report.TextPlaceholder" = "اكتب أو الصق تعليقات إضافيَّة";
"Scene.Report.Title" = "الإبلاغ عن %@";
"Scene.Report.TitleReport" = "إبلاغ";
@@ -333,6 +366,7 @@
"Scene.ServerPicker.EmptyState.FindingServers" = "يجري إيجاد خوادم متوفِّرَة...";
"Scene.ServerPicker.EmptyState.NoResults" = "لا توجد نتائج";
"Scene.ServerPicker.Input.Placeholder" = "اِبحَث عن خادِم أو انضم إلى آخر خاص بك...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "اِبحث عَن مُجتَمَعَات أو أدخِل عُنوانَ URL";
"Scene.ServerPicker.Label.Category" = "الفئة";
"Scene.ServerPicker.Label.Language" = "اللُّغة";
"Scene.ServerPicker.Label.Users" = "مُستَخدِم";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.stringsdict
index c2f64172..dddba513 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.stringsdict
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.stringsdict
@@ -109,7 +109,7 @@
NSStringFormatValueTypeKey
ld
zero
- لا منشور
+ لا مَنشورات
one
منشورٌ واحِد
two
@@ -447,13 +447,13 @@
zero
تتبقى لَحظة
one
- تتبقى ثانية
+ تتبقى ثانية واحِدة
two
- تتبقى ثانيتين
+ تتبقى ثانيتان
few
تتبقى %ld ثوان
many
- تتبقى %ld ثانيةً
+ تتبقى %ld ثانية
other
تتبقى %ld ثانية
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings
index f22a0ff7..502b2672 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings
@@ -210,6 +210,8 @@ carregat a Mastodon.";
"Scene.Favorite.Title" = "Els teus Favorits";
"Scene.Follower.Footer" = "Els seguidors d'altres servidors no son mostrats.";
"Scene.Following.Footer" = "Els seguits d'altres servidors no son mostrats.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Toca per desplaçar-te cap a dalt i torna a toca de nou per tornar a la ubicació anterior";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Botó de logotip";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Veure noves publicacions";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Fora de línia";
"Scene.HomeTimeline.NavigationBarState.Published" = "Publicat!";
@@ -283,7 +285,7 @@ carregat a Mastodon.";
"Scene.Register.Input.Password.Require" = "La teva contrasenya com a mínim necessita:";
"Scene.Register.Input.Username.DuplicatePrompt" = "Aquest nom d'usuari ja està en ús.";
"Scene.Register.Input.Username.Placeholder" = "nom d'usuari";
-"Scene.Register.Title" = "Parla'ns de tu.";
+"Scene.Register.Title" = "Anem a configurar-te a %@";
"Scene.Report.Content1" = "Hi ha alguna altre publicació que vulguis afegir a l'informe?";
"Scene.Report.Content2" = "Hi ha alguna cosa que els moderadors hagin de saber sobre aquest informe?";
"Scene.Report.ReportSentTitle" = "Gràcies per informar, ho investigarem.";
@@ -292,6 +294,37 @@ carregat a Mastodon.";
"Scene.Report.SkipToSend" = "Envia sense comentaris";
"Scene.Report.Step1" = "Pas 1 de 2";
"Scene.Report.Step2" = "Pas 2 de 2";
+"Scene.Report.StepFinal.BlockUser" = "Bloca %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "No vols veure això?";
+"Scene.Report.StepFinal.MuteUser" = "Silencia %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "Ja no podran seguir ni veure les teves publicacions, però poden veure si han estat bloquejats.";
+"Scene.Report.StepFinal.Unfollow" = "Deixa de seguir";
+"Scene.Report.StepFinal.UnfollowUser" = "Deixa de seguir %@";
+"Scene.Report.StepFinal.Unfollowed" = "S'ha deixat de seguir";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "Quan veus alguna cosa que no t'agrada a Mastodon, pots eliminar la persona de la vostra experiència.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "No veuràs les seves publicacions o impulsos a la teva línia de temps personal. No sabran que han estat silenciats.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Hi ha res més que hauríem de saber?";
+"Scene.Report.StepFour.Step4Of4" = "Pas 4 de 4";
+"Scene.Report.StepOne.IDontLikeIt" = "No m'agrada";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "No és una cosa que vulguis veure";
+"Scene.Report.StepOne.ItViolatesServerRules" = "Infringeix les normes del servidor";
+"Scene.Report.StepOne.ItsSomethingElse" = "És una altra cosa";
+"Scene.Report.StepOne.ItsSpam" = "És contingut brossa";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Enllaços maliciosos, compromís falç o respostes repetitives";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Selecciona la millor coincidència";
+"Scene.Report.StepOne.Step1Of4" = "Pas 1 de 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "El problema no encaixa en altres categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "Quin és el problema amb aquest compte?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "Quin és el problema amb aquesta publicació?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "Quin és el problema amb %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "Ets conscient que incompleix normes específiques";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Hi ha alguna publicació que recolzi aquest informe?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Selecciona tot el que correspongui";
+"Scene.Report.StepThree.Step3Of4" = "Pas 3 de 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "Simplement no m'agrada";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Selecciona tot el que correspongui";
+"Scene.Report.StepTwo.Step2Of4" = "Pas 2 de 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Quines normes s'estan infringint?";
"Scene.Report.TextPlaceholder" = "Escriu o enganxa comentaris addicionals";
"Scene.Report.Title" = "Informa sobre %@";
"Scene.Report.TitleReport" = "Informe";
@@ -328,10 +361,11 @@ carregat a Mastodon.";
"Scene.ServerPicker.Button.Category.Tech" = "tecnologia";
"Scene.ServerPicker.Button.SeeLess" = "Veure Menys";
"Scene.ServerPicker.Button.SeeMore" = "Veure Més";
-"Scene.ServerPicker.EmptyState.BadNetwork" = "S'ha produït un error en carregar les dades. Comprova la teva connexió a Internet.";
+"Scene.ServerPicker.EmptyState.BadNetwork" = "Alguna cosa no ha anat bé en carregar les dades. Comprova la teva connexió a Internet.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Cercant els servidors disponibles...";
"Scene.ServerPicker.EmptyState.NoResults" = "No hi ha resultats";
-"Scene.ServerPicker.Input.Placeholder" = "Troba un servidor o uneix-te al teu...";
+"Scene.ServerPicker.Input.Placeholder" = "Cerca servidors";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Cerca comunitats o introdueix l'URL";
"Scene.ServerPicker.Label.Category" = "CATEGORIA";
"Scene.ServerPicker.Label.Language" = "LLENGUATGE";
"Scene.ServerPicker.Label.Users" = "USUARIS";
@@ -341,7 +375,7 @@ carregat a Mastodon.";
"Scene.ServerRules.Button.Confirm" = "Hi estic d'acord";
"Scene.ServerRules.PrivacyPolicy" = "política de privadesa";
"Scene.ServerRules.Prompt" = "Al continuar, estàs subjecte als termes de servei i a la política de privacitat de %@.";
-"Scene.ServerRules.Subtitle" = "Aquestes regles estan establertes per els administradors de %@.";
+"Scene.ServerRules.Subtitle" = "Aquestes regles estan establertes i aplicades per els moderadors de %@.";
"Scene.ServerRules.TermsOfService" = "termes del servei";
"Scene.ServerRules.Title" = "Algunes regles bàsiques.";
"Scene.Settings.Footer.MastodonDescription" = "Mastodon és un programari de codi obert. Pots informar de problemes a GitHub a %@ (%@)";
@@ -380,7 +414,7 @@ carregat a Mastodon.";
"Scene.Settings.Section.SpicyZone.Title" = "La Zona Picant";
"Scene.Settings.Title" = "Configuració";
"Scene.SuggestionAccount.FollowExplain" = "Quan segueixes algú, veuràs les seves publicacions a Inici.";
-"Scene.SuggestionAccount.Title" = "Cerca Persones per Seguir";
+"Scene.SuggestionAccount.Title" = "Cerca Persones a Seguir";
"Scene.Thread.BackTitle" = "Publicació";
"Scene.Thread.Title" = "Publicació de %@";
"Scene.Welcome.GetStarted" = "Comença";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ckb.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ckb.lproj/Localizable.strings
index 1db4f793..89ba6315 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ckb.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ckb.lproj/Localizable.strings
@@ -209,6 +209,8 @@
"Scene.Favorite.Title" = "بەدڵبووەکانت";
"Scene.Follower.Footer" = "شوێنکەوتووەکانی لە ڕاژەکارەکانی ترەوە نیشان نادرێت.";
"Scene.Following.Footer" = "شوێنکەوتنەکانی بۆ هەژماری ڕاژەکارەکانی تر نیشان نادرێت.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "پۆستە نوێکان ببینە";
"Scene.HomeTimeline.NavigationBarState.Offline" = "دەرهێڵ";
"Scene.HomeTimeline.NavigationBarState.Published" = "بڵاوکرایەوە!";
@@ -291,6 +293,37 @@
"Scene.Report.SkipToSend" = "بەبێ لێدوان بینێرە";
"Scene.Report.Step1" = "هەنگاوی 1 لە 2";
"Scene.Report.Step2" = "هەنگاوی 2 لە 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "ڕوونکردنەوەی زۆرتر بدە";
"Scene.Report.Title" = "سکاڵا لە %@ بکە";
"Scene.Report.TitleReport" = "سکاڵای لێ بکە";
@@ -331,6 +364,7 @@
"Scene.ServerPicker.EmptyState.FindingServers" = "ڕاژەکار دەدۆزرێتەوە...";
"Scene.ServerPicker.EmptyState.NoResults" = "ئەنجام نییە";
"Scene.ServerPicker.Input.Placeholder" = "بگەڕێ";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "بەش";
"Scene.ServerPicker.Label.Language" = "زمان";
"Scene.ServerPicker.Label.Users" = "بەکارهێنەر";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings
index 29845981..7b3af462 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings
@@ -108,7 +108,7 @@ Bitte überprüfe deine Internetverbindung.";
"Common.Controls.Status.MediaContentWarning" = "Tippe irgendwo zum Anzeigen";
"Common.Controls.Status.Poll.Closed" = "Beendet";
"Common.Controls.Status.Poll.Vote" = "Abstimmen";
-"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
+"Common.Controls.Status.SensitiveContent" = "NSFW-Inhalt";
"Common.Controls.Status.ShowPost" = "Beitrag anzeigen";
"Common.Controls.Status.ShowUserProfile" = "Benutzerprofil anzeigen";
"Common.Controls.Status.Tag.Email" = "E-Mail";
@@ -202,7 +202,7 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.ConfirmEmail.Subtitle" = "Wir haben gerade eine E-Mail an %@ gesendet,
tippe darin auf den Link, um Dein Konto zu bestätigen.";
"Scene.ConfirmEmail.Title" = "Noch eine letzte Sache.";
-"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
+"Scene.Discovery.Intro" = "Dies sind die Beiträge, die in deiner Umgebung auf Mastodon beliebter werden.";
"Scene.Discovery.Tabs.Community" = "Community";
"Scene.Discovery.Tabs.ForYou" = "Für dich";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
@@ -211,6 +211,8 @@ tippe darin auf den Link, um Dein Konto zu bestätigen.";
"Scene.Favorite.Title" = "Deine Favoriten";
"Scene.Follower.Footer" = "Follower von anderen Servern werden nicht angezeigt.";
"Scene.Following.Footer" = "Wem das Konto folgt wird von anderen Servern werden nicht angezeigt.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Neue Beiträge anzeigen";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline";
"Scene.HomeTimeline.NavigationBarState.Published" = "Veröffentlicht!";
@@ -293,6 +295,37 @@ tippe darin auf den Link, um Dein Konto zu bestätigen.";
"Scene.Report.SkipToSend" = "Ohne Kommentar abschicken";
"Scene.Report.Step1" = "Schritt 1 von 2";
"Scene.Report.Step2" = "Schritt 2 von 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Zusätzliche Kommentare eingeben oder einfügen";
"Scene.Report.Title" = "%@ melden";
"Scene.Report.TitleReport" = "Melden";
@@ -333,6 +366,7 @@ tippe darin auf den Link, um Dein Konto zu bestätigen.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Verfügbare Server werden gesucht...";
"Scene.ServerPicker.EmptyState.NoResults" = "Keine Ergebnisse";
"Scene.ServerPicker.Input.Placeholder" = "Finde einen Server oder trete deinem eigenen bei...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "KATEGORIE";
"Scene.ServerPicker.Label.Language" = "SPRACHE";
"Scene.ServerPicker.Label.Users" = "BENUTZER";
@@ -389,5 +423,5 @@ beliebigen Server.";
"Scene.Welcome.LogIn" = "Anmelden";
"Scene.Welcome.Slogan" = "Soziale Netzwerke wieder in deinen Händen.";
"Scene.Wizard.AccessibilityHint" = "Doppeltippen, um diesen Assistenten zu schließen";
-"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Wechsel zwischen mehreren Konten durch drücken der Profil-Schaltfläche.";
+"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Wechsel zwischen mehreren Konten durch Drücken der Profil-Schaltfläche.";
"Scene.Wizard.NewInMastodon" = "Neu in Mastodon";
\ No newline at end of file
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings
index fe66593f..91ad3a0e 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings
@@ -210,6 +210,8 @@ uploaded to Mastodon.";
"Scene.Favorite.Title" = "Your Favorites";
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline";
"Scene.HomeTimeline.NavigationBarState.Published" = "Published!";
@@ -292,6 +294,37 @@ uploaded to Mastodon.";
"Scene.Report.SkipToSend" = "Send without comment";
"Scene.Report.Step1" = "Step 1 of 2";
"Scene.Report.Step2" = "Step 2 of 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Type or paste additional comments";
"Scene.Report.Title" = "Report %@";
"Scene.Report.TitleReport" = "Report";
@@ -332,6 +365,7 @@ uploaded to Mastodon.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers...";
"Scene.ServerPicker.EmptyState.NoResults" = "No results";
"Scene.ServerPicker.Input.Placeholder" = "Search servers";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "CATEGORY";
"Scene.ServerPicker.Label.Language" = "LANGUAGE";
"Scene.ServerPicker.Label.Users" = "USERS";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings
index db6cacc3..5b05b535 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings
@@ -203,7 +203,7 @@ y no se puede subir a Mastodon.";
pulsá en el enlace para confirmar tu cuenta.";
"Scene.ConfirmEmail.Title" = "Una última cosa.";
"Scene.Discovery.Intro" = "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon.";
-"Scene.Discovery.Tabs.Community" = "Community";
+"Scene.Discovery.Tabs.Community" = "Comunidad";
"Scene.Discovery.Tabs.ForYou" = "Para vos";
"Scene.Discovery.Tabs.Hashtags" = "Etiquetas";
"Scene.Discovery.Tabs.News" = "Novedades";
@@ -211,6 +211,8 @@ pulsá en el enlace para confirmar tu cuenta.";
"Scene.Favorite.Title" = "Tus favoritos";
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
"Scene.Following.Footer" = "No se muestran las cuentas de otros servidores que seguís.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Ver nuevos mensajes";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Desconectado";
"Scene.HomeTimeline.NavigationBarState.Published" = "¡Enviado!";
@@ -293,6 +295,37 @@ pulsá en el enlace para confirmar tu cuenta.";
"Scene.Report.SkipToSend" = "Enviar sin comentarios";
"Scene.Report.Step1" = "Paso 1 de 2";
"Scene.Report.Step2" = "Paso 2 de 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Escribí o pegá comentarios adicionales";
"Scene.Report.Title" = "Denunciar a %@";
"Scene.Report.TitleReport" = "Denunciar";
@@ -333,6 +366,7 @@ pulsá en el enlace para confirmar tu cuenta.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Buscando servidores disponibles…";
"Scene.ServerPicker.EmptyState.NoResults" = "No hay resultados";
"Scene.ServerPicker.Input.Placeholder" = "Encontrá un servidor o unite al tuyo…";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "CATEGORÍA";
"Scene.ServerPicker.Label.Language" = "IDIOMA";
"Scene.ServerPicker.Label.Users" = "CUENTAS";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings
index 09fba0b4..48b14608 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings
@@ -211,6 +211,8 @@ pulsa en el enlace para confirmar tu cuenta.";
"Scene.Favorite.Title" = "Tus Favoritos";
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
"Scene.Following.Footer" = "No se muestran los seguidos de otros servidores.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Ver nuevas publicaciones";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Sin Conexión";
"Scene.HomeTimeline.NavigationBarState.Published" = "¡Publicado!";
@@ -293,6 +295,37 @@ pulsa en el enlace para confirmar tu cuenta.";
"Scene.Report.SkipToSend" = "Enviar sin comentarios";
"Scene.Report.Step1" = "Paso 1 de 2";
"Scene.Report.Step2" = "Paso 2 de 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Escribe o pega comentarios adicionales";
"Scene.Report.Title" = "Reportar %@";
"Scene.Report.TitleReport" = "Reportar";
@@ -333,6 +366,7 @@ pulsa en el enlace para confirmar tu cuenta.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Encontrando servidores disponibles...";
"Scene.ServerPicker.EmptyState.NoResults" = "Sin resultados";
"Scene.ServerPicker.Input.Placeholder" = "Encuentra un servidor o únete al tuyo propio...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "CATEGORÍA";
"Scene.ServerPicker.Label.Language" = "IDIOMA";
"Scene.ServerPicker.Label.Users" = "USUARIOS";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings
index e682977e..8f2055df 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings
@@ -211,6 +211,8 @@ sakatu kontua berresteko esteka.";
"Scene.Favorite.Title" = "Zure gogokoak";
"Scene.Follower.Footer" = "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen.";
"Scene.Following.Footer" = "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Ikusi bidal. berriak";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Konexio gabe";
"Scene.HomeTimeline.NavigationBarState.Published" = "Argitaratua!";
@@ -293,6 +295,37 @@ sakatu kontua berresteko esteka.";
"Scene.Report.SkipToSend" = "Bidali iruzkinik gabe";
"Scene.Report.Step1" = "1. urratsa 2tik";
"Scene.Report.Step2" = "2. urratsa 2tik";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Idatzi edo itsatsi iruzkin gehigarriak";
"Scene.Report.Title" = "Salatu %@";
"Scene.Report.TitleReport" = "Salatu";
@@ -333,6 +366,7 @@ sakatu kontua berresteko esteka.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Erabilgarri dauden zerbitzariak bilatzen...";
"Scene.ServerPicker.EmptyState.NoResults" = "Emaitzarik ez";
"Scene.ServerPicker.Input.Placeholder" = "Bilatu zerbitzari bat edo sortu zurea...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "KATEGORIA";
"Scene.ServerPicker.Label.Language" = "HIZKUNTZA";
"Scene.ServerPicker.Label.Users" = "ERABILTZAILEAK";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings
index 880612b2..f5c60fcb 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings
@@ -211,6 +211,8 @@ tapotez le lien pour confirmer votre compte.";
"Scene.Favorite.Title" = "Vos favoris";
"Scene.Follower.Footer" = "Les abonné·e·s issus des autres serveurs ne sont pas affiché·e·s.";
"Scene.Following.Footer" = "Les abonnés issus des autres serveurs ne sont pas affichés.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Voir les nouvelles publications";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Hors ligne";
"Scene.HomeTimeline.NavigationBarState.Published" = "Publié!";
@@ -293,6 +295,37 @@ tapotez le lien pour confirmer votre compte.";
"Scene.Report.SkipToSend" = "Envoyer sans commentaire";
"Scene.Report.Step1" = "Étape 1 de 2";
"Scene.Report.Step2" = "Étape 2 de 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Tapez ou collez des informations supplémentaires";
"Scene.Report.Title" = "Signaler %@";
"Scene.Report.TitleReport" = "Signalement";
@@ -333,6 +366,7 @@ tapotez le lien pour confirmer votre compte.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Recherche des serveurs disponibles...";
"Scene.ServerPicker.EmptyState.NoResults" = "Aucun résultat";
"Scene.ServerPicker.Input.Placeholder" = "Trouvez un serveur ou rejoignez le vôtre...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "CATÉGORIE";
"Scene.ServerPicker.Label.Language" = "LANGUE";
"Scene.ServerPicker.Label.Users" = "UTILISATEUR·RICE·S";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings
index 586258e5..a1576bb9 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings
@@ -203,7 +203,7 @@ a luchdadh suas gu Mastodon.";
thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.";
"Scene.ConfirmEmail.Title" = "Aon rud eile.";
"Scene.Discovery.Intro" = "Seo na postaichean fèillmhor ’nad cheàrnaidh de Mhastodon.";
-"Scene.Discovery.Tabs.Community" = "Community";
+"Scene.Discovery.Tabs.Community" = "Coimhearsnachd";
"Scene.Discovery.Tabs.ForYou" = "Dhut-sa";
"Scene.Discovery.Tabs.Hashtags" = "Tagaichean hais";
"Scene.Discovery.Tabs.News" = "Naidheachdan";
@@ -211,6 +211,8 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.";
"Scene.Favorite.Title" = "Na h-annsachdan agad";
"Scene.Follower.Footer" = "Cha dèid luchd-leantainn o fhrithealaichean eile a shealltainn.";
"Scene.Following.Footer" = "Cha dèid cò air a leanas tu air frithealaichean eile a shealltainn.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Seall na postaichean ùra";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Far loidhne";
"Scene.HomeTimeline.NavigationBarState.Published" = "Chaidh fhoillseachadh!";
@@ -293,6 +295,37 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.";
"Scene.Report.SkipToSend" = "Cuir gun bheachd ris";
"Scene.Report.Step1" = "Ceum 1 à 2";
"Scene.Report.Step2" = "Ceum 2 à 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Sgrìobh no cuir ann beachdan a bharrachd";
"Scene.Report.Title" = "Dèan gearan mu %@";
"Scene.Report.TitleReport" = "Dèan gearan";
@@ -333,6 +366,7 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.";
"Scene.ServerPicker.EmptyState.FindingServers" = "A’ lorg nam frithealaichean ri am faighinn…";
"Scene.ServerPicker.EmptyState.NoResults" = "Gun toradh";
"Scene.ServerPicker.Input.Placeholder" = "Lorg frithealaiche no gabh pàirt san fhear agad fhèin…";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "ROINN-SEÒRSA";
"Scene.ServerPicker.Label.Language" = "CÀNAN";
"Scene.ServerPicker.Label.Users" = "CLEACHDAICHEAN";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.strings
index a0a33a58..9aa91893 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.strings
@@ -129,26 +129,26 @@ Comproba a conexión a internet.";
"Common.Controls.Tabs.Profile" = "Perfil";
"Common.Controls.Tabs.Search" = "Busca";
"Common.Controls.Timeline.Filtered" = "Filtrado";
-"Common.Controls.Timeline.Header.BlockedWarning" = "You can’t view this user’s profile
-until they unblock you.";
+"Common.Controls.Timeline.Header.BlockedWarning" = "Non podes ver o perfil desta usuaria
+ata que te desbloquee.";
"Common.Controls.Timeline.Header.BlockingWarning" = "Non podes ver o perfil da usuaria
ata que a desbloquees.
Así ven outras o teu perfil.";
"Common.Controls.Timeline.Header.NoStatusFound" = "Non se atopa a publicación";
-"Common.Controls.Timeline.Header.SuspendedWarning" = "This user has been suspended.";
-"Common.Controls.Timeline.Header.UserBlockedWarning" = "You can’t view %@’s profile
-until they unblock you.";
-"Common.Controls.Timeline.Header.UserBlockingWarning" = "You can’t view %@’s profile
-until you unblock them.
-Your profile looks like this to them.";
-"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@’s account has been suspended.";
+"Common.Controls.Timeline.Header.SuspendedWarning" = "Esta usuaria foi suspendida.";
+"Common.Controls.Timeline.Header.UserBlockedWarning" = "Non podes ver o perfil de %@
+ata que te desbloquee.";
+"Common.Controls.Timeline.Header.UserBlockingWarning" = "Non podes ver o perfil de %@
+ata que o desbloquees.
+Así se ve o teu perfil.";
+"Common.Controls.Timeline.Header.UserSuspendedWarning" = "A conta de %@ foi suspendida.";
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Cargar publicacións que faltan";
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Cargando as publicacións que faltan...";
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostrar máis respostas";
"Common.Controls.Timeline.Timestamp.Now" = "Agora";
-"Scene.AccountList.AddAccount" = "Add Account";
-"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
-"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
+"Scene.AccountList.AddAccount" = "Engadir conta";
+"Scene.AccountList.DismissAccountSwitcher" = "Desbotar intercambiador de contas";
+"Scene.AccountList.TabBarHint" = "Perfil seleccionado: %@. Dobre toque e manter para mostrar o intercambiador de contas";
"Scene.Compose.Accessibility.AppendAttachment" = "Engadir anexo";
"Scene.Compose.Accessibility.AppendPoll" = "Engadir enquisa";
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector emoji personalizado";
@@ -156,15 +156,15 @@ Your profile looks like this to them.";
"Scene.Compose.Accessibility.EnableContentWarning" = "Marcar con Aviso sobre o contido";
"Scene.Compose.Accessibility.PostVisibilityMenu" = "Visibilidade da publicación";
"Scene.Compose.Accessibility.RemovePoll" = "Eliminar enquisa";
-"Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be
-uploaded to Mastodon.";
-"Scene.Compose.Attachment.DescriptionPhoto" = "Describe the photo for the visually-impaired...";
-"Scene.Compose.Attachment.DescriptionVideo" = "Describe the video for the visually-impaired...";
-"Scene.Compose.Attachment.Photo" = "photo";
-"Scene.Compose.Attachment.Video" = "video";
+"Scene.Compose.Attachment.AttachmentBroken" = "Este %@ está estragado e non pode
+ser subido a Mastodon.";
+"Scene.Compose.Attachment.DescriptionPhoto" = "Describe a foto para persoas con problemas visuais...";
+"Scene.Compose.Attachment.DescriptionVideo" = "Describe o vídeo para persoas con problemas visuais...";
+"Scene.Compose.Attachment.Photo" = "foto";
+"Scene.Compose.Attachment.Video" = "vídeo";
"Scene.Compose.AutoComplete.SpaceToAdd" = "Barra de espazo engade";
-"Scene.Compose.ComposeAction" = "Publish";
-"Scene.Compose.ContentInputPlaceholder" = "Type or paste what’s on your mind";
+"Scene.Compose.ComposeAction" = "Publicar";
+"Scene.Compose.ContentInputPlaceholder" = "Escribe o que che apeteza";
"Scene.Compose.ContentWarning.Placeholder" = "Escribe o teu aviso aquí...";
"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Engadir anexo - %@";
"Scene.Compose.Keyboard.DiscardPost" = "Descartar publicación";
@@ -172,59 +172,61 @@ uploaded to Mastodon.";
"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Elexir visibilidade - %@";
"Scene.Compose.Keyboard.ToggleContentWarning" = "Marcar con Aviso sobre o contido";
"Scene.Compose.Keyboard.TogglePoll" = "Activar enquisa";
-"Scene.Compose.MediaSelection.Browse" = "Browse";
-"Scene.Compose.MediaSelection.Camera" = "Take Photo";
-"Scene.Compose.MediaSelection.PhotoLibrary" = "Photo Library";
-"Scene.Compose.Poll.DurationTime" = "Duration: %@";
+"Scene.Compose.MediaSelection.Browse" = "Explorar";
+"Scene.Compose.MediaSelection.Camera" = "Facer foto";
+"Scene.Compose.MediaSelection.PhotoLibrary" = "Biblioteca de fotos";
+"Scene.Compose.Poll.DurationTime" = "Duración: %@";
"Scene.Compose.Poll.OneDay" = "1 Día";
-"Scene.Compose.Poll.OneHour" = "1 Hour";
+"Scene.Compose.Poll.OneHour" = "1 Hora";
"Scene.Compose.Poll.OptionNumber" = "Opción %ld";
"Scene.Compose.Poll.SevenDays" = "7 Días";
-"Scene.Compose.Poll.SixHours" = "6 Hours";
-"Scene.Compose.Poll.ThirtyMinutes" = "30 minutes";
+"Scene.Compose.Poll.SixHours" = "6 Horas";
+"Scene.Compose.Poll.ThirtyMinutes" = "30 minutos";
"Scene.Compose.Poll.ThreeDays" = "3 Días";
-"Scene.Compose.ReplyingToUser" = "replying to %@";
-"Scene.Compose.Title.NewPost" = "New Post";
-"Scene.Compose.Title.NewReply" = "New Reply";
+"Scene.Compose.ReplyingToUser" = "en resposta a %@";
+"Scene.Compose.Title.NewPost" = "Nova publicación";
+"Scene.Compose.Title.NewReply" = "Nova resposta";
"Scene.Compose.Visibility.Direct" = "Só para persoas mencionadas";
"Scene.Compose.Visibility.Private" = "Só para seguidoras";
"Scene.Compose.Visibility.Public" = "Público";
"Scene.Compose.Visibility.Unlisted" = "Non listado";
-"Scene.ConfirmEmail.Button.OpenEmailApp" = "Open Email App";
-"Scene.ConfirmEmail.Button.Resend" = "Resend";
-"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t.";
-"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email";
-"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email";
-"Scene.ConfirmEmail.OpenEmailApp.Description" = "We just sent you an email. Check your junk folder if you haven’t.";
-"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail";
-"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client";
-"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox.";
-"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account.";
-"Scene.ConfirmEmail.Title" = "One last thing.";
-"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
+"Scene.ConfirmEmail.Button.OpenEmailApp" = "Abrir app de email";
+"Scene.ConfirmEmail.Button.Resend" = "Reenviar";
+"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Comproba que o enderezo de email é correcto e que non vaia directo ao cartafol de spam.";
+"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Volver enviar o correo";
+"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Revisa o teu correo";
+"Scene.ConfirmEmail.OpenEmailApp.Description" = "Enviámosche un email. Se non aparece, mira no cartafol do lixo.";
+"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Correo";
+"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Abrir cliente de email";
+"Scene.ConfirmEmail.OpenEmailApp.Title" = "Mira na caixa de correo.";
+"Scene.ConfirmEmail.Subtitle" = "Preme na ligazón que che enviamos ao email para verificar a conta.";
+"Scene.ConfirmEmail.Title" = "O último detalle.";
+"Scene.Discovery.Intro" = "Estas son as publicacións en voga no teu recuncho de Mastodon.";
"Scene.Discovery.Tabs.Community" = "Comunidade";
-"Scene.Discovery.Tabs.ForYou" = "For You";
+"Scene.Discovery.Tabs.ForYou" = "Para ti";
"Scene.Discovery.Tabs.Hashtags" = "Cancelos";
"Scene.Discovery.Tabs.News" = "Novas";
"Scene.Discovery.Tabs.Posts" = "Publicacións";
-"Scene.Favorite.Title" = "Your Favorites";
+"Scene.Favorite.Title" = "Publicacións Favoritas";
"Scene.Follower.Footer" = "Non se mostran seguidoras desde outros servidores.";
"Scene.Following.Footer" = "Non se mostran os seguimentos desde outros servidores.";
-"Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts";
-"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline";
-"Scene.HomeTimeline.NavigationBarState.Published" = "Published!";
-"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post...";
-"Scene.HomeTimeline.Title" = "Home";
-"Scene.Notification.Keyobard.ShowEverything" = "Show Everything";
-"Scene.Notification.Keyobard.ShowMentions" = "Show Mentions";
-"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post";
-"Scene.Notification.NotificationDescription.FollowedYou" = "followed you";
-"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you";
-"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended";
-"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post";
-"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you";
-"Scene.Notification.Title.Everything" = "Everything";
-"Scene.Notification.Title.Mentions" = "Mentions";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
+"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Novas publicacións";
+"Scene.HomeTimeline.NavigationBarState.Offline" = "Sen conexión";
+"Scene.HomeTimeline.NavigationBarState.Published" = "Publicado!";
+"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publicando...";
+"Scene.HomeTimeline.Title" = "Inicio";
+"Scene.Notification.Keyobard.ShowEverything" = "Mostrar Todo";
+"Scene.Notification.Keyobard.ShowMentions" = "Mostrar mencións";
+"Scene.Notification.NotificationDescription.FavoritedYourPost" = "marcou a túa publicación como favorita";
+"Scene.Notification.NotificationDescription.FollowedYou" = "séguete";
+"Scene.Notification.NotificationDescription.MentionedYou" = "mencionoute";
+"Scene.Notification.NotificationDescription.PollHasEnded" = "a enquisa rematou";
+"Scene.Notification.NotificationDescription.RebloggedYourPost" = "compartiu a túa publicación";
+"Scene.Notification.NotificationDescription.RequestToFollowYou" = "solicitou seguirte";
+"Scene.Notification.Title.Everything" = "Todo";
+"Scene.Notification.Title.Mentions" = "Mencións";
"Scene.Preview.Keyboard.ClosePreview" = "Pechar vista previa";
"Scene.Preview.Keyboard.ShowNext" = "Mostrar Seguinte";
"Scene.Preview.Keyboard.ShowPrevious" = "Mostar Anterior";
@@ -267,10 +269,10 @@ uploaded to Mastodon.";
"Scene.Register.Error.Reason.TooLong" = "%@ é demasiado longo";
"Scene.Register.Error.Reason.TooShort" = "%@ é demasiado curto";
"Scene.Register.Error.Reason.Unreachable" = "%@ semella que non existe";
-"Scene.Register.Error.Special.EmailInvalid" = "This is not a valid email address";
-"Scene.Register.Error.Special.PasswordTooShort" = "Password is too short (must be at least 8 characters)";
+"Scene.Register.Error.Special.EmailInvalid" = "Este non é un enderezo válido de email";
+"Scene.Register.Error.Special.PasswordTooShort" = "O contrasinal é demasiado curto (debe ter 8 caracteres como mínimo)";
"Scene.Register.Error.Special.UsernameInvalid" = "O nome de usuaria só pode ter caracteres alfanuméricos e trazos baixos";
-"Scene.Register.Error.Special.UsernameTooLong" = "Username is too long (can’t be longer than 30 characters)";
+"Scene.Register.Error.Special.UsernameTooLong" = "O nome de usuaria é demasiado longo (maior de 30 caracteres)";
"Scene.Register.Input.Avatar.Delete" = "Eliminar";
"Scene.Register.Input.DisplayName.Placeholder" = "nome público";
"Scene.Register.Input.Email.Placeholder" = "email";
@@ -292,6 +294,37 @@ uploaded to Mastodon.";
"Scene.Report.SkipToSend" = "Enviar sen comentarios";
"Scene.Report.Step1" = "Paso 1 de 2";
"Scene.Report.Step2" = "Paso 2 de 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Escribe ou pega comentarios adicionais";
"Scene.Report.Title" = "Denunciar a %@";
"Scene.Report.TitleReport" = "Denunciar";
@@ -332,61 +365,62 @@ uploaded to Mastodon.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Buscando servidores dispoñibles...";
"Scene.ServerPicker.EmptyState.NoResults" = "Sen resultados";
"Scene.ServerPicker.Input.Placeholder" = "Buscar comunidades";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "CATEGORÍA";
"Scene.ServerPicker.Label.Language" = "IDIOMA";
"Scene.ServerPicker.Label.Users" = "USUARIAS";
"Scene.ServerPicker.Subtitle" = "Elixe unha comunidade en función dos teus intereses, rexión ou unha de propósito xeral.";
"Scene.ServerPicker.SubtitleExtend" = "Elixe unha comunidade en función dos teus intereses, rexión ou unha de propósito xeral. Cada comunidade está xestionada por unha organización totalmente independente ou unha única persoa.";
"Scene.ServerPicker.Title" = "Mastodon fórmano as persoas das diferentes comunidades.";
-"Scene.ServerRules.Button.Confirm" = "I Agree";
-"Scene.ServerRules.PrivacyPolicy" = "privacy policy";
-"Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@.";
-"Scene.ServerRules.Subtitle" = "These are set and enforced by the %@ moderators.";
-"Scene.ServerRules.TermsOfService" = "terms of service";
-"Scene.ServerRules.Title" = "Some ground rules.";
-"Scene.Settings.Footer.MastodonDescription" = "Mastodon is open source software. You can report issues on GitHub at %@ (%@)";
-"Scene.Settings.Keyboard.CloseSettingsWindow" = "Close Settings Window";
-"Scene.Settings.Section.Appearance.Automatic" = "Automatic";
-"Scene.Settings.Section.Appearance.Dark" = "Always Dark";
-"Scene.Settings.Section.Appearance.Light" = "Always Light";
-"Scene.Settings.Section.Appearance.Title" = "Appearance";
-"Scene.Settings.Section.BoringZone.AccountSettings" = "Account Settings";
-"Scene.Settings.Section.BoringZone.Privacy" = "Privacy Policy";
-"Scene.Settings.Section.BoringZone.Terms" = "Terms of Service";
-"Scene.Settings.Section.BoringZone.Title" = "The Boring Zone";
-"Scene.Settings.Section.LookAndFeel.Light" = "Light";
-"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark";
-"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark";
-"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel";
-"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System";
-"Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post";
-"Scene.Settings.Section.Notifications.Favorites" = "Favorites my post";
-"Scene.Settings.Section.Notifications.Follows" = "Follows me";
-"Scene.Settings.Section.Notifications.Mentions" = "Mentions me";
-"Scene.Settings.Section.Notifications.Title" = "Notifications";
-"Scene.Settings.Section.Notifications.Trigger.Anyone" = "anyone";
-"Scene.Settings.Section.Notifications.Trigger.Follow" = "anyone I follow";
-"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower";
-"Scene.Settings.Section.Notifications.Trigger.Noone" = "no one";
-"Scene.Settings.Section.Notifications.Trigger.Title" = "Notify me when";
-"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Disable animated avatars";
-"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Disable animated emojis";
-"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
-"Scene.Settings.Section.Preference.Title" = "Preferences";
-"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "True black dark mode";
-"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Use default browser to open links";
-"Scene.Settings.Section.SpicyZone.Clear" = "Clear Media Cache";
-"Scene.Settings.Section.SpicyZone.Signout" = "Sign Out";
-"Scene.Settings.Section.SpicyZone.Title" = "The Spicy Zone";
-"Scene.Settings.Title" = "Settings";
-"Scene.SuggestionAccount.FollowExplain" = "When you follow someone, you’ll see their posts in your home feed.";
-"Scene.SuggestionAccount.Title" = "Find People to Follow";
-"Scene.Thread.BackTitle" = "Post";
-"Scene.Thread.Title" = "Post from %@";
+"Scene.ServerRules.Button.Confirm" = "Acepto";
+"Scene.ServerRules.PrivacyPolicy" = "polícica de privacidade";
+"Scene.ServerRules.Prompt" = "Ao continuar, acatas os termos do servizo e a política de privacidade para %@.";
+"Scene.ServerRules.Subtitle" = "Son establecidas e aplicadas pola moderación de %@.";
+"Scene.ServerRules.TermsOfService" = "termos do servizo";
+"Scene.ServerRules.Title" = "Algunhas regras básicas.";
+"Scene.Settings.Footer.MastodonDescription" = "Mastodon é software de código aberto. Podes informar de fallos en GitHub en %@ (%@)";
+"Scene.Settings.Keyboard.CloseSettingsWindow" = "Pechar ventá de axustes";
+"Scene.Settings.Section.Appearance.Automatic" = "Automático";
+"Scene.Settings.Section.Appearance.Dark" = "Sempre escuro";
+"Scene.Settings.Section.Appearance.Light" = "Sempre claro";
+"Scene.Settings.Section.Appearance.Title" = "Aparencia";
+"Scene.Settings.Section.BoringZone.AccountSettings" = "Axustes da conta";
+"Scene.Settings.Section.BoringZone.Privacy" = "Política de Privacidade";
+"Scene.Settings.Section.BoringZone.Terms" = "Termos do Servizo";
+"Scene.Settings.Section.BoringZone.Title" = "A zona aburrida";
+"Scene.Settings.Section.LookAndFeel.Light" = "Claro";
+"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Realmente escuro";
+"Scene.Settings.Section.LookAndFeel.SortaDark" = "Algo escuro";
+"Scene.Settings.Section.LookAndFeel.Title" = "Aparencia";
+"Scene.Settings.Section.LookAndFeel.UseSystem" = "Seguir o sistema";
+"Scene.Settings.Section.Notifications.Boosts" = "Promove a miña publicación";
+"Scene.Settings.Section.Notifications.Favorites" = "Favorece a miña publicación";
+"Scene.Settings.Section.Notifications.Follows" = "Me segue";
+"Scene.Settings.Section.Notifications.Mentions" = "Me menciona";
+"Scene.Settings.Section.Notifications.Title" = "Notificacións";
+"Scene.Settings.Section.Notifications.Trigger.Anyone" = "calquera";
+"Scene.Settings.Section.Notifications.Trigger.Follow" = "alguén a quen sigo";
+"Scene.Settings.Section.Notifications.Trigger.Follower" = "unha seguidora";
+"Scene.Settings.Section.Notifications.Trigger.Noone" = "ninguén";
+"Scene.Settings.Section.Notifications.Trigger.Title" = "Avisarme cando";
+"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desactivar avatares animados";
+"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desactivar emojis animados";
+"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Abrir ligazóns en Mastodon";
+"Scene.Settings.Section.Preference.Title" = "Preferencias";
+"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Modo negro verdadeiro";
+"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Usar navegador por defecto para as ligazóns";
+"Scene.Settings.Section.SpicyZone.Clear" = "Limpar caché multimedia";
+"Scene.Settings.Section.SpicyZone.Signout" = "Pechar sesión";
+"Scene.Settings.Section.SpicyZone.Title" = "A zona picante";
+"Scene.Settings.Title" = "Axustes";
+"Scene.SuggestionAccount.FollowExplain" = "Cando sigas a alguén verás as súas publicacións na cronoloxía de inicio.";
+"Scene.SuggestionAccount.Title" = "Atopar persoas para seguir";
+"Scene.Thread.BackTitle" = "Publicación";
+"Scene.Thread.Title" = "Publicación de %@";
"Scene.Welcome.GetStarted" = "Comezar";
"Scene.Welcome.LogIn" = "Acceder";
-"Scene.Welcome.Slogan" = "Social networking
-back in your hands.";
-"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
-"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
-"Scene.Wizard.NewInMastodon" = "New in Mastodon";
\ No newline at end of file
+"Scene.Welcome.Slogan" = "Comunicación social
+de volta ás túas mans.";
+"Scene.Wizard.AccessibilityHint" = "Dobre toque para desbotar este asistente";
+"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Cambia dunha conta a outra mantendo preso o botón do perfil.";
+"Scene.Wizard.NewInMastodon" = "Novidade en Mastodon";
\ No newline at end of file
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.stringsdict
index 503ff9db..a67c938a 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.stringsdict
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/gl.lproj/Localizable.stringsdict
@@ -13,15 +13,15 @@
NSStringFormatValueTypeKey
ld
one
- 1 unread notification
+ 1 notificación non lida
other
- %ld unread notification
+ %ld notificacións non lidas
a11y.plural.count.input_limit_exceeds
NSStringLocalizedFormatKey
- Input limit exceeds %#@character_count@
+ O límite supera %#@character_count@
character_count
NSStringFormatSpecTypeKey
@@ -29,15 +29,15 @@
NSStringFormatValueTypeKey
ld
one
- 1 character
+ 1 caracter
other
- %ld characters
+ %ld caracteres
a11y.plural.count.input_limit_remains
NSStringLocalizedFormatKey
- Input limit remains %#@character_count@
+ O límite de entrada mantense en %#@character_count@
character_count
NSStringFormatSpecTypeKey
@@ -45,9 +45,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 character
+ 1 caracter
other
- %ld characters
+ %ld caracteres
plural.count.metric_formatted.post
@@ -61,9 +61,9 @@
NSStringFormatValueTypeKey
ld
one
- post
+ publicación
other
- posts
+ publicacións
plural.count.post
@@ -77,9 +77,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 post
+ 1 publicación
other
- %ld posts
+ %ld publicacións
plural.count.favorite
@@ -93,9 +93,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 favorite
+ 1 favorito
other
- %ld favorites
+ %ld favoritos
plural.count.reblog
@@ -109,9 +109,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 reblog
+ 1 promoción
other
- %ld reblogs
+ %ld promocións
plural.count.reply
@@ -125,9 +125,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 reply
+ 1 resposta
other
- %ld replies
+ %ld respostas
plural.count.vote
@@ -141,9 +141,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 vote
+ 1 voto
other
- %ld votes
+ %ld votos
plural.count.voter
@@ -157,9 +157,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 voter
+ 1 votante
other
- %ld voters
+ %ld votantes
plural.people_talking
@@ -173,9 +173,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 people talking
+ 1 persoa comentando
other
- %ld people talking
+ %ld persoas comentando
plural.count.following
@@ -189,9 +189,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 following
+ 1 seguimento
other
- %ld following
+ %ld seguimentos
plural.count.follower
@@ -205,9 +205,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 follower
+ 1 seguidora
other
- %ld followers
+ %ld seguidoras
date.year.left
@@ -221,9 +221,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 year left
+ Queda 1 ano
other
- %ld years left
+ Quedan %ld anos
date.month.left
@@ -237,9 +237,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 months left
+ Queda 1 mes
other
- %ld months left
+ Quedan %ld meses
date.day.left
@@ -253,9 +253,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 day left
+ Queda 1 día
other
- %ld days left
+ Quedan %ld días
date.hour.left
@@ -269,9 +269,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 hour left
+ Queda 1 hora
other
- %ld hours left
+ Quedan %ld horas
date.minute.left
@@ -285,9 +285,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 minute left
+ Queda 1 minuto
other
- %ld minutes left
+ Quedan %ld minutos
date.second.left
@@ -301,9 +301,9 @@
NSStringFormatValueTypeKey
ld
one
- 1 second left
+ Queda 1 segundo
other
- %ld seconds left
+ Quedan %ld segundos
date.year.ago.abbr
@@ -317,9 +317,9 @@
NSStringFormatValueTypeKey
ld
one
- 1y ago
+ hai 1 ano
other
- %ldy ago
+ hai %ld anos
date.month.ago.abbr
@@ -333,9 +333,9 @@
NSStringFormatValueTypeKey
ld
one
- 1M ago
+ hai 1 mes
other
- %ldM ago
+ hai %ld meses
date.day.ago.abbr
@@ -349,9 +349,9 @@
NSStringFormatValueTypeKey
ld
one
- 1d ago
+ hai 1 día
other
- %ldd ago
+ hai %ld días
date.hour.ago.abbr
@@ -365,9 +365,9 @@
NSStringFormatValueTypeKey
ld
one
- 1h ago
+ fai 1 hora
other
- %ldh ago
+ fai %ld horas
date.minute.ago.abbr
@@ -381,9 +381,9 @@
NSStringFormatValueTypeKey
ld
one
- 1m ago
+ fai 1 minuto
other
- %ldm ago
+ fai %ld minutos
date.second.ago.abbr
@@ -397,9 +397,9 @@
NSStringFormatValueTypeKey
ld
one
- 1s ago
+ fai 1 seg.
other
- %lds ago
+ fai %ld seg.
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/it.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/it.lproj/Localizable.strings
index 8a80b11d..38b0ed65 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/it.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/it.lproj/Localizable.strings
@@ -210,6 +210,8 @@ caricato su Mastodon.";
"Scene.Favorite.Title" = "I tuoi preferiti";
"Scene.Follower.Footer" = "I seguaci da altri server non vengono visualizzati.";
"Scene.Following.Footer" = "I follow da altri server non vengono visualizzati.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tocca per scorrere verso l'alto e tocca di nuovo verso la posizione precedente";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Pulsante Logo";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Vedi nuovi post";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Non in linea";
"Scene.HomeTimeline.NavigationBarState.Published" = "Pubblicato!";
@@ -292,6 +294,37 @@ caricato su Mastodon.";
"Scene.Report.SkipToSend" = "Invia senza commento";
"Scene.Report.Step1" = "Fase 1 di 2";
"Scene.Report.Step2" = "Fase 2 di 2";
+"Scene.Report.StepFinal.BlockUser" = "Blocca %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Non vuoi vedere questo?";
+"Scene.Report.StepFinal.MuteUser" = "Silenzia %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "Non saranno più in grado di seguire o vedere i tuoi post, ma possono vedere se sono stati bloccati.";
+"Scene.Report.StepFinal.Unfollow" = "Smetti di seguire";
+"Scene.Report.StepFinal.UnfollowUser" = "Smetti di seguire %@";
+"Scene.Report.StepFinal.Unfollowed" = "Non seguito";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "Quando vedi qualcosa che non ti piace su Mastodon, puoi rimuovere la persona dalla tua esperienza.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "Non vedrai i loro post o le condivisioni nel tuo feed. Non sapranno di essere stati silenziati.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "C'è altro che dovremmo sapere?";
+"Scene.Report.StepFour.Step4Of4" = "Fase 4 di 4";
+"Scene.Report.StepOne.IDontLikeIt" = "Non mi piace";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "È qualcosa che non vuoi vedere";
+"Scene.Report.StepOne.ItViolatesServerRules" = "Viola le regole del server";
+"Scene.Report.StepOne.ItsSomethingElse" = "È qualcos'altro";
+"Scene.Report.StepOne.ItsSpam" = "È spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Collegamenti malevoli, false interazioni o risposte ripetitive";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Scegli la migliore corrispondenza";
+"Scene.Report.StepOne.Step1Of4" = "Fase 1 di 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "Il problema non rientra in altre categorie";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "Cosa c'è che non va con questo account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "Cosa c'è che non va con questo post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "Cosa c'è che non va con %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "Sei consapevole che violi regole specifiche";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Ci sono post a sostegno di questa segnalazione?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Seleziona tutte le risposte pertinenti";
+"Scene.Report.StepThree.Step3Of4" = "Fase 3 di 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "Non mi piace";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Seleziona tutte le risposte pertinenti";
+"Scene.Report.StepTwo.Step2Of4" = "Fase 2 di 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Quali regole vengono violate?";
"Scene.Report.TextPlaceholder" = "Digita o incolla commenti aggiuntivi";
"Scene.Report.Title" = "Segnala %@";
"Scene.Report.TitleReport" = "Segnala";
@@ -332,6 +365,7 @@ caricato su Mastodon.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Ricerca server disponibili...";
"Scene.ServerPicker.EmptyState.NoResults" = "Nessun risultato";
"Scene.ServerPicker.Input.Placeholder" = "Cerca comunità";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Cerca comunità o inserisci l'URL";
"Scene.ServerPicker.Label.Category" = "CATEGORIA";
"Scene.ServerPicker.Label.Language" = "LINGUA";
"Scene.ServerPicker.Label.Users" = "UTENTI";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings
index 19056cf5..d746c196 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings
@@ -4,8 +4,8 @@
"Common.Alerts.CleanCache.Title" = "キャッシュを消去";
"Common.Alerts.Common.PleaseTryAgain" = "もう一度お試しください。";
"Common.Alerts.Common.PleaseTryAgainLater" = "後でもう一度お試しください。";
-"Common.Alerts.DeletePost.Message" = "本当に削除しますか?";
-"Common.Alerts.DeletePost.Title" = "この投稿を消去しますか?";
+"Common.Alerts.DeletePost.Message" = "本当にこの投稿を削除しますか?";
+"Common.Alerts.DeletePost.Title" = "投稿を削除";
"Common.Alerts.DiscardPostContent.Message" = "この操作は取り消しできません。下書きは失われます。";
"Common.Alerts.DiscardPostContent.Title" = "投稿を破棄しますか?";
"Common.Alerts.EditProfileFailure.Message" = "プロフィールを編集できません。もう一度お試しください。";
@@ -32,13 +32,13 @@
"Common.Controls.Actions.Confirm" = "確認";
"Common.Controls.Actions.Continue" = "続ける";
"Common.Controls.Actions.CopyPhoto" = "写真をコピー";
-"Common.Controls.Actions.Delete" = "消去";
+"Common.Controls.Actions.Delete" = "削除";
"Common.Controls.Actions.Discard" = "破棄";
"Common.Controls.Actions.Done" = "完了";
"Common.Controls.Actions.Edit" = "編集";
"Common.Controls.Actions.FindPeople" = "フォローする人を見つける";
"Common.Controls.Actions.ManuallySearch" = "手動で検索する";
-"Common.Controls.Actions.Next" = "次";
+"Common.Controls.Actions.Next" = "次へ";
"Common.Controls.Actions.Ok" = "OK";
"Common.Controls.Actions.Open" = "開く";
"Common.Controls.Actions.OpenInBrowser" = "ブラウザで開く";
@@ -98,8 +98,8 @@
"Common.Controls.Status.Actions.Menu" = "メニュー";
"Common.Controls.Status.Actions.Reblog" = "ブースト";
"Common.Controls.Status.Actions.Reply" = "返信";
-"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
-"Common.Controls.Status.Actions.ShowImage" = "Show image";
+"Common.Controls.Status.Actions.ShowGif" = "GIFを表示";
+"Common.Controls.Status.Actions.ShowImage" = "画像を表示";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
"Common.Controls.Status.Actions.Unfavorite" = "お気に入り登録を取り消す";
@@ -117,7 +117,7 @@
"Common.Controls.Status.Tag.Link" = "リンク";
"Common.Controls.Status.Tag.Mention" = "メンション";
"Common.Controls.Status.Tag.Url" = "URL";
-"Common.Controls.Status.TapToReveal" = "Tap to reveal";
+"Common.Controls.Status.TapToReveal" = "タップして表示";
"Common.Controls.Status.UserReblogged" = "%@がブースト";
"Common.Controls.Status.UserRepliedTo" = "%@に返信";
"Common.Controls.Status.Visibility.Direct" = "この投稿はメンションされたユーザーに限り見ることができます。";
@@ -196,15 +196,17 @@
"Scene.ConfirmEmail.OpenEmailApp.Title" = "メールを確認";
"Scene.ConfirmEmail.Subtitle" = "先程 %@ にメールを送信しました。リンクをタップしてアカウントを確認してください。";
"Scene.ConfirmEmail.Title" = "さいごにもうひとつ。";
-"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
-"Scene.Discovery.Tabs.Community" = "Community";
-"Scene.Discovery.Tabs.ForYou" = "For You";
+"Scene.Discovery.Intro" = "あなたのMastodonサーバーで注目を集めている投稿がここに表示されます。";
+"Scene.Discovery.Tabs.Community" = "コミュニティ";
+"Scene.Discovery.Tabs.ForYou" = "おすすめ";
"Scene.Discovery.Tabs.Hashtags" = "ハッシュタグ";
"Scene.Discovery.Tabs.News" = "ニュース";
"Scene.Discovery.Tabs.Posts" = "投稿";
"Scene.Favorite.Title" = "お気に入り";
"Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。";
"Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "新しい投稿を見る";
"Scene.HomeTimeline.NavigationBarState.Offline" = "オフライン";
"Scene.HomeTimeline.NavigationBarState.Published" = "投稿しました!";
@@ -212,12 +214,12 @@
"Scene.HomeTimeline.Title" = "ホーム";
"Scene.Notification.Keyobard.ShowEverything" = "すべて見る";
"Scene.Notification.Keyobard.ShowMentions" = "メンションを見る";
-"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post";
-"Scene.Notification.NotificationDescription.FollowedYou" = "followed you";
-"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you";
-"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended";
-"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post";
-"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you";
+"Scene.Notification.NotificationDescription.FavoritedYourPost" = "さんがあなたの投稿をお気に入りに登録しました";
+"Scene.Notification.NotificationDescription.FollowedYou" = "さんにフォローされました";
+"Scene.Notification.NotificationDescription.MentionedYou" = "さんがあなたに返信しました";
+"Scene.Notification.NotificationDescription.PollHasEnded" = "アンケートが終了しました";
+"Scene.Notification.NotificationDescription.RebloggedYourPost" = "さんがあなたの投稿をブーストしました";
+"Scene.Notification.NotificationDescription.RequestToFollowYou" = "さんがあなたにフォローリクエストしました";
"Scene.Notification.Title.Everything" = "すべて";
"Scene.Notification.Title.Mentions" = "メンション";
"Scene.Preview.Keyboard.ClosePreview" = "プレビューを閉じる";
@@ -266,7 +268,7 @@
"Scene.Register.Error.Special.PasswordTooShort" = "パスワードが短すぎます(8文字以上)";
"Scene.Register.Error.Special.UsernameInvalid" = "ユーザーネームには、英数字とアンダースコアのみを使用してください。";
"Scene.Register.Error.Special.UsernameTooLong" = "ユーザー名が長すぎます(30文字以内)";
-"Scene.Register.Input.Avatar.Delete" = "消去";
+"Scene.Register.Input.Avatar.Delete" = "削除";
"Scene.Register.Input.DisplayName.Placeholder" = "表示名";
"Scene.Register.Input.Email.Placeholder" = "メール";
"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "なぜ参加したいと思ったのですか?";
@@ -287,6 +289,37 @@
"Scene.Report.SkipToSend" = "コメントなしで送信";
"Scene.Report.Step1" = "ステップ 1/2";
"Scene.Report.Step2" = "ステップ 2/2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "追加コメントを入力";
"Scene.Report.Title" = "%@を通報";
"Scene.Report.TitleReport" = "報告する";
@@ -327,6 +360,7 @@
"Scene.ServerPicker.EmptyState.FindingServers" = "利用可能なサーバーの検索...";
"Scene.ServerPicker.EmptyState.NoResults" = "なし";
"Scene.ServerPicker.Input.Placeholder" = "サーバーを探す";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "カテゴリー";
"Scene.ServerPicker.Label.Language" = "言語";
"Scene.ServerPicker.Label.Users" = "ユーザー";
@@ -349,11 +383,11 @@
"Scene.Settings.Section.BoringZone.Privacy" = "プライバシーポリシー";
"Scene.Settings.Section.BoringZone.Terms" = "利用規約";
"Scene.Settings.Section.BoringZone.Title" = "アプリについて";
-"Scene.Settings.Section.LookAndFeel.Light" = "Light";
-"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark";
-"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark";
-"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel";
-"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System";
+"Scene.Settings.Section.LookAndFeel.Light" = "ライト";
+"Scene.Settings.Section.LookAndFeel.ReallyDark" = "ブラック";
+"Scene.Settings.Section.LookAndFeel.SortaDark" = "ダーク";
+"Scene.Settings.Section.LookAndFeel.Title" = "テーマ";
+"Scene.Settings.Section.LookAndFeel.UseSystem" = "端末の設定を使う";
"Scene.Settings.Section.Notifications.Boosts" = "ブースト";
"Scene.Settings.Section.Notifications.Favorites" = "お気に入り登録";
"Scene.Settings.Section.Notifications.Follows" = "フォロー";
@@ -366,7 +400,7 @@
"Scene.Settings.Section.Notifications.Trigger.Title" = "通知を受け取る";
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "アバターのアニメーションを無効化する";
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "絵文字のアニメーションを無効化する";
-"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
+"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Mastodonでリンクを開く";
"Scene.Settings.Section.Preference.Title" = "環境設定";
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "真っ黒なダークテーマを使用する";
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "既定のブラウザでリンクを開く";
@@ -378,7 +412,7 @@
"Scene.SuggestionAccount.Title" = "フォローする人を探す";
"Scene.Thread.BackTitle" = "投稿";
"Scene.Thread.Title" = "%@の投稿";
-"Scene.Welcome.GetStarted" = "Get Started";
+"Scene.Welcome.GetStarted" = "はじめる";
"Scene.Welcome.LogIn" = "ログイン";
"Scene.Welcome.Slogan" = "ソーシャルネットワーキングを、あなたの手の中に.";
"Scene.Wizard.AccessibilityHint" = "チュートリアルを閉じるには、ダブルタップしてください";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict
index 8dfc9507..95c35172 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict
@@ -153,7 +153,7 @@
NSStringFormatValueTypeKey
ld
other
- %ld people talking
+ %ld人が投稿
plural.count.following
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings
index 3ea1700c..bbc9856c 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings
@@ -210,6 +210,8 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.Favorite.Title" = "Ismenyifen-ik·im";
"Scene.Follower.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
"Scene.Following.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Tissufaɣ timaynutin";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Beṛṛa n tuqqna";
"Scene.HomeTimeline.NavigationBarState.Published" = "Yettwasuffeɣ!";
@@ -292,6 +294,37 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.Report.SkipToSend" = "Azen s war awennit";
"Scene.Report.Step1" = "Aḥric 1 seg 2";
"Scene.Report.Step2" = "Aḥric 2 seg 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Aru neɣ senteḍ iwenniten-nniḍen";
"Scene.Report.Title" = "Aneqqis %@";
"Scene.Report.TitleReport" = "Aneqqis";
@@ -332,6 +365,7 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Tifin n yiqeddacen yellan...";
"Scene.ServerPicker.EmptyState.NoResults" = "Ulac igemmaḍ";
"Scene.ServerPicker.Input.Placeholder" = "Nadi timɣiwnin";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "TAGGAYT";
"Scene.ServerPicker.Label.Language" = "TUTLAYT";
"Scene.ServerPicker.Label.Users" = "ISEQDACEN";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings
index 7f2e7ef4..6f46f990 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings
@@ -211,6 +211,8 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.";
"Scene.Favorite.Title" = "Bijarteyên te";
"Scene.Follower.Footer" = "Şopîner ji rajekerên din nayê dîtin.";
"Scene.Following.Footer" = "Şopandin ji rajekerên din nayê dîtin.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Şandiyên nû bibîne";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Derhêl";
"Scene.HomeTimeline.NavigationBarState.Published" = "Hate weşandin!";
@@ -293,6 +295,37 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.";
"Scene.Report.SkipToSend" = "Bêyî şirove bişîne";
"Scene.Report.Step1" = "Gav 1 ji 2";
"Scene.Report.Step2" = "Gav 2 ji 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Şiroveyên daxwazkirê binivîsine an jî pê ve bike";
"Scene.Report.Title" = "%@ ragihîne";
"Scene.Report.TitleReport" = "Ragihandin";
@@ -332,14 +365,14 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.";
"Scene.ServerPicker.EmptyState.BadNetwork" = "Di dema barkirina daneyan da çewtî derket. Girêdana xwe ya înternetê kontrol bike.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Peydakirina rajekarên berdest...";
"Scene.ServerPicker.EmptyState.NoResults" = "Encam tune";
-"Scene.ServerPicker.Input.Placeholder" = "Rajekarekî bibîne an jî beşdarî ya xwe bibe...";
+"Scene.ServerPicker.Input.Placeholder" = "Li rajekaran bigere";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "BEŞ";
"Scene.ServerPicker.Label.Language" = "ZIMAN";
"Scene.ServerPicker.Label.Users" = "BIKARHÊNER";
"Scene.ServerPicker.Subtitle" = "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre.";
"Scene.ServerPicker.SubtitleExtend" = "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre. Her civakek ji hêla rêxistinek an kesek bi tevahî serbixwe ve tê xebitandin.";
-"Scene.ServerPicker.Title" = "Rajekarekê hilbijêre,
-Her kîjan rajekar be.";
+"Scene.ServerPicker.Title" = "Mastodon ji bikarhênerên di civakên cuda de pêk tê.";
"Scene.ServerRules.Button.Confirm" = "Ez dipejirînim";
"Scene.ServerRules.PrivacyPolicy" = "polîtikaya nihêniyê";
"Scene.ServerRules.Prompt" = "Bi domandinê, tu ji bo %@ di bin mercên bikaranînê û polîtîkaya nepenîtiyê dipejirînî.";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings
index 63586def..f0b5eb42 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings
@@ -205,6 +205,8 @@ klik op de link om uw account te bevestigen.";
"Scene.Favorite.Title" = "Uw favorieten";
"Scene.Follower.Footer" = "Volgers van andere servers worden niet weergegeven.";
"Scene.Following.Footer" = "Volgers van andere servers worden niet weergegeven.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Bekijk nieuwe berichten";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline";
"Scene.HomeTimeline.NavigationBarState.Published" = "Gepubliceerd!";
@@ -287,6 +289,37 @@ klik op de link om uw account te bevestigen.";
"Scene.Report.SkipToSend" = "Verstuur zonder opmerkingen";
"Scene.Report.Step1" = "Stap 1 van 2";
"Scene.Report.Step2" = "Stap 2 van 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Schrijf of plak aanvullende opmerkingen";
"Scene.Report.Title" = "Rapporteer %@";
"Scene.Report.TitleReport" = "Rapporteer";
@@ -327,6 +360,7 @@ klik op de link om uw account te bevestigen.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Beschikbare servers zoeken...";
"Scene.ServerPicker.EmptyState.NoResults" = "Geen resultaten";
"Scene.ServerPicker.Input.Placeholder" = "Zoek uw server of sluit u bij een nieuwe server aan...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "CATEGORIE";
"Scene.ServerPicker.Label.Language" = "TAAL";
"Scene.ServerPicker.Label.Users" = "GEBRUIKERS";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings
index 7353b620..ba32a979 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings
@@ -221,6 +221,8 @@
"Scene.Favorite.Title" = "Ваше избранное";
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Показать новые";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Не в сети";
"Scene.HomeTimeline.NavigationBarState.Published" = "Опубликовано!";
@@ -303,6 +305,37 @@
"Scene.Report.SkipToSend" = "Отправить без комментария";
"Scene.Report.Step1" = "Шаг 1 из 2";
"Scene.Report.Step2" = "Шаг 2 из 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Дополнительные комментарии";
"Scene.Report.Title" = "Пожаловаться на %@";
"Scene.Report.TitleReport" = "Жалоба";
@@ -343,6 +376,7 @@
"Scene.ServerPicker.EmptyState.FindingServers" = "Ищем доступные сервера...";
"Scene.ServerPicker.EmptyState.NoResults" = "Нет результатов";
"Scene.ServerPicker.Input.Placeholder" = "Найдите сервер или присоединитесь к своему...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "КАТЕГОРИЯ";
"Scene.ServerPicker.Label.Language" = "ЯЗЫК";
"Scene.ServerPicker.Label.Users" = "ПОЛЬЗОВАТЕЛИ";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings
index 1ceff03a..20470032 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings
@@ -202,7 +202,7 @@
"Scene.ConfirmEmail.Subtitle" = "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ";
"Scene.ConfirmEmail.Title" = "หนึ่งสิ่งสุดท้าย";
"Scene.Discovery.Intro" = "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ";
-"Scene.Discovery.Tabs.Community" = "Community";
+"Scene.Discovery.Tabs.Community" = "ชุมชน";
"Scene.Discovery.Tabs.ForYou" = "สำหรับคุณ";
"Scene.Discovery.Tabs.Hashtags" = "แฮชแท็ก";
"Scene.Discovery.Tabs.News" = "ข่าว";
@@ -210,6 +210,8 @@
"Scene.Favorite.Title" = "รายการโปรดของคุณ";
"Scene.Follower.Footer" = "ไม่ได้แสดงผู้ติดตามจากเซิร์ฟเวอร์อื่น ๆ";
"Scene.Following.Footer" = "ไม่ได้แสดงการติดตามจากเซิร์ฟเวอร์อื่น ๆ";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "ดูโพสต์ใหม่";
"Scene.HomeTimeline.NavigationBarState.Offline" = "ออฟไลน์";
"Scene.HomeTimeline.NavigationBarState.Published" = "เผยแพร่แล้ว!";
@@ -258,7 +260,7 @@
"Scene.Register.Error.Item.Reason" = "เหตุผล";
"Scene.Register.Error.Item.Username" = "ชื่อผู้ใช้";
"Scene.Register.Error.Reason.Accepted" = "ต้องยอมรับ %@";
-"Scene.Register.Error.Reason.Blank" = "ต้องมี %@";
+"Scene.Register.Error.Reason.Blank" = "ต้องการ %@";
"Scene.Register.Error.Reason.Blocked" = "%@ มีผู้ให้บริการอีเมลที่ไม่ได้รับอนุญาต";
"Scene.Register.Error.Reason.Inclusion" = "%@ ไม่ใช่ค่าที่รองรับ";
"Scene.Register.Error.Reason.Invalid" = "%@ ไม่ถูกต้อง";
@@ -278,9 +280,9 @@
"Scene.Register.Input.Password.Accessibility.Checked" = "กาเครื่องหมายแล้ว";
"Scene.Register.Input.Password.Accessibility.Unchecked" = "ไม่ได้กาเครื่องหมาย";
"Scene.Register.Input.Password.CharacterLimit" = "8 ตัวอักษร";
-"Scene.Register.Input.Password.Hint" = "รหัสผ่านของคุณต้องมีอย่างน้อยแปดตัวอักษร";
+"Scene.Register.Input.Password.Hint" = "รหัสผ่านของคุณจำเป็นต้องมีอย่างน้อยแปดตัวอักษร";
"Scene.Register.Input.Password.Placeholder" = "รหัสผ่าน";
-"Scene.Register.Input.Password.Require" = "รหัสผ่านของคุณต้องมีอย่างน้อย:";
+"Scene.Register.Input.Password.Require" = "รหัสผ่านของคุณจำเป็นต้องมีอย่างน้อย:";
"Scene.Register.Input.Username.DuplicatePrompt" = "ชื่อผู้ใช้นี้ถูกใช้ไปแล้ว";
"Scene.Register.Input.Username.Placeholder" = "ชื่อผู้ใช้";
"Scene.Register.Title" = "มาตั้งค่าของคุณใน %@ กันเลย";
@@ -292,6 +294,37 @@
"Scene.Report.SkipToSend" = "ส่งโดยไม่มีความคิดเห็น";
"Scene.Report.Step1" = "ขั้นตอนที่ 1 จาก 2";
"Scene.Report.Step2" = "ขั้นตอนที่ 2 จาก 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "พิมพ์หรือวางความคิดเห็นเพิ่มเติม";
"Scene.Report.Title" = "รายงาน %@";
"Scene.Report.TitleReport" = "รายงาน";
@@ -312,16 +345,16 @@
"Scene.Search.Searching.Segment.People" = "ผู้คน";
"Scene.Search.Searching.Segment.Posts" = "โพสต์";
"Scene.Search.Title" = "ค้นหา";
-"Scene.ServerPicker.Button.Category.Academia" = "วิชาการ";
+"Scene.ServerPicker.Button.Category.Academia" = "สถาบันการศึกษา";
"Scene.ServerPicker.Button.Category.Activism" = "กิจกรรมเพื่อการเปลี่ยนแปลง";
"Scene.ServerPicker.Button.Category.All" = "ทั้งหมด";
"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "หมวดหมู่: ทั้งหมด";
"Scene.ServerPicker.Button.Category.Art" = "ศิลปะ";
"Scene.ServerPicker.Button.Category.Food" = "อาหาร";
-"Scene.ServerPicker.Button.Category.Furry" = "furry";
+"Scene.ServerPicker.Button.Category.Furry" = "สัตว์ขนยาว";
"Scene.ServerPicker.Button.Category.Games" = "เกม";
"Scene.ServerPicker.Button.Category.General" = "ทั่วไป";
-"Scene.ServerPicker.Button.Category.Journalism" = "การเขียนข่าว";
+"Scene.ServerPicker.Button.Category.Journalism" = "วารสารศาสตร์";
"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt";
"Scene.ServerPicker.Button.Category.Music" = "ดนตรี";
"Scene.ServerPicker.Button.Category.Regional" = "ภูมิภาค";
@@ -331,13 +364,14 @@
"Scene.ServerPicker.EmptyState.BadNetwork" = "มีบางอย่างผิดพลาดขณะโหลดข้อมูล ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ";
"Scene.ServerPicker.EmptyState.FindingServers" = "กำลังค้นหาเซิร์ฟเวอร์ที่พร้อมใช้งาน...";
"Scene.ServerPicker.EmptyState.NoResults" = "ไม่มีผลลัพธ์";
-"Scene.ServerPicker.Input.Placeholder" = "ค้นหาชุมชน";
+"Scene.ServerPicker.Input.Placeholder" = "ค้นหาเซิร์ฟเวอร์";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "หมวดหมู่";
"Scene.ServerPicker.Label.Language" = "ภาษา";
"Scene.ServerPicker.Label.Users" = "ผู้ใช้";
-"Scene.ServerPicker.Subtitle" = "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ";
-"Scene.ServerPicker.SubtitleExtend" = "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง";
-"Scene.ServerPicker.Title" = "Mastodon ประกอบด้วยผู้ใช้ในชุมชนต่าง ๆ";
+"Scene.ServerPicker.Subtitle" = "เลือกเซิร์ฟเวอร์ตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ";
+"Scene.ServerPicker.SubtitleExtend" = "เลือกเซิร์ฟเวอร์ตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละเซิร์ฟเวอร์ดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง";
+"Scene.ServerPicker.Title" = "Mastodon ประกอบด้วยผู้ใช้ในเซิร์ฟเวอร์ต่าง ๆ";
"Scene.ServerRules.Button.Confirm" = "ฉันเห็นด้วย";
"Scene.ServerRules.PrivacyPolicy" = "นโยบายความเป็นส่วนตัว";
"Scene.ServerRules.Prompt" = "เมื่อคุณดำเนินการต่อ คุณอยู่ภายใต้เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวสำหรับ %@";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/tr.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/tr.lproj/Localizable.strings
index 9bee4db1..9467072f 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/tr.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/tr.lproj/Localizable.strings
@@ -201,7 +201,7 @@ yüklenemiyor.";
"Scene.ConfirmEmail.Subtitle" = "Hesabınızı doğrulamak için size e-postayla gönderdiğimiz bağlantıya dokunun.";
"Scene.ConfirmEmail.Title" = "Son bir şey.";
"Scene.Discovery.Intro" = "Bunlar, Mastodon'un köşesinde ilgi çeken gönderilerdir.";
-"Scene.Discovery.Tabs.Community" = "Community";
+"Scene.Discovery.Tabs.Community" = "Topluluk";
"Scene.Discovery.Tabs.ForYou" = "Senin İçin";
"Scene.Discovery.Tabs.Hashtags" = "Etiketler";
"Scene.Discovery.Tabs.News" = "Haberler";
@@ -209,6 +209,8 @@ yüklenemiyor.";
"Scene.Favorite.Title" = "Favorilerin";
"Scene.Follower.Footer" = "Diğer sunucudaki takipçiler gösterilemiyor.";
"Scene.Following.Footer" = "Diğer sunucudaki takip edilenler gösterilemiyor.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Yeni gönderiler gör";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Çevrimdışı";
"Scene.HomeTimeline.NavigationBarState.Published" = "Yayınlandı!";
@@ -291,6 +293,37 @@ yüklenemiyor.";
"Scene.Report.SkipToSend" = "Yorum yapmadan gönder";
"Scene.Report.Step1" = "Adım 1/2";
"Scene.Report.Step2" = "Adım 2/2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Bunu görmek istemiyor musunuz?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Takibi bırak";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Bilmemiz gereken başka bir şey var mı?";
+"Scene.Report.StepFour.Step4Of4" = "Adım 4/4";
+"Scene.Report.StepOne.IDontLikeIt" = "Beğenmedim";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "Görmek isteyeceğim bir şey değil";
+"Scene.Report.StepOne.ItViolatesServerRules" = "Sunucu kurallarını ihlal ediyor";
+"Scene.Report.StepOne.ItsSomethingElse" = "Başka bir şey";
+"Scene.Report.StepOne.ItsSpam" = "Spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "En iyi seçeneceği seçiniz";
+"Scene.Report.StepOne.Step1Of4" = "Adım 1/4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "Sorun bunlardan biri değil";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "Bu hesap ile ilgili sorun nedir?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "Bu gönderi ile ilgili sorun nedir?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "%@ kişisinin sorunu nedir?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Bu bildirimi destekleyecek herhangi bir gönderi var mı?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Geçerli olanların tümünü seçiniz";
+"Scene.Report.StepThree.Step3Of4" = "Adım 3/4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "Beğenmedim";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Geçerli olan tümünü seçiniz";
+"Scene.Report.StepTwo.Step2Of4" = "Adım 2/4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Hangi kurallar ihlal ediliyor?";
"Scene.Report.TextPlaceholder" = "Ek yorum yazın veya yapıştırın";
"Scene.Report.Title" = "%@ kişisini bildir";
"Scene.Report.TitleReport" = "Raporla";
@@ -331,6 +364,7 @@ yüklenemiyor.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Mevcut sunucular aranıyor...";
"Scene.ServerPicker.EmptyState.NoResults" = "Sonuç yok";
"Scene.ServerPicker.Input.Placeholder" = "Toplulukları ara";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "KATEGORİ";
"Scene.ServerPicker.Label.Language" = "DİL";
"Scene.ServerPicker.Label.Users" = "KULLANICILAR";
@@ -356,7 +390,7 @@ yüklenemiyor.";
"Scene.Settings.Section.LookAndFeel.Light" = "Açık";
"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Gerçek Koyu";
"Scene.Settings.Section.LookAndFeel.SortaDark" = "Hafif Koyu";
-"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel";
+"Scene.Settings.Section.LookAndFeel.Title" = "Görünüm";
"Scene.Settings.Section.LookAndFeel.UseSystem" = "Sistem İle Aynı";
"Scene.Settings.Section.Notifications.Boosts" = "Gönderimi yeniden paylaştığında";
"Scene.Settings.Section.Notifications.Favorites" = "Gönderimi favorilerine eklediğinde";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings
index d7853fa7..d93f0607 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings
@@ -210,6 +210,8 @@ tải lên Mastodon.";
"Scene.Favorite.Title" = "Lượt thích";
"Scene.Follower.Footer" = "Không hiển thị người theo dõi từ máy chủ khác.";
"Scene.Following.Footer" = "Không hiển thị người bạn theo dõi từ máy chủ khác.";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Đọc những tút mới";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Ngoại tuyến";
"Scene.HomeTimeline.NavigationBarState.Published" = "Đã đăng!";
@@ -292,6 +294,37 @@ tải lên Mastodon.";
"Scene.Report.SkipToSend" = "Gửi không ghi chú";
"Scene.Report.Step1" = "Bước 1 trong 2";
"Scene.Report.Step2" = "Bước 2 trong 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "Nhập hoặc bổ sung chú thích";
"Scene.Report.Title" = "Báo cáo %@";
"Scene.Report.TitleReport" = "Báo cáo";
@@ -332,6 +365,7 @@ tải lên Mastodon.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Đang tìm máy chủ hoạt động...";
"Scene.ServerPicker.EmptyState.NoResults" = "Không có kết quả";
"Scene.ServerPicker.Input.Placeholder" = "Tìm máy chủ";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "PHÂN LOẠI";
"Scene.ServerPicker.Label.Language" = "NGÔN NGỮ";
"Scene.ServerPicker.Label.Users" = "NGƯỜI DÙNG";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings
index 43874734..50e5b42b 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings
@@ -211,6 +211,8 @@
"Scene.Favorite.Title" = "你的喜欢";
"Scene.Follower.Footer" = "不会显示来自其它服务器的关注者";
"Scene.Following.Footer" = "不会显示来自其它服务器的关注";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "查看新帖子";
"Scene.HomeTimeline.NavigationBarState.Offline" = "离线";
"Scene.HomeTimeline.NavigationBarState.Published" = "已发送";
@@ -293,6 +295,37 @@
"Scene.Report.SkipToSend" = "直接发送";
"Scene.Report.Step1" = "步骤 1 / 2";
"Scene.Report.Step2" = "步骤 2 / 2";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "输入或粘贴额外的注释";
"Scene.Report.Title" = "举报 %@";
"Scene.Report.TitleReport" = "举报";
@@ -333,6 +366,7 @@
"Scene.ServerPicker.EmptyState.FindingServers" = "正在查找可用的服务器...";
"Scene.ServerPicker.EmptyState.NoResults" = "无结果";
"Scene.ServerPicker.Input.Placeholder" = "查找或加入你自己的服务器...";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "类别";
"Scene.ServerPicker.Label.Language" = "语言";
"Scene.ServerPicker.Label.Users" = "用户";
diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hant.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hant.lproj/Localizable.strings
index e76396f1..0de6127e 100644
--- a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hant.lproj/Localizable.strings
+++ b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hant.lproj/Localizable.strings
@@ -205,6 +205,8 @@
"Scene.Favorite.Title" = "您的最愛";
"Scene.Follower.Footer" = "來自其他伺服器的跟隨者不會被顯示。";
"Scene.Following.Footer" = "來自其他伺服器的跟隨中不會被顯示。";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
+"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "檢視最新嘟文";
"Scene.HomeTimeline.NavigationBarState.Offline" = "離線";
"Scene.HomeTimeline.NavigationBarState.Published" = "嘟出去!";
@@ -287,6 +289,37 @@
"Scene.Report.SkipToSend" = "不加入備註並傳送";
"Scene.Report.Step1" = "兩個步驟中的第一步";
"Scene.Report.Step2" = "兩個步驟中的第二步";
+"Scene.Report.StepFinal.BlockUser" = "Block %@";
+"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
+"Scene.Report.StepFinal.MuteUser" = "Mute %@";
+"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
+"Scene.Report.StepFinal.Unfollow" = "Unfollow";
+"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
+"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
+"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
+"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
+"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
+"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
+"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
+"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
+"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
+"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
+"Scene.Report.StepOne.ItsSpam" = "It’s spam";
+"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
+"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
+"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
+"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
+"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
+"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
+"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
+"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
+"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
+"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
+"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
+"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
+"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
+"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
"Scene.Report.TextPlaceholder" = "請輸入或貼上額外的備註";
"Scene.Report.Title" = "檢舉 %@";
"Scene.Report.TitleReport" = "檢舉";
@@ -327,6 +360,7 @@
"Scene.ServerPicker.EmptyState.FindingServers" = "尋找可用的伺服器...";
"Scene.ServerPicker.EmptyState.NoResults" = "沒有結果";
"Scene.ServerPicker.Input.Placeholder" = "搜尋伺服器";
+"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search communities or enter URL";
"Scene.ServerPicker.Label.Category" = "分類";
"Scene.ServerPicker.Label.Language" = "語言";
"Scene.ServerPicker.Label.Users" = "使用者";
diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift
index c3a9b96f..4a5c4485 100644
--- a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift
+++ b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift
@@ -216,7 +216,7 @@ extension ActionToolbarContainer {
public func configureReply(count: Int, isEnabled: Bool) {
let title = ActionToolbarContainer.title(from: count)
replyButton.setTitle(title, for: .normal)
- replyButton.accessibilityLabel = "\(count) reply" // TODO: i18n
+ replyButton.accessibilityLabel = L10n.Plural.Count.reply(count)
}
public func configureReblog(count: Int, isEnabled: Bool, isHighlighted: Bool) {
diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist
index 92f44289..a187ca26 100644
--- a/MastodonTests/Info.plist
+++ b/MastodonTests/Info.plist
@@ -15,8 +15,8 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleVersion
- 126
+ 127
diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist
index 92f44289..a187ca26 100644
--- a/MastodonUITests/Info.plist
+++ b/MastodonUITests/Info.plist
@@ -15,8 +15,8 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleVersion
- 126
+ 127
diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist
index f074db82..fa2356db 100644
--- a/NotificationService/Info.plist
+++ b/NotificationService/Info.plist
@@ -17,9 +17,9 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleVersion
- 126
+ 127
NSExtension
NSExtensionPointIdentifier
diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist
index 31c7447f..95cd141f 100644
--- a/ShareActionExtension/Info.plist
+++ b/ShareActionExtension/Info.plist
@@ -17,9 +17,9 @@
CFBundlePackageType
$(PRODUCT_BUNDLE_PACKAGE_TYPE)
CFBundleShortVersionString
- 1.4.1
+ 1.4.2
CFBundleVersion
- 126
+ 127
NSExtension
NSExtensionAttributes