diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 920eaff87..da1201b7f 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleVersion - 113 + 117 diff --git a/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings new file mode 100644 index 000000000..6877490ba --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict new file mode 100644 index 000000000..18422c772 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/gl_ES/Intents.stringsdict @@ -0,0 +1,38 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + + diff --git a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings index e81116eee..83e02871c 100644 --- a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Posta på Mastodon"; -"751xkl" = "Text Content"; +"751xkl" = "Textinnehåll"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Posta på Mastodon"; -"HZSGTr" = "What content to post?"; +"HZSGTr" = "Vilket innehåll ska jag posta?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "Inlägget misslyckades"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "Felorsak"; -"RHxKOw" = "Send Post with text content"; +"RHxKOw" = "Skicka inlägg med textinnehåll"; -"RxSqsb" = "Post"; +"RxSqsb" = "Posta"; "WCIR3D" = "Posta ${content} på Mastodon"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "Posta"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "Synlighet"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "Inläggssynlighet"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "Det finns ${count} alternativ som matchar ‘Publikt’."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "Det finns ${count} alternativ som matchar ‘Endast följare’."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, Publikt"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, Endast följare"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Posta på Mastodon"; "dYQ5NN" = "Publikt"; "ehFLjY" = "Endast följare"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "Inlägget misslyckades. ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "Inlägget har postats."; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "Bara för att bekräfta, ville du ha 'Publikt'?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "Bara för att bekräfta, ville du ha 'Endast följare'?"; "rM6dvp" = "URL"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "Inlägget har postats. "; diff --git a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.stringsdict index 18422c772..a5e8432fb 100644 --- a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.stringsdict +++ b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.stringsdict @@ -5,7 +5,7 @@ There are ${count} options matching ‘${content}’. - 2 NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${content}’. + Det finns %#@count_option@ alternativ som matchar ‘${content}’. count_option NSStringFormatSpecTypeKey @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey %ld one - 1 option + %ld alternativ other - %ld options + %ld alternativ There are ${count} options matching ‘${visibility}’. NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${visibility}’. + Det finns %#@count_option@ alternativ som matchar ‘${visibility}’. count_option NSStringFormatSpecTypeKey @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey %ld one - 1 option + %ld alternativ other - %ld options + %ld alternativ diff --git a/Localization/StringsConvertor/Intents/input/tr_TR/Intents.strings b/Localization/StringsConvertor/Intents/input/tr_TR/Intents.strings new file mode 100644 index 000000000..dc60dee73 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/tr_TR/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Mastodon'da paylaş"; + +"751xkl" = "Metin içeriği"; + +"CsR7G2" = "Mastodon'da paylaş"; + +"HZSGTr" = "Ne içeriği paylaşılacak?"; + +"HdGikU" = "Gönderi paylaşılamadı"; + +"KDNTJ4" = "Hata Sebebi"; + +"RHxKOw" = "Metin içeriği ile gönderiyi paylaş"; + +"RxSqsb" = "Gönderi"; + +"WCIR3D" = "${content} içeriğini Mastodon'da paylaş"; + +"ZKJSNu" = "Gönderi"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Gizlilik"; + +"Zo4jgJ" = "Gönderi Gizliliği"; + +"apSxMG-dYQ5NN" = "\"Herkese açık\" ile eşleşen ${count} seçenek var."; + +"apSxMG-ehFLjY" = "\"Sadece takipçiler\" ile eşleşen ${count} seçenek var."; + +"ayoYEb-dYQ5NN" = "${content}, Herkese açık"; + +"ayoYEb-ehFLjY" = "${content}, Sadece takipçiler"; + +"dUyuGg" = "Mastodon'da paylaş"; + +"dYQ5NN" = "Herkese açık"; + +"ehFLjY" = "Sadece takipçiler"; + +"gfePDu" = "Gönderi paylaşılamadı. ${failureReason}"; + +"k7dbKQ" = "Gönderi başarıyla paylaşıldı."; + +"oGiqmY-dYQ5NN" = "\"Herkese açık\" paylaşmak istediğinize emin misiniz?"; + +"oGiqmY-ehFLjY" = "\"Sadece takipçiler\" için paylaşmak istediğinize emin misiniz?"; + +"rM6dvp" = "Bağlantı"; + +"ryJLwG" = "Gönderi başarıyla paylaşıldı. "; diff --git a/Localization/StringsConvertor/Intents/input/tr_TR/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/tr_TR/Intents.stringsdict new file mode 100644 index 000000000..2e75a0357 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/tr_TR/Intents.stringsdict @@ -0,0 +1,38 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + ‘${content}’ ile eşleşen %#@count_option@ var. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 seçenek + other + %ld seçenek + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + ‘${visibility}’ ile eşleşen %#@count_option@ var. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 seçenek + other + %ld seçenek + + + + diff --git a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift index 606a95200..92a858829 100644 --- a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift +++ b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift @@ -62,6 +62,7 @@ private func map(language: String) -> String? { case "gd_GB": return "gd-GB" // Scottish Gaelic case "es_ES": return "es" // Spanish case "es_AR": return "es-419" // Spanish, Argentina + case "sv-SE": return "sv" // Swedish case "sv_FI": return "sv_FI" // Swedish, Finland case "th_TH": return "th" // Thai case "vi_VN": return "vi" // Vietnamese diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index d9712536b..41186e191 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -129,6 +129,7 @@ "show_post": "أظْهِر مَنشور", "show_user_profile": "أظْهِر المِلَفَّ التَّعريفِيَّ لِلمُستَخدِم", "content_warning": "تحذير المُحتوى", + "sensitive_content": "مُحتَوى حَسَّاس", "media_content_warning": "اُنقُر لِلكَشف", "tap_to_reveal": "اُنقُر لِلكَشف", "poll": { @@ -497,8 +498,9 @@ "posts": "المنشورات", "hashtags": "الوسوم", "news": "الأخبار", - "for_you": "For You" - } + "for_you": "لَك" + }, + "intro": "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون." }, "favorite": { "title": "مُفضَّلَتُك" diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index c3484260a..188b97906 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -129,6 +129,7 @@ "show_post": "Mostra la Publicació", "show_user_profile": "Mostra el perfil de l'usuari", "content_warning": "Advertència de Contingut", + "sensitive_content": "Contingut sensible", "media_content_warning": "Toca qualsevol lloc per a mostrar", "tap_to_reveal": "Toca per a mostrar", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Etiquetes", "news": "Notícies", "for_you": "Per a tu" - } + }, + "intro": "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon." }, "favorite": { "title": "Els teus Favorits" diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json index 548c5adae..a8fc9031f 100644 --- a/Localization/StringsConvertor/input/cy_GB/app.json +++ b/Localization/StringsConvertor/input/cy_GB/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/da_DK/app.json b/Localization/StringsConvertor/input/da_DK/app.json index 548c5adae..a8fc9031f 100644 --- a/Localization/StringsConvertor/input/da_DK/app.json +++ b/Localization/StringsConvertor/input/da_DK/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index 522b3f772..efd9fec9e 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -129,6 +129,7 @@ "show_post": "Beitrag anzeigen", "show_user_profile": "Benutzerprofil anzeigen", "content_warning": "Inhaltswarnung", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tippe irgendwo zum Anzeigen", "tap_to_reveal": "Zum Anzeigen tippen", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "Nachrichten", "for_you": "Für dich" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Deine Favoriten" diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json index 548c5adae..a8fc9031f 100644 --- a/Localization/StringsConvertor/input/en_US/app.json +++ b/Localization/StringsConvertor/input/en_US/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index 581ccd83c..84b6f6bc6 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -113,9 +113,9 @@ "open_author_profile": "Abrir perfil del autor", "open_reblogger_profile": "Abrir perfil del adherente", "reply_status": "Responder al mensaje", - "toggle_reblog": "Cambiar la adhesión en el mensaje", - "toggle_favorite": "Cambiar la marca de favorito en el mensaje", - "toggle_content_warning": "Cambiar la advertencia de contenido", + "toggle_reblog": "Cambiar adhesión al mensaje", + "toggle_favorite": "Cambiar marca de favorito del mensaje", + "toggle_content_warning": "Cambiar modo de advertencia de contenido", "preview_image": "Previsualizar imagen" }, "segmented_control": { @@ -129,7 +129,8 @@ "show_post": "Mostrar mensaje", "show_user_profile": "Mostrar perfil de usuario", "content_warning": "Advertencia de contenido", - "media_content_warning": "Toca en cualquier lugar para mostrar", + "sensitive_content": "Contenido sensible", + "media_content_warning": "Tocá en cualquier parte para mostrar", "tap_to_reveal": "Tocá para mostrar", "poll": { "vote": "Votar", @@ -498,7 +499,8 @@ "hashtags": "Etiquetas", "news": "Novedades", "for_you": "Para vos" - } + }, + "intro": "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon." }, "favorite": { "title": "Tus favoritos" diff --git a/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict index 24e407d03..8f3e94f6b 100644 --- a/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 reply + 1 respuesta other - %ld replies + %ld respuestas plural.count.vote diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index d4215ecb9..91844c70a 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -129,8 +129,9 @@ "show_post": "Mostrar Publicación", "show_user_profile": "Mostrar perfil del usuario", "content_warning": "Advertencia de Contenido", + "sensitive_content": "Sensitive Content", "media_content_warning": "Pulsa en cualquier sitio para mostrar", - "tap_to_reveal": "Tap to reveal", + "tap_to_reveal": "Tocar para revelar", "poll": { "vote": "Vota", "closed": "Cerrado" @@ -143,10 +144,10 @@ "unfavorite": "No favorito", "menu": "Menú", "hide": "Ocultar", - "show_image": "Show image", - "show_gif": "Show GIF", - "show_video_player": "Show video player", - "tap_then_hold_to_show_menu": "Tap then hold to show menu" + "show_image": "Mostrar imagen", + "show_gif": "Mostrar GIF", + "show_video_player": "Mostrar reproductor de vídeo", + "tap_then_hold_to_show_menu": "Toca, después mantén para mostrar el menú" }, "tag": { "url": "URL", @@ -447,10 +448,10 @@ } }, "accessibility": { - "show_avatar_image": "Show avatar image", - "edit_avatar_image": "Edit avatar image", - "show_banner_image": "Show banner image", - "double_tap_to_open_the_list": "Double tap to open the list" + "show_avatar_image": "Mostrar imagen del avatar", + "edit_avatar_image": "Editar imagen del avatar", + "show_banner_image": "Mostrar imagen de banner", + "double_tap_to_open_the_list": "Pulsa dos veces para abrir la lista" } }, "follower": { @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "Posts", - "hashtags": "Hashtags", - "news": "News", - "for_you": "For You" - } + "posts": "Publicaciones", + "hashtags": "Etiquetas", + "news": "Noticias", + "for_you": "Para Ti" + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Tus Favoritos" @@ -561,7 +563,7 @@ "disable_avatar_animation": "Deshabilitar avatares animados", "disable_emoji_animation": "Deshabilitar emojis animados", "using_default_browser": "Usar navegador predeterminado para abrir los enlaces", - "open_links_in_mastodon": "Open links in Mastodon" + "open_links_in_mastodon": "Abrir links en Mastodon" }, "boring_zone": { "title": "La Zona Aburrida", diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 8547ae263..18b93df66 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -129,6 +129,7 @@ "show_post": "Erakutsi bidalketa", "show_user_profile": "Erakutsi erabiltzailearen profila", "content_warning": "Edukiaren abisua", + "sensitive_content": "Sensitive Content", "media_content_warning": "Ukitu edonon bistaratzeko", "tap_to_reveal": "Sakatu erakusteko", "poll": { @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "Posts", - "hashtags": "Hashtags", - "news": "News", - "for_you": "For You" - } + "posts": "Argitalpenak", + "hashtags": "Traolak", + "news": "Albisteak", + "for_you": "Zuretzat" + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Zure gogokoak" diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 642d2c371..be7927e7a 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -129,6 +129,7 @@ "show_post": "Montrer la publication", "show_user_profile": "Montrer le profil de l’utilisateur·rice", "content_warning": "Avertissement de contenu", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tapotez n’importe où pour révéler la publication", "tap_to_reveal": "Appuyer pour afficher", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "Actualité", "for_you": "Pour vous" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Vos favoris" diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index 7053105dc..d116aadbb 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -129,6 +129,7 @@ "show_post": "Seall am post", "show_user_profile": "Seall pròifil a’ chleachdaiche", "content_warning": "Rabhadh susbainte", + "sensitive_content": "Susbaint fhrionasach", "media_content_warning": "Thoir gnogag àite sam bith gus a nochdadh", "tap_to_reveal": "Thoir gnogag gus a nochdadh", "poll": { @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "Posts", - "hashtags": "Hashtags", - "news": "News", - "for_you": "For You" - } + "posts": "Postaichean", + "hashtags": "Tagaichean hais", + "news": "Naidheachdan", + "for_you": "Dhut-sa" + }, + "intro": "Seo na postaichean fèillmhor ’nad cheàrnaidh de Mhastodon." }, "favorite": { "title": "Na h-annsachdan agad" diff --git a/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict new file mode 100644 index 000000000..503ff9dbd --- /dev/null +++ b/Localization/StringsConvertor/input/gl_ES/Localizable.stringsdict @@ -0,0 +1,406 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 unread notification + other + %ld unread notification + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + post + other + posts + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favorite + other + %ld favorites + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 reblog + other + %ld reblogs + + + plural.count.reply + + NSStringLocalizedFormatKey + %#@reply_count@ + reply_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 reply + other + %ld replies + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 vote + other + %ld votes + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 voter + other + %ld voters + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 people talking + other + %ld people talking + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + other + %ld seconds left + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1y ago + other + %ldy ago + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1M ago + other + %ldM ago + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1d ago + other + %ldd ago + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1h ago + other + %ldh ago + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1m ago + other + %ldm ago + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1s ago + other + %lds ago + + + + diff --git a/Localization/StringsConvertor/input/gl_ES/app.json b/Localization/StringsConvertor/input/gl_ES/app.json new file mode 100644 index 000000000..52716f4cc --- /dev/null +++ b/Localization/StringsConvertor/input/gl_ES/app.json @@ -0,0 +1,618 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Inténtao de novo.", + "please_try_again_later": "Inténtao de novo máis tarde." + }, + "sign_up_failure": { + "title": "Fallou o rexistro" + }, + "server_error": { + "title": "Erro do servidor" + }, + "vote_failure": { + "title": "Fallou a votación", + "poll_ended": "A enquisa rematou" + }, + "discard_post_content": { + "title": "Descartar Borrador", + "message": "Confirma que queres descartar o contido do borrador." + }, + "publish_post_failure": { + "title": "Fallou a publicación", + "message": "Fallou a publicación.\nComproba a conexión a internet.", + "attachments_message": { + "video_attach_with_photo": "Non podes anexar un vídeo a unha publicación que xa contén imaxes.", + "more_than_one_video": "Non podes anexar máis de un vídeo." + } + }, + "edit_profile_failure": { + "title": "Erro ao editar o perfil", + "message": "Non se editou o perfil. Inténtao máis tarde." + }, + "sign_out": { + "title": "Pechar sesión", + "message": "Tes a certeza de queres pechar a sesión?", + "confirm": "Pechar sesión" + }, + "block_domain": { + "title": "Tes a certeza de querer bloquear todo de %s? Na meirande parte dos casos uns bloqueos ou silenciados específicos son suficientes e preferibles. Non verás máis o contido deste dominio en ningunha cronoloxía pública e as túas seguidoras deste dominio serán eliminadas.", + "block_entire_domain": "Bloquear Dominio" + }, + "save_photo_failure": { + "title": "Erro ao gardar a fotografía", + "message": "Activa o permiso de acceso á galería de fotos para gardar a foto." + }, + "delete_post": { + "title": "Eliminar publicación", + "message": "Tes a certeza de querer eliminar esta publicación?" + }, + "clean_cache": { + "title": "Limpar caché", + "message": "Baleirouse %s da caché correctamente." + } + }, + "controls": { + "actions": { + "back": "Volver", + "next": "Seguinte", + "previous": "Anterior", + "open": "Abrir", + "add": "Engadir", + "remove": "Eliminar", + "edit": "Editar", + "save": "Gardar", + "ok": "OK", + "done": "Feito", + "confirm": "Confirmar", + "continue": "Continuar", + "compose": "Escribir", + "cancel": "Cancelar", + "discard": "Descartar", + "try_again": "Intentar de novo", + "take_photo": "Facer foto", + "save_photo": "Gardar foto", + "copy_photo": "Copiar foto", + "sign_in": "Acceder", + "sign_up": "Inscribirse", + "see_more": "Ver máis", + "preview": "Vista previa", + "share": "Compartir", + "share_user": "Compartir %s", + "share_post": "Compartir publicación", + "open_in_safari": "Abrir en Safari", + "open_in_browser": "Abrir no navegador", + "find_people": "Atopar persoas para seguir", + "manually_search": "Buscar de xeito manual", + "skip": "Omitir", + "reply": "Responder", + "report_user": "Denunciar a %s", + "block_domain": "Bloquear a %s", + "unblock_domain": "Desbloquear a %s", + "settings": "Axustes", + "delete": "Eliminar" + }, + "tabs": { + "home": "Inicio", + "search": "Busca", + "notification": "Notificación", + "profile": "Perfil" + }, + "keyboard": { + "common": { + "switch_to_tab": "Cambiar a %s", + "compose_new_post": "Escribir Nova publicación", + "show_favorites": "Mostrar Favoritos", + "open_settings": "Abrir axustes" + }, + "timeline": { + "previous_status": "Publicación anterior", + "next_status": "Publicación seguinte", + "open_status": "Abrir publicación", + "open_author_profile": "Ver Perfil da autora", + "open_reblogger_profile": "Ver perfil de quen promoveu", + "reply_status": "Responder á publicación", + "toggle_reblog": "Promover a publicación", + "toggle_favorite": "Engadir publicación a Favoritas", + "toggle_content_warning": "Marcar con Aviso sobre o contido", + "preview_image": "Previsualización da imaxe" + }, + "segmented_control": { + "previous_section": "Sección anterior", + "next_section": "Sección seguinte" + } + }, + "status": { + "user_reblogged": "%s promoveu", + "user_replied_to": "Respondeu a %s", + "show_post": "Mostrar publicación", + "show_user_profile": "Mostrar perfil da usuaria", + "content_warning": "Aviso sobre o contido", + "sensitive_content": "Contido sensible", + "media_content_warning": "Toca nalgures para mostrar", + "tap_to_reveal": "Toca para mostrar", + "poll": { + "vote": "Votar", + "closed": "Pechada" + }, + "actions": { + "reply": "Responder", + "reblog": "Promover", + "unreblog": "Retirar promoción", + "favorite": "Favorecer", + "unfavorite": "Eliminar dos favoritos", + "menu": "Menú", + "hide": "Agochar", + "show_image": "Mostrar a imaxe", + "show_gif": "Show GIF", + "show_video_player": "Show video player", + "tap_then_hold_to_show_menu": "Tap then hold to show menu" + }, + "tag": { + "url": "URL", + "mention": "Mention", + "link": "Link", + "hashtag": "Hashtag", + "email": "Email", + "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." + } + }, + "friendship": { + "follow": "Follow", + "following": "Following", + "request": "Request", + "pending": "Pending", + "block": "Block", + "block_user": "Block %s", + "block_domain": "Block %s", + "unblock": "Unblock", + "unblock_user": "Unblock %s", + "blocked": "Blocked", + "mute": "Mute", + "mute_user": "Mute %s", + "unmute": "Unmute", + "unmute_user": "Unmute %s", + "muted": "Muted", + "edit_info": "Edit Info" + }, + "timeline": { + "filtered": "Filtered", + "timestamp": { + "now": "Now" + }, + "loader": { + "load_missing_posts": "Load missing posts", + "loading_missing_posts": "Loading missing posts...", + "show_more_replies": "Show more replies" + }, + "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." + } + } + } + }, + "scene": { + "welcome": { + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" + }, + "server_picker": { + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "button": { + "category": { + "all": "All", + "all_accessiblity_description": "Category: All", + "academia": "academia", + "activism": "activismo", + "food": "comida", + "furry": "peluxos", + "games": "xogos", + "general": "xeral", + "journalism": "xornalismo", + "lgbt": "lgbt", + "regional": "rexional", + "art": "arte", + "music": "música", + "tech": "tecnoloxía" + }, + "see_less": "Ver menos", + "see_more": "Ver máis" + }, + "label": { + "language": "IDIOMA", + "users": "USUARIAS", + "category": "CATEGORÍA" + }, + "input": { + "placeholder": "Buscar comunidades" + }, + "empty_state": { + "finding_servers": "Buscando servidores dispoñibles...", + "bad_network": "Algo fallou ao cargar os datos. Comproba a conexión a internet.", + "no_results": "Sen resultados" + } + }, + "register": { + "title": "Imos crear a túa conta en %s", + "input": { + "avatar": { + "delete": "Eliminar" + }, + "username": { + "placeholder": "identificador", + "duplicate_prompt": "Este nome de usuaria xa está en uso." + }, + "display_name": { + "placeholder": "nome público" + }, + "email": { + "placeholder": "email" + }, + "password": { + "placeholder": "contrasinal", + "require": "O contrasinal debe ter polo menos:", + "character_limit": "8 caracteres", + "accessibility": { + "checked": "validado", + "unchecked": "non validado" + }, + "hint": "O teu contrasinal debe ter cando menos oito caracteres" + }, + "invite": { + "registration_user_invite_request": "Por que queres unirte?" + } + }, + "error": { + "item": { + "username": "Identificador", + "email": "Email", + "password": "Contrasinal", + "agreement": "Acordo", + "locale": "Locale", + "reason": "Razón" + }, + "reason": { + "blocked": "%s é un provedor de email non autorizado", + "unreachable": "%s semella que non existe", + "taken": "%s xa está en uso", + "reserved": "%s é unha palabra reservada", + "accepted": "%s debe ser aceptado", + "blank": "%s é requerido", + "invalid": "%s non é válido", + "too_long": "%s é demasiado longo", + "too_short": "%s é demasiado curto", + "inclusion": "%s non é un valor soportado" + }, + "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)" + } + } + }, + "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", + "button": { + "confirm": "I Agree" + } + }, + "confirm_email": { + "title": "One last thing.", + "subtitle": "Tap the link we emailed to you to verify your account.", + "button": { + "open_email_app": "Open Email App", + "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" + }, + "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" + } + }, + "home_timeline": { + "title": "Home", + "navigation_bar_state": { + "offline": "Offline", + "new_posts": "See new posts", + "published": "Published!", + "Publishing": "Publishing post..." + } + }, + "suggestion_account": { + "title": "Find People to Follow", + "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + }, + "compose": { + "title": { + "new_post": "New Post", + "new_reply": "New Reply" + }, + "media_selection": { + "camera": "Take Photo", + "photo_library": "Photo Library", + "browse": "Browse" + }, + "content_input_placeholder": "Type or paste what’s on your mind", + "compose_action": "Publish", + "replying_to_user": "replying to %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..." + }, + "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" + }, + "content_warning": { + "placeholder": "Write an accurate warning here..." + }, + "visibility": { + "public": "Public", + "unlisted": "Non listado", + "private": "Só para seguidoras", + "direct": "Só para persoas mencionadas" + }, + "auto_complete": { + "space_to_add": "Barra de espazo engade" + }, + "accessibility": { + "append_attachment": "Engadir anexo", + "append_poll": "Engadir enquisa", + "remove_poll": "Eliminar enquisa", + "custom_emoji_picker": "Selector emoji personalizado", + "enable_content_warning": "Marcar con Aviso sobre o contido", + "disable_content_warning": "Retirar Aviso sobre o contido", + "post_visibility_menu": "Visibilidade da publicación" + }, + "keyboard": { + "discard_post": "Descartar publicación", + "publish_post": "Publicar", + "toggle_poll": "Activar enquisa", + "toggle_content_warning": "Marcar con Aviso sobre o contido", + "append_attachment_entry": "Engadir anexo - %s", + "select_visibility_entry": "Elexir visibilidade - %s" + } + }, + "profile": { + "dashboard": { + "posts": "publicacións", + "following": "following", + "followers": "followers" + }, + "fields": { + "add_row": "Add Row", + "placeholder": { + "label": "Label", + "content": "Content" + } + }, + "segmented_control": { + "posts": "Posts", + "replies": "Replies", + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" + }, + "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, + "confirm_unmute_user": { + "title": "Unmute Account", + "message": "Confirm to unmute %s" + }, + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" + } + }, + "accessibility": { + "show_avatar_image": "Show avatar image", + "edit_avatar_image": "Edit avatar image", + "show_banner_image": "Show banner image", + "double_tap_to_open_the_list": "Double tap to open the list" + } + }, + "follower": { + "footer": "Followers from other servers are not displayed." + }, + "following": { + "footer": "Follows from other servers are not displayed." + }, + "search": { + "title": "Search", + "search_bar": { + "placeholder": "Search hashtags and users", + "cancel": "Cancel" + }, + "recommend": { + "button_text": "See All", + "hash_tag": { + "title": "Trending on Mastodon", + "description": "Hashtags that are getting quite a bit of attention", + "people_talking": "%s people are talking" + }, + "accounts": { + "title": "Accounts you might like", + "description": "You may like to follow these accounts", + "follow": "Follow" + } + }, + "searching": { + "segment": { + "all": "All", + "people": "People", + "hashtags": "Hashtags", + "posts": "Posts" + }, + "empty_state": { + "no_results": "No results" + }, + "recent_search": "Recent searches", + "clear": "Clear" + } + }, + "discovery": { + "tabs": { + "posts": "Posts", + "hashtags": "Hashtags", + "news": "News", + "for_you": "For You" + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." + }, + "favorite": { + "title": "Your Favorites" + }, + "notification": { + "title": { + "Everything": "Everything", + "Mentions": "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" + }, + "keyobard": { + "show_everything": "Show Everything", + "show_mentions": "Show Mentions" + } + }, + "thread": { + "back_title": "Post", + "title": "Post from %s" + }, + "settings": { + "title": "Settings", + "section": { + "appearance": { + "title": "Appearance", + "automatic": "Automatic", + "light": "Always Light", + "dark": "Always Dark" + }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, + "notifications": { + "title": "Notifications", + "favorites": "Favorites my post", + "follows": "Follows me", + "boosts": "Reblogs my post", + "mentions": "Mentions me", + "trigger": { + "anyone": "anyone", + "follower": "a follower", + "follow": "anyone I follow", + "noone": "no one", + "title": "Notify me when" + } + }, + "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" + }, + "boring_zone": { + "title": "The Boring Zone", + "account_settings": "Account Settings", + "terms": "Terms of Service", + "privacy": "Privacy Policy" + }, + "spicy_zone": { + "title": "The Spicy Zone", + "clear": "Clear Media Cache", + "signout": "Sign Out" + } + }, + "footer": { + "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + }, + "keyboard": { + "close_settings_window": "Close Settings Window" + } + }, + "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?", + "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" + }, + "preview": { + "keyboard": { + "close_preview": "Close Preview", + "show_next": "Show Next", + "show_previous": "Show Previous" + } + }, + "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" + }, + "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" + } + } +} \ 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 new file mode 100644 index 000000000..c6db73de0 --- /dev/null +++ b/Localization/StringsConvertor/input/gl_ES/ios-infoPlist.json @@ -0,0 +1,6 @@ +{ + "NSCameraUsageDescription": "Used to take photo for post status", + "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", + "NewPostShortcutItemTitle": "New Post", + "SearchShortcutItemTitle": "Search" +} diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json index 846a3f66f..26a290c48 100644 --- a/Localization/StringsConvertor/input/hi_IN/app.json +++ b/Localization/StringsConvertor/input/hi_IN/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/id_ID/app.json b/Localization/StringsConvertor/input/id_ID/app.json index c6fe56107..63798ff10 100644 --- a/Localization/StringsConvertor/input/id_ID/app.json +++ b/Localization/StringsConvertor/input/id_ID/app.json @@ -2,8 +2,8 @@ "common": { "alerts": { "common": { - "please_try_again": "Harap coba lagi.", - "please_try_again_later": "Coba lagi nanti." + "please_try_again": "Silakan coba lagi.", + "please_try_again_later": "Silakan coba lagi nanti." }, "sign_up_failure": { "title": "Sign Up Failure" @@ -129,6 +129,7 @@ "show_post": "Tampilkan Postingan", "show_user_profile": "Tampilkan Profil Pengguna", "content_warning": "Peringatan Konten", + "sensitive_content": "Sensitive Content", "media_content_warning": "Ketuk di mana saja untuk melihat", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/it_IT/app.json b/Localization/StringsConvertor/input/it_IT/app.json index 240440163..4fa602365 100644 --- a/Localization/StringsConvertor/input/it_IT/app.json +++ b/Localization/StringsConvertor/input/it_IT/app.json @@ -129,6 +129,7 @@ "show_post": "Mostra il post", "show_user_profile": "Mostra il profilo dell'utente", "content_warning": "Avviso sul contenuto", + "sensitive_content": "Contenuto sensibile", "media_content_warning": "Tocca ovunque per rivelare", "tap_to_reveal": "Tocca per rivelare", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtag", "news": "Notizie", "for_you": "Per Te" - } + }, + "intro": "Questi sono i post che stanno guadagnando popolarità nel tuo angolo di Mastodon." }, "favorite": { "title": "I tuoi preferiti" diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index fb16cf4b2..11e08947f 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -86,7 +86,7 @@ "find_people": "フォローする人を見つける", "manually_search": "手動で検索する", "skip": "スキップ", - "reply": "リプライ", + "reply": "返信", "report_user": "%sを通報", "block_domain": "%sをブロック", "unblock_domain": "%sのブロックを解除", @@ -125,10 +125,11 @@ }, "status": { "user_reblogged": "%sがブースト", - "user_replied_to": "%sがリプライ", + "user_replied_to": "%sに返信", "show_post": "投稿を見る", "show_user_profile": "プロフィールを見る", "content_warning": "コンテンツ警告", + "sensitive_content": "Sensitive Content", "media_content_warning": "どこかをタップして表示", "tap_to_reveal": "Tap to reveal", "poll": { @@ -136,7 +137,7 @@ "closed": "クローズド" }, "actions": { - "reply": "リプライ", + "reply": "返信", "reblog": "ブースト", "unreblog": "ブーストを戻す", "favorite": "お気に入り", @@ -189,7 +190,7 @@ "loader": { "load_missing_posts": "不足している投稿を読み込む", "loading_missing_posts": "読込中...", - "show_more_replies": "リプライをもっとみる" + "show_more_replies": "返信をさらに表示" }, "header": { "no_status_found": "投稿が見つかりません", @@ -351,7 +352,7 @@ "compose": { "title": { "new_post": "新しい投稿", - "new_reply": "新しいリプライ" + "new_reply": "新しい返信" }, "media_selection": { "camera": "写真を撮る", @@ -360,7 +361,7 @@ }, "content_input_placeholder": "気になることを入力またはペースト", "compose_action": "投稿", - "replying_to_user": "%sにリプライ", + "replying_to_user": "%sに返信", "attachment": { "photo": "写真", "video": "動画", @@ -423,10 +424,10 @@ }, "segmented_control": { "posts": "投稿", - "replies": "リプライ", - "posts_and_replies": "Posts and Replies", + "replies": "返信", + "posts_and_replies": "投稿と返信", "media": "メディア", - "about": "About" + "about": "概要" }, "relationship_action_alert": { "confirm_mute_user": { @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "Posts", - "hashtags": "Hashtags", - "news": "News", + "posts": "投稿", + "hashtags": "ハッシュタグ", + "news": "ニュース", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "お気に入り" @@ -583,17 +585,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "報告する", "title": "%sを通報", "step1": "ステップ 1/2", "step2": "ステップ 2/2", "content1": "他に通報したい投稿はありますか?", "content2": "この通報についてモデレーターに伝達しておきたい事項はありますか?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "ご報告ありがとうございます、追って確認します。", "send": "通報を送信", "skip_to_send": "コメントなしで送信", "text_placeholder": "追加コメントを入力", - "reported": "REPORTED" + "reported": "報告済み" }, "preview": { "keyboard": { diff --git a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict index c3d72dda2..4ccb271fa 100644 --- a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 reply + 1 tririt other - %ld replies + %ld tririyin plural.count.vote diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 08de0aef7..8e88b653c 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -129,8 +129,9 @@ "show_post": "Sken-d tasuffeɣt", "show_user_profile": "Ssken-d amaɣnu n useqdac", "content_warning": "Alɣu n ugbur", + "sensitive_content": "Agbur amḥulfu", "media_content_warning": "Sit anida tebɣiḍ i wakken ad twaliḍ", - "tap_to_reveal": "Tap to reveal", + "tap_to_reveal": "Sit i uskan", "poll": { "vote": "Dɣeṛ", "closed": "Ifukk" @@ -143,10 +144,10 @@ "unfavorite": "Kkes seg yismenyifen", "menu": "Umuɣ", "hide": "Ffer", - "show_image": "Show image", - "show_gif": "Show GIF", - "show_video_player": "Show video player", - "tap_then_hold_to_show_menu": "Tap then hold to show menu" + "show_image": "Sken tugna", + "show_gif": "Sken GIF", + "show_video_player": "Sken ameɣri n tvidyut", + "tap_then_hold_to_show_menu": "Sit teǧǧeḍ aḍad-ik•im i wakken ad d-iffeɣ wumuɣ" }, "tag": { "url": "URL", @@ -220,7 +221,7 @@ "academia": "akadimi", "activism": "tinuɣmest", "food": "učči", - "furry": "furry", + "furry": "s taḍut", "games": "uraren", "general": "amatu", "journalism": "taɣamsa", @@ -447,10 +448,10 @@ } }, "accessibility": { - "show_avatar_image": "Show avatar image", - "edit_avatar_image": "Edit avatar image", - "show_banner_image": "Show banner image", - "double_tap_to_open_the_list": "Double tap to open the list" + "show_avatar_image": "Sken tugna n avaṭar", + "edit_avatar_image": "Ẓreg tugna n avaṭar", + "show_banner_image": "Sken tugna n uɣerrac", + "double_tap_to_open_the_list": "Sin isitiyen i twaledyawt n tebdart" } }, "follower": { @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "Posts", - "hashtags": "Hashtags", - "news": "News", - "for_you": "For You" - } + "posts": "Tisuffaɣ", + "hashtags": "Ihacṭagen", + "news": "Isallen", + "for_you": "I kečč·kem" + }, + "intro": "Tigi d tisuffaɣ i d-ijebbden s waṭas deg tama-inek•inem n Mastodon." }, "favorite": { "title": "Ismenyifen-ik·im" @@ -561,7 +563,7 @@ "disable_avatar_animation": "Sens ivaṭaren yettembiwilen", "disable_emoji_animation": "Sens imujiten yettembiwilen", "using_default_browser": "Seqdec iminig amezwer i twaledyawt n yiseɣwan", - "open_links_in_mastodon": "Open links in Mastodon" + "open_links_in_mastodon": "Ldi iseɣwan deg Mastodon" }, "boring_zone": { "title": "Tamnaḍt yessefcalen", diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index 61fb70338..c73f78188 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -129,6 +129,7 @@ "show_post": "Şandiyê nîşan bide", "show_user_profile": "Profîla bikarhêner nîşan bide", "content_warning": "Hişyariya naverokê", + "sensitive_content": "Naveroka hestiyarî", "media_content_warning": "Ji bo eşkerekirinê li derekî bitikîne", "tap_to_reveal": "Ji bo dîtinê bitikîne", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtag", "news": "Nûçe", "for_you": "Ji bo te" - } + }, + "intro": "Ev şandiyên ku di quncika Mastodon balê dikişîne." }, "favorite": { "title": "Bijarteyên te" diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json index ab079573e..adb425332 100644 --- a/Localization/StringsConvertor/input/ko_KR/app.json +++ b/Localization/StringsConvertor/input/ko_KR/app.json @@ -129,6 +129,7 @@ "show_post": "게시물 보기", "show_user_profile": "사용자 프로필 보기", "content_warning": "열람 주의", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json index 7a0e37a24..d54abec84 100644 --- a/Localization/StringsConvertor/input/nl_NL/app.json +++ b/Localization/StringsConvertor/input/nl_NL/app.json @@ -16,37 +16,37 @@ "poll_ended": "De peiling is beëindigd" }, "discard_post_content": { - "title": "Concept Verwijderen", + "title": "Verwijder concept", "message": "Bevestig het verwijderen van het concept bericht." }, "publish_post_failure": { "title": "Publicatiefout", - "message": "Het publiceren van het bericht is mislukt. Controleer alstublieft uw internetverbinding.", + "message": "Het publiceren van het bericht is mislukt. Controleer je internetverbinding.", "attachments_message": { "video_attach_with_photo": "Een video kan niet aan een bericht met afbeeldingen worden gekoppeld.", - "more_than_one_video": "Slechts één video kan aan een bericht worden gekoppeld." + "more_than_one_video": "Kan niet meer dan één video toevoegen." } }, "edit_profile_failure": { "title": "Profiel bewerken mislukt", - "message": "Het profiel kan niet bewerkt worden. Probeer het opnieuw." + "message": "Je profiel kan niet bewerkt worden. Probeer het opnieuw." }, "sign_out": { - "title": "Afmelden", - "message": "Weet u zeker dat u zich wilt afmelden?", - "confirm": "Afmelden" + "title": "Log-uit", + "message": "Weet je zeker dat je wilt uitloggen?", + "confirm": "Log-uit" }, "block_domain": { - "title": "Weet u zeker dat u alles van %s wilt blokkeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en wenselijker. U zult geen berichten meer zien van dit domein en volgers van dit domein worden verwijderd.", - "block_entire_domain": "Domein blokkeren" + "title": "Weet je het echt heel erg zeker dat je alles van %s wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende. Je zult geen berichten van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.", + "block_entire_domain": "Blokkeer domein" }, "save_photo_failure": { "title": "Foto Opslaan Mislukt", "message": "Geef toestemming om de foto op te slaan." }, "delete_post": { - "title": "Weet u zeker dat u dit bericht wilt verwijderen?", - "message": "Are you sure you want to delete this post?" + "title": "Verwijder Bericht", + "message": "Weet je zeker dat je dit bericht wilt verwijderen?" }, "clean_cache": { "title": "Cache-geheugen Wissen", @@ -59,49 +59,49 @@ "next": "Volgende", "previous": "Vorige", "open": "Open", - "add": "Toevoegen", - "remove": "Verwijderen", - "edit": "Bewerken", - "save": "Opslaan", - "ok": "Oké", + "add": "Voeg toe", + "remove": "Verwijder", + "edit": "Bewerk", + "save": "Bewaar", + "ok": "Ok", "done": "Klaar", "confirm": "Bevestigen", - "continue": "Doorgaan", - "compose": "Compose", - "cancel": "Annuleren", + "continue": "Ga verder", + "compose": "Schrijf bericht", + "cancel": "Annuleer", "discard": "Weggooien", "try_again": "Probeer Opnieuw", - "take_photo": "Foto Maken", - "save_photo": "Foto Opslaan", - "copy_photo": "Foto kopiëren", + "take_photo": "Maak foto", + "save_photo": "Bewaar foto", + "copy_photo": "Kopieer foto", "sign_in": "Aanmelden", "sign_up": "Registreren", "see_more": "Meer", "preview": "Voorvertoning", - "share": "Delen", + "share": "Deel", "share_user": "Delen %s", - "share_post": "Bericht Delen", + "share_post": "Deel bericht", "open_in_safari": "Open in Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Open in browser", "find_people": "Zoek mensen om te volgen", "manually_search": "Handmatig zoeken", "skip": "Overslaan", - "reply": "Reageren", + "reply": "Reageer", "report_user": "Rapporteer %s", "block_domain": "Blokkeer %s", "unblock_domain": "Deblokkeer %s", "settings": "Instellingen", - "delete": "Verwijderen" + "delete": "Verwijder" }, "tabs": { "home": "Start", - "search": "Zoeken", + "search": "Zoek", "notification": "Melding", "profile": "Profiel" }, "keyboard": { "common": { - "switch_to_tab": "Wisselen naar %s", + "switch_to_tab": "Overschakelen naar %s", "compose_new_post": "Nieuw Bericht Opstellen", "show_favorites": "Favorieten Weergeven", "open_settings": "Open Instellingen" @@ -112,10 +112,10 @@ "open_status": "Open Bericht", "open_author_profile": "Open Auteursprofiel", "open_reblogger_profile": "Open Delersprofiel", - "reply_status": "Reageren", + "reply_status": "Reageer", "toggle_reblog": "Delen bij berichten omschakelen", - "toggle_favorite": "Favoriet Omschakelen bij Bericht", - "toggle_content_warning": "Inhoudswaarschuwing Omschakelen", + "toggle_favorite": "Favoriet in-/uitschakelen bij Post", + "toggle_content_warning": "Inhoudswaarschuwing", "preview_image": "Voorvertoning Afbeelding" }, "segmented_control": { @@ -124,13 +124,14 @@ } }, "status": { - "user_reblogged": "%s gedeeld", + "user_reblogged": "%s heeft gedeeld", "user_replied_to": "Reactie op %s", "show_post": "Toon Bericht", "show_user_profile": "Toon Gebruikersprofiel", "content_warning": "Inhoudswaarschuwing", + "sensitive_content": "Gevoelige inhoud", "media_content_warning": "Tap hier om te tonen", - "tap_to_reveal": "Tap to reveal", + "tap_to_reveal": "Tik om te onthullen", "poll": { "vote": "Stemmen", "closed": "Gesloten" @@ -142,11 +143,11 @@ "favorite": "Toevoegen aan Favorieten", "unfavorite": "Verwijderen uit Favorieten", "menu": "Menu", - "hide": "Hide", - "show_image": "Show image", - "show_gif": "Show GIF", - "show_video_player": "Show video player", - "tap_then_hold_to_show_menu": "Tap then hold to show menu" + "hide": "Verberg", + "show_image": "Toon afbeelding", + "show_gif": "GIF weergeven", + "show_video_player": "Toon videospeler", + "tap_then_hold_to_show_menu": "Tik en houd vast om menu te tonen" }, "tag": { "url": "URL", @@ -157,10 +158,10 @@ "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Iedereen kan dit bericht zien maar het wordt niet in de publieke tijdlijn getoond.", + "private": "Alleen hun volgers kunnen dit bericht zien.", + "private_from_me": "Alleen mijn volgers kunnen dit bericht zien.", + "direct": "Alleen de vermelde persoon kan dit bericht zien." } }, "friendship": { @@ -206,13 +207,13 @@ "scene": { "welcome": { "slogan": "Sociale media terug in uw handen.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Aan de slag", + "log_in": "Log in" }, "server_picker": { "title": "Kies een server, welke dan ook.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Kies een gemeenschap gebaseerd op jouw interesses, regio of een algemeen doel.", + "subtitle_extend": "Kies een gemeenschap gebaseerd op jouw interesses, regio, of een algemeen doel. Elke gemeenschap wordt beheerd door een volledig onafhankelijke organisatie of individu.", "button": { "category": { "all": "Alles", @@ -265,11 +266,11 @@ }, "password": { "placeholder": "wachtwoord", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Je wachtwoord moet ten minste:", + "character_limit": "8 tekens", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "ingeschakeld", + "unchecked": "uitgeschakeld" }, "hint": "Uw wachtwoord moet ten minste acht tekens bevatten" }, @@ -321,7 +322,7 @@ "subtitle": "We hebben een e-mail gestuurd naar %s,\nklik op de link om uw account te bevestigen.", "button": { "open_email_app": "Email Openen", - "resend": "Resend" + "resend": "Verstuur opnieuw" }, "dont_receive_email": { "title": "Controleer uw emailadres", @@ -424,40 +425,40 @@ "segmented_control": { "posts": "Berichten", "replies": "Reacties", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Berichten en reacties", "media": "Media", - "about": "About" + "about": "Informatie" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Negeer account", + "message": "Bevestig om %s te negeren" }, "confirm_unmute_user": { "title": "Account Negeren", "message": "Bevestig om %s te negeren" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Blokkeer account", + "message": "Bevestig om %s te blokkeren" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Deblokkeer Account", + "message": "Bevestig om %s te deblokkeren" } }, "accessibility": { - "show_avatar_image": "Show avatar image", - "edit_avatar_image": "Edit avatar image", - "show_banner_image": "Show banner image", - "double_tap_to_open_the_list": "Double tap to open the list" + "show_avatar_image": "Toon avatar-afbeelding", + "edit_avatar_image": "Bewerk avatar-afbeelding", + "show_banner_image": "Toon banner-afbeelding", + "double_tap_to_open_the_list": "Dubbel tikken om de lijst te openen" } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "Volgers van andere servers worden niet weergegeven." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Volgers van andere servers worden niet weergegeven." }, "search": { "title": "Zoeken", @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "Posts", + "posts": "Berichten", "hashtags": "Hashtags", - "news": "News", - "for_you": "For You" - } + "news": "Nieuws", + "for_you": "Voor jou" + }, + "intro": "Dit zijn de berichten die populair zijn in jouw Mastodon-kringen." }, "favorite": { "title": "Uw favorieten" @@ -509,12 +511,12 @@ "Mentions": "Vermeldingen" }, "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": "volgt je", + "favorited_your_post": "heeft je bericht als favoriet gemrkeerd", + "reblogged_your_post": "deelde je bericht", + "mentioned_you": "noemde je", + "request_to_follow_you": "verzoek je te volgen", + "poll_has_ended": "de peiling is beëindigd" }, "keyobard": { "show_everything": "Alles weergeven", @@ -535,11 +537,11 @@ "dark": "Altijd Donker" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Opmaak", + "use_system": "Gebruik systeem", + "really_dark": "Echt donker", + "sorta_dark": "Donker", + "light": "Licht" }, "notifications": { "title": "Meldingen", @@ -583,17 +585,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Rapporteer", "title": "Rapporteer %s", "step1": "Stap 1 van 2", "step2": "Stap 2 van 2", "content1": "Zijn er nog meer berichten die u aan het rapport wilt toevoegen?", "content2": "Is er iets anders over dit rapport dat de moderators zouden moeten weten?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Bedankt voor het rapporteren, we zullen hiernaar kijken.", "send": "Stuur rapport", "skip_to_send": "Verstuur zonder opmerkingen", "text_placeholder": "Schrijf of plak aanvullende opmerkingen", - "reported": "REPORTED" + "reported": "Gerapporteerd" }, "preview": { "keyboard": { @@ -603,14 +605,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": "Huidige geselecteerde profiel: %s. Dubbel-tik en houd vast om account te wisselen", + "dismiss_account_switcher": "Annuleer account wisselen", + "add_account": "Voeg account toe" }, "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": "Nieuw in Mastodon", + "multiple_account_switch_intro_description": "Schakel tussen meerdere accounts door de profielknop in te drukken en vast te houden.", + "accessibility_hint": "Tik tweemaal om het popup-scherm te sluiten" } } } \ No newline at end of file diff --git a/Localization/StringsConvertor/input/nl_NL/ios-infoPlist.json b/Localization/StringsConvertor/input/nl_NL/ios-infoPlist.json index 0a1ed1510..66b6a9571 100644 --- a/Localization/StringsConvertor/input/nl_NL/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/nl_NL/ios-infoPlist.json @@ -2,5 +2,5 @@ "NSCameraUsageDescription": "Gebruikt om foto's te nemen voor je berichten", "NSPhotoLibraryAddUsageDescription": "Gebruikt om foto's op te slaan in de fotobibliotheek", "NewPostShortcutItemTitle": "Nieuw Bericht", - "SearchShortcutItemTitle": "Zoeken" + "SearchShortcutItemTitle": "Zoek" } diff --git a/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict b/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict index 503ff9dbd..da8ea084c 100644 --- a/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + 1 notificação não lida other - %ld unread notification + %ld notificações não lidas a11y.plural.count.input_limit_exceeds NSStringLocalizedFormatKey - Input limit exceeds %#@character_count@ + Limite de caracteres excedido %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -29,15 +29,15 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 carácter other - %ld characters + %ld caracteres a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + Limite de caracteres continua excedido %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -45,9 +45,9 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 carácter other - %ld characters + %ld caracteres plural.count.metric_formatted.post @@ -77,9 +77,9 @@ NSStringFormatValueTypeKey ld one - 1 post + 1 toot other - %ld posts + %ld toots plural.count.favorite @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1 favorite + 1 favorito other - %ld favorites + %ld favoritos plural.count.reblog @@ -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 pessoa falando other - %ld people talking + %ld pessoas falando plural.count.following @@ -189,9 +189,9 @@ NSStringFormatValueTypeKey ld one - 1 following + 1 seguindo other - %ld following + %ld seguindo plural.count.follower @@ -205,9 +205,9 @@ NSStringFormatValueTypeKey ld one - 1 follower + 1 seguidor other - %ld followers + %ld seguidores date.year.left @@ -221,9 +221,9 @@ NSStringFormatValueTypeKey ld one - 1 year left + 1 ano restante other - %ld years left + %ld anos restantes date.month.left @@ -237,9 +237,9 @@ NSStringFormatValueTypeKey ld one - 1 months left + 1 mês restante other - %ld months left + %ld meses restantes date.day.left @@ -253,9 +253,9 @@ NSStringFormatValueTypeKey ld one - 1 day left + 1 dia restante other - %ld days left + %ld dias restantes date.hour.left @@ -269,9 +269,9 @@ NSStringFormatValueTypeKey ld one - 1 hour left + 1 hora restante other - %ld hours left + %ld horas restantes date.minute.left @@ -285,9 +285,9 @@ NSStringFormatValueTypeKey ld one - 1 minute left + 1 minuto restante other - %ld minutes left + %ld minutos restantes date.second.left @@ -301,9 +301,9 @@ NSStringFormatValueTypeKey ld one - 1 second left + 1 segundo restante other - %ld seconds left + %ld segundos restantes date.year.ago.abbr @@ -317,9 +317,9 @@ NSStringFormatValueTypeKey ld one - 1y ago + 1 ano atrás other - %ldy ago + %ldy anos atrás date.month.ago.abbr @@ -333,9 +333,9 @@ NSStringFormatValueTypeKey ld one - 1M ago + 1 mês atrás other - %ldM ago + %ldM meses atrás date.day.ago.abbr @@ -349,9 +349,9 @@ NSStringFormatValueTypeKey ld one - 1d ago + 1 dia atrás other - %ldd ago + %ldd dias atrás date.hour.ago.abbr @@ -365,9 +365,9 @@ NSStringFormatValueTypeKey ld one - 1h ago + 1h atrás other - %ldh ago + %ldh horas atrás date.minute.ago.abbr @@ -381,9 +381,9 @@ NSStringFormatValueTypeKey ld one - 1m ago + Há 1 min other - %ldm ago + Há %ldm minutos date.second.ago.abbr @@ -397,9 +397,9 @@ NSStringFormatValueTypeKey ld one - 1s ago + Há 1 segundo other - %lds ago + Há %lds segundos diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json index 548c5adae..1eb84ea0c 100644 --- a/Localization/StringsConvertor/input/pt_BR/app.json +++ b/Localization/StringsConvertor/input/pt_BR/app.json @@ -2,84 +2,84 @@ "common": { "alerts": { "common": { - "please_try_again": "Please try again.", - "please_try_again_later": "Please try again later." + "please_try_again": "Por favor tente novamente.", + "please_try_again_later": "Tente novamente mais tarde." }, "sign_up_failure": { "title": "Sign Up Failure" }, "server_error": { - "title": "Server Error" + "title": "Erro do servidor" }, "vote_failure": { - "title": "Vote Failure", - "poll_ended": "The poll has ended" + "title": "Falha ao votar", + "poll_ended": "Essa enquete terminou" }, "discard_post_content": { - "title": "Discard Draft", + "title": "Deletar Rascunho", "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": "Falha ao publicar", + "message": "Falha ao publicar o post.\nPor favor verifique a sua conexão de internet.", "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." + "video_attach_with_photo": "Não é possível adicionar um vídeo à um toot que já contém imagens.", + "more_than_one_video": "Não é possível adicionar mais de um vídeo." } }, "edit_profile_failure": { - "title": "Edit Profile Error", - "message": "Cannot edit profile. Please try again." + "title": "Falha ao atualizar perfil", + "message": "Não foi possível atualizar o perfil. Por favor tente novamente." }, "sign_out": { - "title": "Sign Out", - "message": "Are you sure you want to sign out?", - "confirm": "Sign Out" + "title": "Sair", + "message": "Você tem certeza que deseja sair?", + "confirm": "Sair" }, "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" + "title": "Você tem absoluta certeza de que quer bloquear todo %s? Na maioria dos casos é suficiente e preferível bloquear ou ignorar algumas contas específicas. Você não verá conteúdos desse domínio, e todos os seus seguidores desse domínio serão removidos.", + "block_entire_domain": "Bloquear Domínio" }, "save_photo_failure": { - "title": "Save Photo Failure", + "title": "Falha ao salvar foto", "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Delete Post", - "message": "Are you sure you want to delete this post?" + "title": "Deletar Toot", + "message": "Você tem certeza que deseja deletar esse toot?" }, "clean_cache": { - "title": "Clean Cache", - "message": "Successfully cleaned %s cache." + "title": "Limpar Cache", + "message": "%s do cache removidos com sucesso." } }, "controls": { "actions": { - "back": "Back", - "next": "Next", - "previous": "Previous", - "open": "Open", - "add": "Add", - "remove": "Remove", - "edit": "Edit", - "save": "Save", + "back": "Voltar", + "next": "Próximo", + "previous": "Anterior", + "open": "Abrir", + "add": "Adicionar", + "remove": "Remover", + "edit": "Editar", + "save": "Salvar", "ok": "OK", - "done": "Done", - "confirm": "Confirm", - "continue": "Continue", - "compose": "Compose", - "cancel": "Cancel", - "discard": "Discard", - "try_again": "Try Again", + "done": "Concluir", + "confirm": "Confirmar", + "continue": "Continuar", + "compose": "Compor", + "cancel": "Cancelar", + "discard": "Descartar", + "try_again": "Tente novamente", "take_photo": "Take Photo", - "save_photo": "Save Photo", - "copy_photo": "Copy Photo", + "save_photo": "Salvar foto", + "copy_photo": "Copiar foto", "sign_in": "Sign In", "sign_up": "Sign Up", "see_more": "See More", "preview": "Preview", - "share": "Share", - "share_user": "Share %s", + "share": "Compartilhar", + "share_user": "Compartilhar %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", "open_in_browser": "Open in Browser", @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -136,7 +137,7 @@ "closed": "Closed" }, "actions": { - "reply": "Reply", + "reply": "Responder", "reblog": "Reblog", "unreblog": "Undo reblog", "favorite": "Favorite", @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json index 548c5adae..a8fc9031f 100644 --- a/Localization/StringsConvertor/input/pt_PT/app.json +++ b/Localization/StringsConvertor/input/pt_PT/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json index 1b776e792..5d144f90d 100644 --- a/Localization/StringsConvertor/input/ro_RO/app.json +++ b/Localization/StringsConvertor/input/ro_RO/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index ca040eeb8..b113e1fb4 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -129,6 +129,7 @@ "show_post": "Показать пост", "show_user_profile": "Показать профиль пользователя", "content_warning": "Предупреждение о содержании", + "sensitive_content": "Sensitive Content", "media_content_warning": "Нажмите в любом месте, чтобы показать", "tap_to_reveal": "Нажмите, чтобы показать", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Ваше избранное" diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 769aadc5b..5bd48289e 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -129,6 +129,7 @@ "show_post": "Näytä julkaisu", "show_user_profile": "Näytä tili", "content_warning": "Sisältövaroitus", + "sensitive_content": "Sensitive Content", "media_content_warning": "Napauta mistä tahansa paljastaaksesi", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Omat suosikit" diff --git a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict index 50eab95bd..a14b5f622 100644 --- a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + 1 oläst notis other - %ld unread notification + %ld olästa notiser a11y.plural.count.input_limit_exceeds NSStringLocalizedFormatKey - Input limit exceeds %#@character_count@ + Inmatningsgränsen överskrider %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -37,7 +37,7 @@ a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + Inmatningsgränsen återstår %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -61,9 +61,9 @@ NSStringFormatValueTypeKey ld one - post + inlägg other - posts + inläggen plural.count.post @@ -77,9 +77,9 @@ NSStringFormatValueTypeKey ld one - 1 post + 1 inlägg other - %ld posts + %ld inlägg plural.count.favorite @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1 favorite + 1 favorit other - %ld favorites + %ld favoriter plural.count.reblog @@ -109,9 +109,9 @@ NSStringFormatValueTypeKey ld one - 1 reblog + %ld ompostning other - %ld reblogs + %ld ompostningar plural.count.reply @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 reply + 1 svar other - %ld replies + %ld svar plural.count.vote @@ -157,9 +157,9 @@ NSStringFormatValueTypeKey ld one - 1 voter + %ld röst other - %ld voters + %ld röster plural.people_talking @@ -173,9 +173,9 @@ NSStringFormatValueTypeKey ld one - 1 people talking + %ld person diskuterar other - %ld people talking + %ld personer diskuterar plural.count.following @@ -189,9 +189,9 @@ NSStringFormatValueTypeKey ld one - 1 following + %ld följer other - %ld following + %ld följer plural.count.follower @@ -221,9 +221,9 @@ NSStringFormatValueTypeKey ld one - 1 year left + %ld år kvar other - %ld years left + %ld år kvar date.month.left @@ -237,9 +237,9 @@ NSStringFormatValueTypeKey ld one - 1 months left + %ld månad kvar other - %ld months left + %ld månader kvar date.day.left @@ -253,9 +253,9 @@ NSStringFormatValueTypeKey ld one - 1 day left + %ld dag kvar other - %ld days left + %ld dagar kvar date.hour.left @@ -269,9 +269,9 @@ NSStringFormatValueTypeKey ld one - 1 hour left + %ld timme kvar other - %ld hours left + %ld timmar kvar date.minute.left @@ -285,9 +285,9 @@ NSStringFormatValueTypeKey ld one - 1 minute left + %ld minut kvar other - %ld minutes left + %ld minuter kvar date.second.left @@ -301,9 +301,9 @@ NSStringFormatValueTypeKey ld one - 1 second left + %ld sekund kvar other - %ld seconds left + %ld sekunder kvar date.year.ago.abbr @@ -317,9 +317,9 @@ NSStringFormatValueTypeKey ld one - 1y ago + %ldå sedan other - %ldy ago + %ldå sedan date.month.ago.abbr @@ -333,9 +333,9 @@ NSStringFormatValueTypeKey ld one - 1M ago + %ldmån sedan other - %ldM ago + %ld mån sedan date.day.ago.abbr @@ -349,9 +349,9 @@ NSStringFormatValueTypeKey ld one - 1d ago + %ldd sedan other - %ldd ago + %ldd sedan date.hour.ago.abbr @@ -365,9 +365,9 @@ NSStringFormatValueTypeKey ld one - 1h ago + %ldt sedan other - %ldh ago + %ldt sedan date.minute.ago.abbr @@ -381,9 +381,9 @@ NSStringFormatValueTypeKey ld one - 1m ago + %ld min sedan other - %ldm ago + %ld min sedan date.second.ago.abbr @@ -397,9 +397,9 @@ NSStringFormatValueTypeKey ld one - 1s sedan + %lds sedan other - %lds ago + %lds sedan diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index f18ce2dc8..7bcd8ffd4 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -6,232 +6,233 @@ "please_try_again_later": "Var god försök igen senare." }, "sign_up_failure": { - "title": "Sign Up Failure" + "title": "Registrering misslyckades" }, "server_error": { "title": "Serverfel" }, "vote_failure": { - "title": "Vote Failure", + "title": "Röstning misslyckades", "poll_ended": "Omröstningen har avslutats" }, "discard_post_content": { - "title": "Discard Draft", - "message": "Confirm to discard composed post content." + "title": "Släng utkast", + "message": "Bekräfta för att slänga inläggsutkast." }, "publish_post_failure": { - "title": "Publish Failure", - "message": "Failed to publish the post.\nPlease check your internet connection.", + "title": "Publicering misslyckades", + "message": "Det gick inte att publicera inlägget.\nKontrollera din internetanslutning.", "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." + "video_attach_with_photo": "Det går inte att bifoga en video till en status som redan innehåller bilder.", + "more_than_one_video": "Det går inte att bifoga mer än en video." } }, "edit_profile_failure": { - "title": "Edit Profile Error", - "message": "Cannot edit profile. Please try again." + "title": "Fel vid profilredigering", + "message": "Kan inte redigera profil. Försök igen." }, "sign_out": { - "title": "Sign Out", + "title": "Logga ut", "message": "Är du säker på att du vill logga ut?", - "confirm": "Sign Out" + "confirm": "Logga ut" }, "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" + "title": "Är du verkligen, verkligen säker på att du vill blockera hela %s? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen och dina följare från den domänen kommer att tas bort.", + "block_entire_domain": "Blockera domän" }, "save_photo_failure": { - "title": "Save Photo Failure", - "message": "Please enable the photo library access permission to save the photo." + "title": "Kunde inte spara foto", + "message": "Aktivera åtkomst till Bilder för att spara bilden." }, "delete_post": { - "title": "Delete Post", - "message": "Are you sure you want to delete this post?" + "title": "Radera inlägg", + "message": "Är du säker på att du vill radera detta inlägg?" }, "clean_cache": { "title": "Rensa cache", - "message": "Successfully cleaned %s cache." + "message": "Rensade %s cache." } }, "controls": { "actions": { - "back": "Back", - "next": "Next", - "previous": "Previous", - "open": "Open", - "add": "Add", - "remove": "Remove", + "back": "Tillbaka", + "next": "Nästa", + "previous": "Tidigare", + "open": "Öppna", + "add": "Lägg till", + "remove": "Radera", "edit": "Redigera", "save": "Spara", "ok": "OK", "done": "Klar", - "confirm": "Confirm", + "confirm": "Bekräfta", "continue": "Fortsätt", - "compose": "Compose", + "compose": "Skriv", "cancel": "Avbryt", - "discard": "Discard", + "discard": "Kasta", "try_again": "Försök igen", - "take_photo": "Take Photo", + "take_photo": "Ta foto", "save_photo": "Spara foto", "copy_photo": "Kopiera foto", - "sign_in": "Sign In", - "sign_up": "Sign Up", - "see_more": "See More", - "preview": "Preview", + "sign_in": "Logga in", + "sign_up": "Registrera dig", + "see_more": "Visa mer", + "preview": "Förhandstitt", "share": "Dela", "share_user": "Dela %s", - "share_post": "Share Post", + "share_post": "Dela inlägg", "open_in_safari": "Öppna i Safari", - "open_in_browser": "Open in Browser", - "find_people": "Find people to follow", - "manually_search": "Manually search instead", - "skip": "Skip", - "reply": "Reply", + "open_in_browser": "Öppna i webbläsare", + "find_people": "Hitta personer att följa", + "manually_search": "Sök manuellt istället", + "skip": "Hoppa över", + "reply": "Svara", "report_user": "Rapportera %s", - "block_domain": "Block %s", - "unblock_domain": "Unblock %s", + "block_domain": "Blockera %s", + "unblock_domain": "Avblockera %s", "settings": "Inställningar", "delete": "Radera" }, "tabs": { - "home": "Home", - "search": "Search", - "notification": "Notification", + "home": "Hem", + "search": "Sök", + "notification": "Avisering", "profile": "Profil" }, "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": "Växla till %s", + "compose_new_post": "Skriv nytt inlägg", + "show_favorites": "Visa favoriter", + "open_settings": "Öppna inställningar" }, "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", - "toggle_reblog": "Toggle Reblog on Post", - "toggle_favorite": "Toggle Favorite on Post", - "toggle_content_warning": "Toggle Content Warning", - "preview_image": "Preview Image" + "previous_status": "Föregående inlägg", + "next_status": "Nästa inlägg", + "open_status": "Öppna inlägg", + "open_author_profile": "Öppna författarens profil", + "open_reblogger_profile": "Öppna ompostarens profil", + "reply_status": "Svara på inlägg", + "toggle_reblog": "Växla ompostning på inlägg", + "toggle_favorite": "Växla favorit på inlägg", + "toggle_content_warning": "Växla innehållsvarning", + "preview_image": "Förhandsgranska bild" }, "segmented_control": { - "previous_section": "Previous Section", - "next_section": "Next Section" + "previous_section": "Föregående avsnitt", + "next_section": "Nästa avsnitt" } }, "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", - "media_content_warning": "Tap anywhere to reveal", - "tap_to_reveal": "Tap to reveal", + "user_reblogged": "%s ompostade", + "user_replied_to": "Svarade på %s", + "show_post": "Visa inlägg", + "show_user_profile": "Visa användarprofil", + "content_warning": "Innehållsvarning", + "sensitive_content": "Känsligt innehåll", + "media_content_warning": "Tryck var som helst för att visa", + "tap_to_reveal": "Tryck för att visa", "poll": { - "vote": "Vote", - "closed": "Closed" + "vote": "Rösta", + "closed": "Stängd" }, "actions": { - "reply": "Reply", - "reblog": "Reblog", - "unreblog": "Undo reblog", - "favorite": "Favorite", - "unfavorite": "Unfavorite", + "reply": "Svara", + "reblog": "Omposta", + "unreblog": "Ångra ompostning", + "favorite": "Favorit", + "unfavorite": "Ta bort favorit", "menu": "Meny", "hide": "Dölj", - "show_image": "Show image", - "show_gif": "Show GIF", - "show_video_player": "Show video player", - "tap_then_hold_to_show_menu": "Tap then hold to show menu" + "show_image": "Visa bild", + "show_gif": "Visa GIF", + "show_video_player": "Visa videospelare", + "tap_then_hold_to_show_menu": "Tryck och håll ned för att visa menyn" }, "tag": { "url": "URL", - "mention": "Mention", - "link": "Link", - "hashtag": "Hashtag", - "email": "Email", + "mention": "Nämn", + "link": "Länk", + "hashtag": "Hashtagg", + "email": "E-post", "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "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." } }, "friendship": { "follow": "Följ", "following": "Följer", - "request": "Request", - "pending": "Pending", - "block": "Block", - "block_user": "Block %s", - "block_domain": "Block %s", - "unblock": "Unblock", - "unblock_user": "Unblock %s", - "blocked": "Blocked", - "mute": "Mute", - "mute_user": "Mute %s", - "unmute": "Unmute", - "unmute_user": "Unmute %s", - "muted": "Muted", - "edit_info": "Edit Info" + "request": "Begäran", + "pending": "Väntande", + "block": "Blockera", + "block_user": "Blockera %s", + "block_domain": "Blockera %s", + "unblock": "Avblockera", + "unblock_user": "Avblockera %s", + "blocked": "Blockerad", + "mute": "Tysta", + "mute_user": "Tysta %s", + "unmute": "Avtysta", + "unmute_user": "Avtysta %s", + "muted": "Tystad", + "edit_info": "Redigera info" }, "timeline": { - "filtered": "Filtered", + "filtered": "Filtrerat", "timestamp": { "now": "Nu" }, "loader": { - "load_missing_posts": "Load missing posts", - "loading_missing_posts": "Loading missing posts...", + "load_missing_posts": "Ladda saknade inlägg", + "loading_missing_posts": "Laddar saknade inlägg...", "show_more_replies": "Visa fler svar" }, "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": "Inga inlägg hittades", + "blocking_warning": "Du kan inte visa användarens profil\nförrän du avblockerar dem.\nDin profil ser ut så här för dem.", + "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.", + "user_suspended_warning": "%ss konto har blivit avstängt." } } } }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands.", + "slogan": "Socialt nätverkande\ntillbaka i dina händer.", "get_started": "Kom igång", "log_in": "Logga in" }, "server_picker": { - "title": "Mastodon is made of users in different communities.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "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.", "button": { "category": { - "all": "All", + "all": "Alla", "all_accessiblity_description": "Kategori: Alla", - "academia": "academia", - "activism": "activism", - "food": "food", + "academia": "vetenskap", + "activism": "aktivism", + "food": "mat", "furry": "furry", - "games": "games", - "general": "general", - "journalism": "journalism", + "games": "spel", + "general": "allmänt", + "journalism": "journalistik", "lgbt": "lgbt", - "regional": "regional", - "art": "art", - "music": "music", - "tech": "tech" + "regional": "regionalt", + "art": "konst", + "music": "musik", + "tech": "teknik" }, - "see_less": "See Less", - "see_more": "See More" + "see_less": "Visa mindre", + "see_more": "Visa mer" }, "label": { "language": "SPRÅK", @@ -239,378 +240,379 @@ "category": "KATEGORI" }, "input": { - "placeholder": "Search communities" + "placeholder": "Sök gemenskaper" }, "empty_state": { - "finding_servers": "Finding available servers...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "finding_servers": "Söker tillgängliga servrar...", + "bad_network": "Något gick fel när data laddades. Försök igen eller kontrollera din internetanslutning.", "no_results": "Inga resultat" } }, "register": { - "title": "Let’s get you set up on %s", + "title": "Låt oss få igång dig på %s", "input": { "avatar": { "delete": "Radera" }, "username": { - "placeholder": "username", - "duplicate_prompt": "This username is taken." + "placeholder": "användarnamn", + "duplicate_prompt": "Det här användarnamnet är redan taget." }, "display_name": { - "placeholder": "display name" + "placeholder": "visningsnamn" }, "email": { - "placeholder": "email" + "placeholder": "e-post" }, "password": { - "placeholder": "password", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "placeholder": "lösenord", + "require": "Ditt lösenord behöver minst:", + "character_limit": "8 tecken", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "markerad", + "unchecked": "avmarkerad" }, - "hint": "Your password needs at least eight characters" + "hint": "Ditt lösenord måste bestå av minst 8 tecken" }, "invite": { - "registration_user_invite_request": "Why do you want to join?" + "registration_user_invite_request": "Varför vill du gå med?" } }, "error": { "item": { "username": "Användarnamn", - "email": "Email", + "email": "E-post", "password": "Lösenord", - "agreement": "Agreement", - "locale": "Locale", - "reason": "Reason" + "agreement": "Avtal", + "locale": "Språk", + "reason": "Anledning" }, "reason": { - "blocked": "%s contains a disallowed email provider", - "unreachable": "%s does not seem to exist", - "taken": "%s is already in use", - "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" + "blocked": "%s innehåller en icke tillåten e-postleverantör", + "unreachable": "%s verkar inte existera", + "taken": "%s används redan", + "reserved": "%s är ett reserverat nyckelord", + "accepted": "%s måste godkännas", + "blank": "%s krävs", + "invalid": "%s är ogiltig", + "too_long": "%s är för långt", + "too_short": "%s är för kort", + "inclusion": "%s är inte ett värde som stöds" }, "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": "Användarnamnet kan bara innehålla alfanumeriska tecken och understreck", + "username_too_long": "Användarnamnet är för långt (kan inte vara längre än 30 tecken)", + "email_invalid": "Detta är inte en giltig e-postadress", + "password_too_short": "Lösenordet är för kort (det måste vara minst 8 tecken)" } } }, "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", + "title": "Några grundregler.", + "subtitle": "Dessa sätts och verkställs av moderatorerna på %s.", + "prompt": "Genom att fortsätta omfattas du av villkoren för tjänsten och sekretesspolicyn för %s.", + "terms_of_service": "användarvillkor", "privacy_policy": "integritetspolicy", "button": { - "confirm": "I Agree" + "confirm": "Jag godkänner" } }, "confirm_email": { - "title": "One last thing.", - "subtitle": "Tap the link we emailed to you to verify your account.", + "title": "En sista sak.", + "subtitle": "Tryck på länken vi e-postade till dig för att verifiera ditt konto.", "button": { - "open_email_app": "Open Email App", - "resend": "Resend" + "open_email_app": "Öppna epostappen", + "resend": "Skicka igen" }, "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": "Kolla din e-post", + "description": "Kontrollera om din e-postadress är korrekt samt din skräppostmapp om du inte har gjort det.", + "resend_email": "Skicka e-postmeddelande igen" }, "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": "Kolla din inkorg.", + "description": "Vi har precis skickat ett e-postmeddelande till dig. Kontrollera din skräpmapp om du inte har gjort det.", + "mail": "E-post", + "open_email_client": "Öppna e-postklient" } }, "home_timeline": { - "title": "Home", + "title": "Hem", "navigation_bar_state": { "offline": "Offline", - "new_posts": "See new posts", - "published": "Published!", - "Publishing": "Publishing post..." + "new_posts": "Se nya inlägg", + "published": "Publicerad!", + "Publishing": "Publicerar inlägget..." } }, "suggestion_account": { - "title": "Find People to Follow", - "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + "title": "Hitta personer att följa", + "follow_explain": "När du följer någon, kommer du att se deras inlägg i ditt hemflöde." }, "compose": { "title": { - "new_post": "New Post", - "new_reply": "New Reply" + "new_post": "Nytt inlägg", + "new_reply": "Nytt svar" }, "media_selection": { - "camera": "Take Photo", + "camera": "Ta foto", "photo_library": "Fotobibliotek", "browse": "Bläddra" }, - "content_input_placeholder": "Type or paste what’s on your mind", + "content_input_placeholder": "Skriv eller klistra in vad du har på hjärtat", "compose_action": "Publicera", - "replying_to_user": "replying to %s", + "replying_to_user": "svarar %s", "attachment": { - "photo": "photo", + "photo": "foto", "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..." + "attachment_broken": "Denna %s är trasig och kan inte\nladdas upp till Mastodon.", + "description_photo": "Beskriv fotot för synskadade...", + "description_video": "Beskriv videon för de synskadade..." }, "poll": { "duration_time": "Varaktighet: %s", "thirty_minutes": "30 minuter", - "one_hour": "1 Hour", - "six_hours": "6 Hours", - "one_day": "1 Day", - "three_days": "3 Days", - "seven_days": "7 Days", - "option_number": "Option %ld" + "one_hour": "1 timme", + "six_hours": "6 timmar", + "one_day": "1dag", + "three_days": "3 dagar", + "seven_days": "7 dagar", + "option_number": "Alternativ %ld" }, "content_warning": { - "placeholder": "Write an accurate warning here..." + "placeholder": "Skriv en noggrann varning här..." }, "visibility": { - "public": "Public", - "unlisted": "Unlisted", - "private": "Followers only", - "direct": "Only people I mention" + "public": "Publik", + "unlisted": "Olistad", + "private": "Endast följare", + "direct": "Bara personer jag nämner" }, "auto_complete": { - "space_to_add": "Space to add" + "space_to_add": "Mellanslag att lägga till" }, "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": "Lägg till bilaga", + "append_poll": "Lägg till omröstning", + "remove_poll": "Ta bort omröstning", + "custom_emoji_picker": "Anpassad emoji-väljare", + "enable_content_warning": "Aktivera innehållsvarning", + "disable_content_warning": "Inaktivera innehållsvarning", + "post_visibility_menu": "Inläggssynlighetsmeny" }, "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": "Kasta inlägget", + "publish_post": "Publicerar inlägget", + "toggle_poll": "Växla omröstning", + "toggle_content_warning": "Växla innehållsvarning", + "append_attachment_entry": "Lägg till bilaga - %s", + "select_visibility_entry": "Välj synlighet - %s" } }, "profile": { "dashboard": { - "posts": "posts", - "following": "following", - "followers": "followers" + "posts": "inlägg", + "following": "följer", + "followers": "följare" }, "fields": { - "add_row": "Add Row", + "add_row": "Lägg till rad", "placeholder": { - "label": "Label", - "content": "Content" + "label": "Etikett", + "content": "Innehåll" } }, "segmented_control": { - "posts": "Posts", - "replies": "Replies", - "posts_and_replies": "Posts and Replies", + "posts": "Inlägg", + "replies": "Svar", + "posts_and_replies": "Inlägg och svar", "media": "Media", "about": "Om" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Tysta konto", + "message": "Bekräfta för att tysta %s" }, "confirm_unmute_user": { - "title": "Unmute Account", - "message": "Confirm to unmute %s" + "title": "Avtysta konto", + "message": "Bekräfta för att avtysta %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Blockera konto", + "message": "Bekräfta för att blockera %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Avblockera konto", + "message": "Bekräfta för att avblockera %s" } }, "accessibility": { - "show_avatar_image": "Show avatar image", - "edit_avatar_image": "Edit avatar image", - "show_banner_image": "Show banner image", - "double_tap_to_open_the_list": "Double tap to open the list" + "show_avatar_image": "Visa profilbild", + "edit_avatar_image": "Redigera profilbild", + "show_banner_image": "Visa banner", + "double_tap_to_open_the_list": "Dubbeltryck för att öppna listan" } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "Följare från andra servrar visas inte." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Följda på andra servrar visas inte." }, "search": { - "title": "Search", + "title": "Sök", "search_bar": { - "placeholder": "Search hashtags and users", + "placeholder": "Sök hashtaggar och användare", "cancel": "Avbryt" }, "recommend": { - "button_text": "See All", + "button_text": "Visa alla", "hash_tag": { - "title": "Trending on Mastodon", - "description": "Hashtags that are getting quite a bit of attention", - "people_talking": "%s people are talking" + "title": "Trendar på Mastodon", + "description": "Hashtaggar som får en hel del uppmärksamhet", + "people_talking": "%s personer diskuterar" }, "accounts": { - "title": "Accounts you might like", - "description": "You may like to follow these accounts", + "title": "Konton som du kanske gillar", + "description": "Du kanske vill följa dessa konton", "follow": "Följ" } }, "searching": { "segment": { - "all": "All", - "people": "People", - "hashtags": "Hashtags", - "posts": "Posts" + "all": "Allt", + "people": "Personer", + "hashtags": "Hashtaggar", + "posts": "Inlägg" }, "empty_state": { "no_results": "Inga resultat" }, - "recent_search": "Recent searches", + "recent_search": "Senaste sökningarna", "clear": "Rensa" } }, "discovery": { "tabs": { - "posts": "Posts", - "hashtags": "Hashtags", - "news": "News", - "for_you": "For You" - } + "posts": "Inlägg", + "hashtags": "Hashtaggar", + "news": "Nyheter", + "for_you": "För dig" + }, + "intro": "Detta är de inlägg som engagerar i ditt hörn av Mastodon." }, "favorite": { - "title": "Your Favorites" + "title": "Dina favoriter" }, "notification": { "title": { - "Everything": "Everything", - "Mentions": "Mentions" + "Everything": "Allting", + "Mentions": "Omnämningar" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", + "followed_you": "följde dig", + "favorited_your_post": "favoriserade ditt inlägg", + "reblogged_your_post": "ompostade ditt inlägg", "mentioned_you": "nämnde dig", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "request_to_follow_you": "begär att följa dig", + "poll_has_ended": "omröstningen har avslutats" }, "keyobard": { - "show_everything": "Show Everything", - "show_mentions": "Show Mentions" + "show_everything": "Visa allt", + "show_mentions": "Visa omnämningar" } }, "thread": { - "back_title": "Post", - "title": "Post from %s" + "back_title": "Inlägg", + "title": "Inlägg från %s" }, "settings": { "title": "Inställningar", "section": { "appearance": { - "title": "Appearance", - "automatic": "Automatic", - "light": "Always Light", - "dark": "Always Dark" + "title": "Utseende", + "automatic": "Automatisk", + "light": "Alltid ljus", + "dark": "Alltid mörk" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", + "title": "Utseende och känsla", + "use_system": "Följ systeminställningarna", + "really_dark": "Verkligen mörk", + "sorta_dark": "Ganska mörk", "light": "Ljust" }, "notifications": { - "title": "Notifications", - "favorites": "Favorites my post", - "follows": "Follows me", - "boosts": "Reblogs my post", - "mentions": "Mentions me", + "title": "Aviseringar", + "favorites": "Favoriserar mitt inlägg", + "follows": "Följer mig", + "boosts": "Ompostar mitt inlägg", + "mentions": "Nämner mig", "trigger": { - "anyone": "anyone", - "follower": "a follower", - "follow": "anyone I follow", - "noone": "no one", - "title": "Notify me when" + "anyone": "alla", + "follower": "en följare", + "follow": "någon jag följer", + "noone": "ingen", + "title": "Meddela mig när" } }, "preference": { - "title": "Preferences", - "true_black_dark_mode": "True black dark mode", + "title": "Inställningar", + "true_black_dark_mode": "True black-mörkt läge", "disable_avatar_animation": "Inaktivera animerade avatarer", "disable_emoji_animation": "Inaktivera animerade emojis", - "using_default_browser": "Use default browser to open links", - "open_links_in_mastodon": "Open links in Mastodon" + "using_default_browser": "Använd standardwebbläsare för att öppna länkar", + "open_links_in_mastodon": "Öppna länkar i Mastodon" }, "boring_zone": { - "title": "The Boring Zone", + "title": "Den tråkiga zonen", "account_settings": "Kontoinställningar", "terms": "Användarvillkor", "privacy": "Integritetspolicy" }, "spicy_zone": { - "title": "The Spicy Zone", - "clear": "Clear Media Cache", + "title": "Den spännande zonen", + "clear": "Rensa mediacache", "signout": "Logga ut" } }, "footer": { - "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + "mastodon_description": "Mastodon är programvara med öppen källkod. Du kan rapportera problem via GitHub på %s (%s)" }, "keyboard": { - "close_settings_window": "Close Settings Window" + "close_settings_window": "Stäng inställningsfönstret" } }, "report": { - "title_report": "Report", + "title_report": "Rapportera", "title": "Rapportera %s", "step1": "Steg 1 av 2", "step2": "Steg 2 av 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?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "content1": "Finns det några andra inlägg du vill lägga till i rapporten?", + "content2": "Finns det något som moderatorerna borde känna till om denna rapport?", + "report_sent_title": "Tack för din rapport, vi ska titta på det.", "send": "Skicka rapport", - "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments", - "reported": "REPORTED" + "skip_to_send": "Skicka utan kommentar", + "text_placeholder": "Skriv eller klistra in ytterligare kommentarer", + "reported": "RAPPORTERAD" }, "preview": { "keyboard": { - "close_preview": "Close Preview", - "show_next": "Show Next", - "show_previous": "Show Previous" + "close_preview": "Stäng förhandsvisning", + "show_next": "Visa nästa", + "show_previous": "Visa föregående" } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", + "tab_bar_hint": "Nuvarande vald profil: %s. Dubbeltryck och håll för att visa kontoväxlare", + "dismiss_account_switcher": "Stäng kontoväxlare", "add_account": "Lägg till konto" }, "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": "Nytt i Mastodon", + "multiple_account_switch_intro_description": "Växla mellan flera konton genom att hålla inne profilknappen.", + "accessibility_hint": "Dubbeltryck för att avvisa den här guiden" } } } \ No newline at end of file diff --git a/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json b/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json index c6db73de0..98ff6d3b6 100644 --- a/Localization/StringsConvertor/input/sv_SE/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/sv_SE/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": "Används för att ta foto till inlägg", + "NSPhotoLibraryAddUsageDescription": "Används för att spara foto till Bilder", + "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 b771f951f..ead4d7714 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -129,6 +129,7 @@ "show_post": "แสดงโพสต์", "show_user_profile": "แสดงโปรไฟล์ผู้ใช้", "content_warning": "คำเตือนเนื้อหา", + "sensitive_content": "เนื้อหาที่ละเอียดอ่อน", "media_content_warning": "แตะที่ใดก็ตามเพื่อเปิดเผย", "tap_to_reveal": "แตะเพื่อเปิดเผย", "poll": { @@ -498,7 +499,8 @@ "hashtags": "แฮชแท็ก", "news": "ข่าว", "for_you": "สำหรับคุณ" - } + }, + "intro": "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ" }, "favorite": { "title": "รายการโปรดของคุณ" diff --git a/Localization/StringsConvertor/input/tr_TR/Localizable.stringsdict b/Localization/StringsConvertor/input/tr_TR/Localizable.stringsdict new file mode 100644 index 000000000..d6817c1f6 --- /dev/null +++ b/Localization/StringsConvertor/input/tr_TR/Localizable.stringsdict @@ -0,0 +1,406 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Okunmamış 1 bildirim + other + Okunmamış %ld bildirim + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + %#@character_count@ karakter limiti aşıyor + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 karakter + other + %ld karakter + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + %#@character_count@ karakter limiti var + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 karakter + other + %ld karakter + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + gönderi + other + gönderi + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gönderi + other + %ld gönderi + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favori + other + %ld favori + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 yeniden paylaşım + other + %ld yeniden paylaşım + + + plural.count.reply + + NSStringLocalizedFormatKey + %#@reply_count@ + reply_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + %ld yanıt + other + %ld yanıt + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 oy + other + %ld oy + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 oy veren + other + %ld oy veren + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 kişi konuşuyor + other + %ld kişi konuşuyor + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 takip edilen + other + %ld takip edilen + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 takipçi + other + %ld takipçi + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 yıl kaldı + other + %ld yıl kaldı + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 ay kaldı + other + %ld ay kaldı + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gün kaldı + other + %ld gün kaldı + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 saat kaldı + other + %ld saat kaldı + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dakika kaldı + other + %ld dakika kaldı + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 saniye kaldı + other + %ld saniye kaldı + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 yıl önce + other + %ld yıl önce + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 ay önce + other + %ld ay önce + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gün önce + other + %ld gün önce + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 saat önce + other + %ld saat önce + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dakika önce + other + %ld dakika önce + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 saniye önce + other + %ld saniye önce + + + + diff --git a/Localization/StringsConvertor/input/tr_TR/app.json b/Localization/StringsConvertor/input/tr_TR/app.json new file mode 100644 index 000000000..eef1cf3fc --- /dev/null +++ b/Localization/StringsConvertor/input/tr_TR/app.json @@ -0,0 +1,618 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Lütfen tekrar deneyin.", + "please_try_again_later": "Lütfen daha sonra tekrar deneyin." + }, + "sign_up_failure": { + "title": "Kaydolma Başarısız" + }, + "server_error": { + "title": "Sunucu Hatası" + }, + "vote_failure": { + "title": "Oy Verme Başarısız", + "poll_ended": "Anket bitti" + }, + "discard_post_content": { + "title": "Taslağı Sil", + "message": "Yazdığın gönderiyi paylaşmadan silmek istiyor musun?" + }, + "publish_post_failure": { + "title": "Paylaşılamadı", + "message": "Gönderi paylaşılamadı. Lütfen internet bağlantını kontrol et.", + "attachments_message": { + "video_attach_with_photo": "İçeriğinde görseller olan bir gönderiye video eklenemez.", + "more_than_one_video": "Gönderiye birden fazla video eklenemez." + } + }, + "edit_profile_failure": { + "title": "Profil Düzenleme Hatası", + "message": "Profil düzenlenemedi. Lütfen tekrar deneyin." + }, + "sign_out": { + "title": "Oturumu Kapat", + "message": "Oturumu kapatmak istediğinize emin misiniz?", + "confirm": "Oturumu Kapat" + }, + "block_domain": { + "title": "%s alan adını tamamen engellemek istediğine gerçekten emin misiniz? Pek çok durumda o alan adından birkaç kişiyi engellemek ve sessize almak yeterlidir ve tercih edilir. Engellediğinizde bu alan adından herhangi bir içerik görmeyeceksiniz ve o alan adından olan takipçileriniz silinecek.", + "block_entire_domain": "Alan Adını Engelle" + }, + "save_photo_failure": { + "title": "Görsel Kaydetme Hatası", + "message": "Görseli kaydetmek için lütfen galeri erişim iznini aktifleştirin." + }, + "delete_post": { + "title": "Gönderiyi Sil", + "message": "Bu gönderiyi silmek istediğinize emin misiniz?" + }, + "clean_cache": { + "title": "Önbelleği Temizle", + "message": "%s boyutunda önbellek temizlendi." + } + }, + "controls": { + "actions": { + "back": "Geri", + "next": "İleri", + "previous": "Önceki", + "open": "Aç", + "add": "Ekle", + "remove": "Kaldır", + "edit": "Düzenle", + "save": "Kaydet", + "ok": "Tamam", + "done": "Kapat", + "confirm": "Onayla", + "continue": "Devam et", + "compose": "Yaz", + "cancel": "İptal et", + "discard": "Vazgeç", + "try_again": "Tekrar Deneyin", + "take_photo": "Fotoğraf Çek", + "save_photo": "Fotoğrafı Kaydet", + "copy_photo": "Fotoğrafı Kopyala", + "sign_in": "Giriş Yap", + "sign_up": "Kaydol", + "see_more": "Daha Fazla Gör", + "preview": "Önizleme", + "share": "Paylaş", + "share_user": "%s ile paylaş", + "share_post": "Gönderiyi Paylaş", + "open_in_safari": "Safari'de Aç", + "open_in_browser": "Tarayıcıda Aç", + "find_people": "Takip etmek için birkaç kişi bul", + "manually_search": "Onun yerine manuel olarak ara", + "skip": "Atla", + "reply": "Yanıtla", + "report_user": "%s kişisini bildir", + "block_domain": "%s kişisini engelle", + "unblock_domain": "%s kişisinin engelini kaldır", + "settings": "Ayarlar", + "delete": "Sil" + }, + "tabs": { + "home": "Ana Sayfa", + "search": "Arama", + "notification": "Bildirimler", + "profile": "Profil" + }, + "keyboard": { + "common": { + "switch_to_tab": "Geç: %s", + "compose_new_post": "Yeni Gönderi Yaz", + "show_favorites": "Favorilerimi Göster", + "open_settings": "Ayarları Aç" + }, + "timeline": { + "previous_status": "Önceki Gönderi", + "next_status": "Sonraki Gönderi", + "open_status": "Gönderiyi Aç", + "open_author_profile": "Yazarın Profilini Aç", + "open_reblogger_profile": "Yeniden Paylaşanın Profilini Aç", + "reply_status": "Gönderiyi Yanıtla", + "toggle_reblog": "Gönderiyi yeniden paylaşma durumunu değiştir", + "toggle_favorite": "Gönderiyi favorileme durumunu değiştir", + "toggle_content_warning": "İçerik Uyarısı durumunu değiştir", + "preview_image": "Görseli Önizle" + }, + "segmented_control": { + "previous_section": "Önceki Seçim", + "next_section": "Sonraki Bölüm" + } + }, + "status": { + "user_reblogged": "%s yeniden paylaştı", + "user_replied_to": "%s kullanıcısına yanıt verdi", + "show_post": "Gönderiyi Göster", + "show_user_profile": "Kullanıcı profilini göster", + "content_warning": "İçerik Uyarısı", + "sensitive_content": "Hassas İçerik", + "media_content_warning": "Göstermek için herhangi bir yere basın", + "tap_to_reveal": "Göstermek için basın", + "poll": { + "vote": "Oy ver", + "closed": "Kapandı" + }, + "actions": { + "reply": "Yanıtla", + "reblog": "Yeniden paylaş", + "unreblog": "Yeniden paylaşımı geri al", + "favorite": "Favorile", + "unfavorite": "Favorilerden Çıkar", + "menu": "Menü", + "hide": "Gizle", + "show_image": "Görüntüyü göster", + "show_gif": "GIF'i göster", + "show_video_player": "Video oynatıcıyı göster", + "tap_then_hold_to_show_menu": "Menüyü göstermek için dokunun ve basılı tutun" + }, + "tag": { + "url": "Bağlantı", + "mention": "Bahset", + "link": "Bağlantı", + "hashtag": "Etiket", + "email": "E-posta", + "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Bu gönderiyi herkes görebilir, fakat herkese açık zaman tünelinde gösterilmez.", + "private": "Sadece gönderi sahibinin takipçileri bu gönderiyi görebilir.", + "private_from_me": "Sadece benim takipçilerim bu gönderiyi görebilir.", + "direct": "Sadece bahsedilen kullanıcı bu gönderiyi görebilir." + } + }, + "friendship": { + "follow": "Takip et", + "following": "Takip ediliyor", + "request": "İstek", + "pending": "Bekliyor", + "block": "Engelle", + "block_user": "%s kişisini engelle", + "block_domain": "%s kişisini engelle", + "unblock": "Engeli kaldır", + "unblock_user": "%s kişisinin engelini kaldır", + "blocked": "Engellendi", + "mute": "Sessize al", + "mute_user": "Sustur %s", + "unmute": "Susturmayı kaldır", + "unmute_user": "Sesini aç %s", + "muted": "Susturuldu", + "edit_info": "Bilgiyi Düzenle" + }, + "timeline": { + "filtered": "Filtrelenmiş", + "timestamp": { + "now": "Şimdi" + }, + "loader": { + "load_missing_posts": "Daha fazla gönderi yükle", + "loading_missing_posts": "Daha fazla gönderi yükleniyor...", + "show_more_replies": "Daha fazla yanıt görüntüe" + }, + "header": { + "no_status_found": "Hiçbir Gönderi Bulunamadı", + "blocking_warning": "Bu kişinin engelini kaldırana kadar\nonun profilini göremezsiniz.\nBu kişiye göre profiliniz böyle gözüküyor.", + "user_blocking_warning": "%s kişisinin engelini kaldırana kadar\nonun profilini göremezsiniz.\nBu kişiye göre profiliniz böyle gözüküyor.", + "blocked_warning": "Bu kişi sizin engelinizi kaldırana\nkadar onun profilini göremezsiniz.", + "user_blocked_warning": "%s kişisi sizin engelinizi kaldırana\nkadar onun profilini göremezsiniz.", + "suspended_warning": "Bu kullanıcı askıya alındı.", + "user_suspended_warning": "%s kişisinin hesabı askıya alındı." + } + } + } + }, + "scene": { + "welcome": { + "slogan": "Sosyal ağ,\ntekrardan ellerinizde.", + "get_started": "Başlayın", + "log_in": "Oturum Aç" + }, + "server_picker": { + "title": "Mastodon, farklı topluluklardaki kullanıcılardan oluşur.", + "subtitle": "İlgi alanlarınıza, bölgenize veya genel amaçlı bir topluluk seçin.", + "subtitle_extend": "İlgi alanlarınıza, bölgenize veya genel amaçlı bir topluluk seçin. Her topluluk tamamen bağımsız bir kuruluş veya kişi tarafından işletilmektedir.", + "button": { + "category": { + "all": "Tümü", + "all_accessiblity_description": "Kategori: Tümü", + "academia": "akademi", + "activism": "aktivizm", + "food": "yiyecek", + "furry": "furry", + "games": "oyunlar", + "general": "genel", + "journalism": "gazetecilik", + "lgbt": "lgbt", + "regional": "bölgesel", + "art": "sanat", + "music": "müzik", + "tech": "teknoloji" + }, + "see_less": "Daha Az Göster", + "see_more": "Daha Fazla Gör" + }, + "label": { + "language": "DİL", + "users": "KULLANICILAR", + "category": "KATEGORİ" + }, + "input": { + "placeholder": "Toplulukları ara" + }, + "empty_state": { + "finding_servers": "Mevcut sunucular aranıyor...", + "bad_network": "Veriyi yüklerken bir hata oluştu. Lütfen internet bağlantınızı kontrol edin.", + "no_results": "Sonuç yok" + } + }, + "register": { + "title": "%s için kurulumunuzu yapalım", + "input": { + "avatar": { + "delete": "Sil" + }, + "username": { + "placeholder": "kullanıcı adı", + "duplicate_prompt": "Bu kullanıcı adı alınmış." + }, + "display_name": { + "placeholder": "görünen ad" + }, + "email": { + "placeholder": "e-posta" + }, + "password": { + "placeholder": "parola", + "require": "Parolanızda en azından şunlar olmalı:", + "character_limit": "8 karakter", + "accessibility": { + "checked": "işaretli", + "unchecked": "işaretsiz" + }, + "hint": "Parolanız en az sekiz karakter içermelidir" + }, + "invite": { + "registration_user_invite_request": "Neden katılmak istiyorsun?" + } + }, + "error": { + "item": { + "username": "Kullanıcı adı", + "email": "E-posta", + "password": "Parola", + "agreement": "Anlaşma", + "locale": "Locale", + "reason": "Sebep" + }, + "reason": { + "blocked": "%s izin verilmeyen bir e-posta sağlayıcı içeriyor", + "unreachable": "%s mevcut değil", + "taken": "%s zaten kullanımda", + "reserved": "%s rezerve edilen bir kelime", + "accepted": "%s kabul edilmelidir", + "blank": "%s gerekli", + "invalid": "%s geçersiz", + "too_long": "%s çok uzun", + "too_short": "%s çok kısa", + "inclusion": "%s desteklenen bir değer değil" + }, + "special": { + "username_invalid": "Kullanıcı adı yalnızca alfasayısal karakterler ve alt çizgiler içerebilir", + "username_too_long": "Kullanıcı adı çok uzun (30 karakterden uzun olamaz)", + "email_invalid": "Bu geçerli bir e-posta adresi değil", + "password_too_short": "Şifre çok kısa (en az 8 karakter olmalı)" + } + } + }, + "server_rules": { + "title": "Bazı temel kurallar.", + "subtitle": "Bunlar, %s moderatörleri tarafından ayarlanmış ve uygulanmıştır.", + "prompt": "Devam ederek, %s için kullanım şartlarını ve gizlilik politikasını kabul etmiş olursunuz.", + "terms_of_service": "kullanım şartları", + "privacy_policy": "gizlilik politikası", + "button": { + "confirm": "Kabul Ediyorum" + } + }, + "confirm_email": { + "title": "Son bir şey.", + "subtitle": "Hesabınızı doğrulamak için size e-postayla gönderdiğimiz bağlantıya dokunun.", + "button": { + "open_email_app": "E-posta Uygulamasını Aç", + "resend": "Yeniden gönder" + }, + "dont_receive_email": { + "title": "Posta kutunuzu kontrol edin", + "description": "E-posta adresinizin doğru olup olmadığını ve doğru ise gereksiz klasörünüzü kontrol edin.", + "resend_email": "E-postayı Yeniden Gönder" + }, + "open_email_app": { + "title": "Gelen kutunuzu kontrol edin.", + "description": "Size bir e-posta gönderdik. Eğer e-postayı almadıysanız, gereksiz klasörünü kontrol edin.", + "mail": "Posta", + "open_email_client": "E-posta İstemcisini Aç" + } + }, + "home_timeline": { + "title": "Ana Sayfa", + "navigation_bar_state": { + "offline": "Çevrimdışı", + "new_posts": "Yeni gönderiler gör", + "published": "Yayınlandı!", + "Publishing": "Gönderi yayınlanıyor..." + } + }, + "suggestion_account": { + "title": "Takip Edecek İnsanlar Bul", + "follow_explain": "Birisini takip ettiğinizde, ana sayfanızda o kişinin gönderilerini görürsünüz." + }, + "compose": { + "title": { + "new_post": "Yeni Gönderi", + "new_reply": "Yeni Yanıt" + }, + "media_selection": { + "camera": "Fotoğraf Çek", + "photo_library": "Fotoğraf Albümü", + "browse": "Göz at" + }, + "content_input_placeholder": "Aklınızdan geçenleri yazın veya yapıştırın", + "compose_action": "Yayınla", + "replying_to_user": "yanıtlanıyor: %s", + "attachment": { + "photo": "fotoğraf", + "video": "video", + "attachment_broken": "Bu %s bozuk ve Mastodon'a\nyüklenemiyor.", + "description_photo": "Görme engelliler için fotoğrafı tarif edin...", + "description_video": "Görme engelliler için videoyu tarif edin..." + }, + "poll": { + "duration_time": "Süre: %s", + "thirty_minutes": "30 dakika", + "one_hour": "1 Saat", + "six_hours": "6 Saat", + "one_day": "1 Gün", + "three_days": "3 Gün", + "seven_days": "7 Gün", + "option_number": "Seçenek %ld" + }, + "content_warning": { + "placeholder": "Buraya kesin bir uyarı yazın..." + }, + "visibility": { + "public": "Herkese açık", + "unlisted": "Listelenmemiş", + "private": "Yalnızca takipçiler", + "direct": "Sadece bahsettiğim insanlar" + }, + "auto_complete": { + "space_to_add": "Eklemek için boşluk tuşuna basın" + }, + "accessibility": { + "append_attachment": "Dosya Ekle", + "append_poll": "Anket Ekle", + "remove_poll": "Anketi Kaldır", + "custom_emoji_picker": "Özel Emoji Seçici", + "enable_content_warning": "İçerik Uyarısını Etkinleştir", + "disable_content_warning": "İçerik Uyarısını Kapat", + "post_visibility_menu": "Gönderi Görünürlüğü Menüsü" + }, + "keyboard": { + "discard_post": "Gönderiyi İptal Et", + "publish_post": "Gönderiyi Yayınla", + "toggle_poll": "Anketi Aç/Kapat", + "toggle_content_warning": "İçerik Uyarısı durumunu değiştir", + "append_attachment_entry": "Dosya Ekle - %s", + "select_visibility_entry": "Görünürlüğü Seç - %s" + } + }, + "profile": { + "dashboard": { + "posts": "gönderiler", + "following": "takip ediliyor", + "followers": "takipçi" + }, + "fields": { + "add_row": "Satır Ekle", + "placeholder": { + "label": "Etiket", + "content": "İçerik" + } + }, + "segmented_control": { + "posts": "Gönderiler", + "replies": "Yanıtlar", + "posts_and_replies": "Gönderiler ve Yanıtlar", + "media": "Medya", + "about": "Hakkında" + }, + "relationship_action_alert": { + "confirm_mute_user": { + "title": "Hesabı sustur", + "message": "%s susturmak için onaylayın" + }, + "confirm_unmute_user": { + "title": "Susturmayı kaldır", + "message": "%s susturmasını kaldırmak için onaylayın" + }, + "confirm_block_user": { + "title": "Hesabı Engelle", + "message": "%s engellemeyi onayla" + }, + "confirm_unblock_user": { + "title": "Hesabın Engelini Kaldır", + "message": "%s engellemeyi kaldırmayı onaylayın" + } + }, + "accessibility": { + "show_avatar_image": "Profil resmini göster", + "edit_avatar_image": "Profil fotoğrafını düzenle", + "show_banner_image": "Kapak fotoğrafını göster", + "double_tap_to_open_the_list": "Listeyi açmak için çift tıklayın" + } + }, + "follower": { + "footer": "Diğer sunucudaki takipçiler gösterilemiyor." + }, + "following": { + "footer": "Diğer sunucudaki takip edilenler gösterilemiyor." + }, + "search": { + "title": "Arama", + "search_bar": { + "placeholder": "Etiketleri ve kullanıcıları ara", + "cancel": "İptal" + }, + "recommend": { + "button_text": "Tümünü Gör", + "hash_tag": { + "title": "Mastodon'da Popüler", + "description": "Oldukça ilgi gören etiketler", + "people_talking": "%s kişi konuşuyor" + }, + "accounts": { + "title": "Hoşunuza gidebilecek hesaplar", + "description": "Bu hesapları takip etmek isteyebilirsiniz", + "follow": "Takip et" + } + }, + "searching": { + "segment": { + "all": "Tümü", + "people": "İnsanlar", + "hashtags": "Etiketler", + "posts": "Gönderiler" + }, + "empty_state": { + "no_results": "Sonuç yok" + }, + "recent_search": "Son aramalar", + "clear": "Temizle" + } + }, + "discovery": { + "tabs": { + "posts": "Gönderiler", + "hashtags": "Etiketler", + "news": "Haberler", + "for_you": "Senin İçin" + }, + "intro": "Bunlar, Mastodon'un köşesinde ilgi çeken gönderilerdir." + }, + "favorite": { + "title": "Favorilerin" + }, + "notification": { + "title": { + "Everything": "Her şey", + "Mentions": "Bahsetmeler" + }, + "notification_description": { + "followed_you": "seni takip etti", + "favorited_your_post": "gönderini favoriledi", + "reblogged_your_post": "gönderini yeniden paylaştı", + "mentioned_you": "senden bahsetti", + "request_to_follow_you": "size takip isteği gönderdi", + "poll_has_ended": "anket sona erdi" + }, + "keyobard": { + "show_everything": "Her Şeyi Göster", + "show_mentions": "Bahsetmeleri Göster" + } + }, + "thread": { + "back_title": "Gönderi", + "title": "%s kullanıcının gönderisi" + }, + "settings": { + "title": "Ayarlar", + "section": { + "appearance": { + "title": "Görünüm", + "automatic": "Otomatik", + "light": "Daima Açık", + "dark": "Daima Koyu" + }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Sistem İle Aynı", + "really_dark": "Gerçek Koyu", + "sorta_dark": "Hafif Koyu", + "light": "Açık" + }, + "notifications": { + "title": "Bildirimler", + "favorites": "Gönderimi favorilerine eklediğinde", + "follows": "Beni takip ettiğinde", + "boosts": "Gönderimi yeniden paylaştığında", + "mentions": "Benden bahsettiğinde", + "trigger": { + "anyone": "herhangi biri", + "follower": "bir takipçim", + "follow": "takip ettiğim biri", + "noone": "bilgilendirme", + "title": "Beni şu durumda bilgilendir: " + } + }, + "preference": { + "title": "Tercihler", + "true_black_dark_mode": "Tam siyah koyu modu", + "disable_avatar_animation": "Hareketli avatarları devre dışı bırak", + "disable_emoji_animation": "Hareketli emojileri devre dışı bırak", + "using_default_browser": "Bağlantıları varsayılan tarayıcıda aç", + "open_links_in_mastodon": "Bağlantıları Mastodon içinden aç" + }, + "boring_zone": { + "title": "Sıkıcı Bölge", + "account_settings": "Hesap Ayarları", + "terms": "Hizmet Şartları", + "privacy": "Gizlilik Politikası" + }, + "spicy_zone": { + "title": "Tehlikeli bölge", + "clear": "Medya Önbelleğini Temizle", + "signout": "Oturumu Kapat" + } + }, + "footer": { + "mastodon_description": "Mastodon açık kaynaklı bir yazılımdır. GitHub'dan %s (%s) üzerinden katkıda bulunabilir veya sorunları bildirebilirsiniz" + }, + "keyboard": { + "close_settings_window": "Ayarlar Penceresini Kapat" + } + }, + "report": { + "title_report": "Raporla", + "title": "%s kişisini bildir", + "step1": "Adım 1/2", + "step2": "Adım 2/2", + "content1": "Bu rapora eklemek istediğiniz başka gönderiler var mı?", + "content2": "Bu rapor hakkında moderatörlerin bilmesi gerektiği bir şey var mı?", + "report_sent_title": "Rapor için teşekkürler, bununla ilgileneceğiz.", + "send": "Raporu Gönder", + "skip_to_send": "Yorum yapmadan gönder", + "text_placeholder": "Ek yorum yazın veya yapıştırın", + "reported": "RAPORLANDI" + }, + "preview": { + "keyboard": { + "close_preview": "Önizlemeyi Kapat", + "show_next": "Sonrakini Göster", + "show_previous": "Öncekini Göster" + } + }, + "account_list": { + "tab_bar_hint": "Şu anki seçili profil: %s. Hesap değiştiriciyi göstermek için iki kez dokunun ve basılı tutun", + "dismiss_account_switcher": "Hesap Değiştiriciyi Kapat", + "add_account": "Hesap Ekle" + }, + "wizard": { + "new_in_mastodon": "Mastodon'da Yeni", + "multiple_account_switch_intro_description": "Profil butonuna basılı tutarak birden fazla hesap arasında geçiş yapın.", + "accessibility_hint": "Bu yardımı kapatmak için çift tıklayın" + } + } +} \ No newline at end of file diff --git a/Localization/StringsConvertor/input/tr_TR/ios-infoPlist.json b/Localization/StringsConvertor/input/tr_TR/ios-infoPlist.json new file mode 100644 index 000000000..e776179f8 --- /dev/null +++ b/Localization/StringsConvertor/input/tr_TR/ios-infoPlist.json @@ -0,0 +1,6 @@ +{ + "NSCameraUsageDescription": "Fotoğraf çekerek durum paylaşmak için kullanılır", + "NSPhotoLibraryAddUsageDescription": "Fotoğraf Albümü'ne fotoğraf kaydetmek için kullanılır", + "NewPostShortcutItemTitle": "Yeni Gönderi", + "SearchShortcutItemTitle": "Arama" +} diff --git a/Localization/StringsConvertor/input/vi_VN/app.json b/Localization/StringsConvertor/input/vi_VN/app.json index 5aa16c958..e951e88fd 100644 --- a/Localization/StringsConvertor/input/vi_VN/app.json +++ b/Localization/StringsConvertor/input/vi_VN/app.json @@ -16,7 +16,7 @@ "poll_ended": "Cuộc bình chọn đã kết thúc" }, "discard_post_content": { - "title": "Hủy bản nháp", + "title": "Bỏ bản nháp", "message": "Xác nhận bỏ qua nội dung tút đã viết." }, "publish_post_failure": { @@ -129,8 +129,9 @@ "show_post": "Xem tút", "show_user_profile": "Xem trang hồ sơ", "content_warning": "Nội dung ẩn", + "sensitive_content": "Nội dung nhạy cảm", "media_content_warning": "Nhấn để hiển thị", - "tap_to_reveal": "Nhấn để hiển thị", + "tap_to_reveal": "Nhấn để xem", "poll": { "vote": "Bình chọn", "closed": "Kết thúc" @@ -221,7 +222,7 @@ "activism": "hoạt động xã hội", "food": "ăn uống", "furry": "furry", - "games": "trò chơi", + "games": "trò chơi điện tử", "general": "chung", "journalism": "tin tức", "lgbt": "lgbt", @@ -360,7 +361,7 @@ }, "content_input_placeholder": "Cho thế giới biết bạn đang nghĩ gì", "compose_action": "Đăng", - "replying_to_user": "trả lời đến %s", + "replying_to_user": "trả lời %s", "attachment": { "photo": "ảnh", "video": "video", @@ -369,7 +370,7 @@ "description_video": "Mô tả video cho người khiếm thị..." }, "poll": { - "duration_time": "Thời gian: %s", + "duration_time": "Thời hạn: %s", "thirty_minutes": "30 phút", "one_hour": "1 giờ", "six_hours": "6 giờ", @@ -385,7 +386,7 @@ "public": "Công khai", "unlisted": "Hạn chế", "private": "Riêng tư", - "direct": "Chỉ người được nhắc đến" + "direct": "Nhắn riêng" }, "auto_complete": { "space_to_add": "Khoảng cách để thêm" @@ -498,7 +499,8 @@ "hashtags": "Hashtag", "news": "Tin tức", "for_you": "Dành cho bạn" - } + }, + "intro": "Đây là những tút thu hút được sự chú ý trong góc Mastodon của bạn." }, "favorite": { "title": "Lượt thích" @@ -549,7 +551,7 @@ "mentions": "Nhắc đến tôi", "trigger": { "anyone": "ai đó", - "follower": "người theo dõi", + "follower": "người theo dõi tôi", "follow": "người tôi theo dõi", "noone": "không một ai", "title": "Thông báo khi" diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index db871d5a9..072ba4381 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -129,6 +129,7 @@ "show_post": "显示帖子", "show_user_profile": "查看用户个人资料", "content_warning": "内容警告", + "sensitive_content": "敏感内容", "media_content_warning": "点击任意位置显示", "tap_to_reveal": "点击以显示", "poll": { @@ -494,11 +495,12 @@ }, "discovery": { "tabs": { - "posts": "帖子", - "hashtags": "话题", - "news": "新闻", + "posts": "嘟文", + "hashtags": "话题标签", + "news": "最新消息", "for_you": "为你推荐" - } + }, + "intro": "这些嘟文在你的长毛象小宇宙中备受关注。" }, "favorite": { "title": "你的喜欢" diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index 909bd7c65..2bd070bb9 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -129,6 +129,7 @@ "show_post": "Show Post", "show_user_profile": "Show user profile", "content_warning": "Content Warning", + "sensitive_content": "Sensitive Content", "media_content_warning": "Tap anywhere to reveal", "tap_to_reveal": "Tap to reveal", "poll": { @@ -498,7 +499,8 @@ "hashtags": "Hashtags", "news": "News", "for_you": "For You" - } + }, + "intro": "These are the posts gaining traction in your corner of Mastodon." }, "favorite": { "title": "Your Favorites" diff --git a/Localization/app.json b/Localization/app.json index a8fc9031f..b6f49fc37 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -211,9 +211,9 @@ "log_in": "Log In" }, "server_picker": { - "title": "Mastodon is made of users in different communities.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "title": "Mastodon is made of users in different servers.", + "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", @@ -240,7 +240,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Search communities" + "placeholder": "Search servers" }, "empty_state": { "finding_servers": "Finding available servers...", diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 8b212674c..a9aab17b1 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -145,8 +145,6 @@ DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */; }; DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618022785A7100030EE79 /* RegisterSection.swift */; }; DB0618052785A73D0030EE79 /* RegisterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618042785A73D0030EE79 /* RegisterItem.swift */; }; - DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */; }; - DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */; }; DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0A322E280EE9FD001729D2 /* DiscoveryIntroBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0A322D280EE9FD001729D2 /* DiscoveryIntroBannerView.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; @@ -400,10 +398,10 @@ DB75BF1E263C1C1B00EDBF1F /* CustomScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB75BF1D263C1C1B00EDBF1F /* CustomScheduler.swift */; }; DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB789A0A25F9F2950071ACA0 /* ComposeViewController.swift */; }; DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */; }; + DB7A9F912818EAF10016AF98 /* MastodonRegisterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7A9F902818EAF10016AF98 /* MastodonRegisterView.swift */; }; + 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 */; }; - DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */; }; - DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB84811627883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.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 */; }; @@ -417,6 +415,7 @@ DB8AF54525C13647002E6C99 /* NeedsDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54325C13647002E6C99 /* NeedsDependency.swift */; }; DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */; }; DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF55C25C138B7002E6C99 /* UIViewController.swift */; }; + DB8D8E2F28192EED009FD90F /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = DB8D8E2E28192EED009FD90F /* Introspect */; }; DB8F7076279E954700E1225B /* DataSourceFacade+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */; }; DB8FABC726AEC7B2008E5AF4 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */; }; DB8FABCA26AEC7B2008E5AF4 /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */; }; @@ -1146,6 +1145,8 @@ DB75BF1D263C1C1B00EDBF1F /* CustomScheduler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomScheduler.swift; sourceTree = ""; }; DB789A0A25F9F2950071ACA0 /* ComposeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewController.swift; sourceTree = ""; }; DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewModel.swift; sourceTree = ""; }; + DB7A9F902818EAF10016AF98 /* MastodonRegisterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterView.swift; sourceTree = ""; }; + DB7A9F922818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonServerRulesViewController+Debug.swift"; sourceTree = ""; }; DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderViewModel.swift; sourceTree = ""; }; DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentContainerView.swift; sourceTree = ""; }; DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterTextFieldTableViewCell.swift; sourceTree = ""; }; @@ -1164,6 +1165,9 @@ DB8AF54325C13647002E6C99 /* NeedsDependency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeedsDependency.swift; sourceTree = ""; }; DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = ""; }; DB8AF55C25C138B7002E6C99 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; }; + DB8D8E3128196FA0009FD90F /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Intents.strings; sourceTree = ""; }; + DB8D8E3228196FA0009FD90F /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = ""; }; + DB8D8E3328196FA0009FD90F /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Intents.stringsdict; sourceTree = ""; }; DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Follow.swift"; sourceTree = ""; }; DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; }; DB8FABA926AEC3A2008E5AF4 /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; @@ -1379,6 +1383,7 @@ 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */, DB6804862637CD4C00430867 /* AppShared.framework in Frameworks */, DBF96326262EC0A6001D8D25 /* AuthenticationServices.framework in Frameworks */, + DB8D8E2F28192EED009FD90F /* Introspect in Frameworks */, DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */, DB552D4F26BBD10C00E481F6 /* OrderedCollections in Frameworks */, 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */, @@ -2633,6 +2638,7 @@ children = ( DB0618082785B2790030EE79 /* Cell */, DB72601B25E36A2100235243 /* MastodonServerRulesViewController.swift */, + DB7A9F922818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift */, DB72602625E36A6F00235243 /* MastodonServerRulesViewModel.swift */, DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */, ); @@ -3149,6 +3155,7 @@ 2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */, DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */, DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */, + DB7A9F902818EAF10016AF98 /* MastodonRegisterView.swift */, ); path = Register; sourceTree = ""; @@ -3324,6 +3331,7 @@ DB552D4E26BBD10C00E481F6 /* OrderedCollections */, DBA5A52E26F07ED800CACBAA /* PanModal */, DB02EA0C280D184B00E751C5 /* CommonOSLog */, + DB8D8E2E28192EED009FD90F /* Introspect */, ); productName = Mastodon; productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */; @@ -3521,6 +3529,7 @@ ku, kab, vi, + sv, ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( @@ -3540,6 +3549,7 @@ DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */, DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */, DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */, + DB8D8E2D28192EED009FD90F /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */, ); productRefGroup = DB427DD325BAA00100D1B89D /* Products */; projectDirPath = ""; @@ -3904,7 +3914,6 @@ DB63F75A279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift in Sources */, DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */, DB71FD5225F8CCAA00512AE1 /* APIService+Status.swift in Sources */, - DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */, 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */, 5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */, 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */, @@ -3956,7 +3965,6 @@ DBDFF1952805561700557A48 /* DiscoveryPostsViewModel+Diffable.swift in Sources */, DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */, DBDFF19C28055BD600557A48 /* DiscoveryViewModel.swift in Sources */, - DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */, DBB45B6227B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift in Sources */, DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */, DB3E6FF32806D97400B035AE /* DiscoveryNewsViewModel+State.swift in Sources */, @@ -4024,6 +4032,7 @@ DB36679F268ABAF20027D07F /* ComposeStatusAttachmentSection.swift in Sources */, 2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */, DB63F7542799491600455B82 /* DataSourceFacade+SearchHistory.swift in Sources */, + DB7A9F912818EAF10016AF98 /* MastodonRegisterView.swift in Sources */, DBF1572F27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift in Sources */, DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */, 2D4AD8A826316D3500613EFC /* SelectedAccountItem.swift in Sources */, @@ -4118,7 +4127,6 @@ 5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */, DB3E6FEF2806D82600B035AE /* DiscoveryNewsViewModel.swift in Sources */, DBBF1DCB2652539E00E5B703 /* AutoCompleteItem.swift in Sources */, - DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */, 2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */, DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */, DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */, @@ -4274,10 +4282,10 @@ DB0FCB6C27950E29006C02E2 /* MastodonMentionContainer.swift in Sources */, DB6D9F502635761F008423CD /* SubscriptionAlerts.swift in Sources */, 0F20220726134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift in Sources */, + DB7A9F932818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift in Sources */, DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */, 2D5A3D2825CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift in Sources */, DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */, - DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */, DB6B74FC272FF55800C70B6E /* UserSection.swift in Sources */, 2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */, DB0FCB862796BDA1006C02E2 /* SearchSection.swift in Sources */, @@ -4527,6 +4535,7 @@ DBEB19E927E4F37B00B0E80E /* ku */, DBF81C7427F68F5A00004A56 /* kab */, DBF81C7727F6913300004A56 /* vi */, + DB8D8E3128196FA0009FD90F /* sv */, ); name = Intents.intentdefinition; sourceTree = ""; @@ -4552,6 +4561,7 @@ DBEB19EA27E4F37B00B0E80E /* ku */, DBF81C7527F68F5A00004A56 /* kab */, DBF81C7827F6913300004A56 /* vi */, + DB8D8E3228196FA0009FD90F /* sv */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4593,6 +4603,7 @@ DBEB19EB27E4F37B00B0E80E /* ku */, DBF81C7627F68F5A00004A56 /* kab */, DBF81C7927F6913300004A56 /* vi */, + DB8D8E3328196FA0009FD90F /* sv */, ); name = Intents.stringsdict; sourceTree = ""; @@ -4737,7 +4748,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4766,7 +4777,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4874,11 +4885,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 113; + DYLIB_CURRENT_VERSION = 117; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4905,11 +4916,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 113; + DYLIB_CURRENT_VERSION = 117; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4934,7 +4945,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4959,7 +4970,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4984,7 +4995,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5009,7 +5020,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5095,7 +5106,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -5162,11 +5173,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 113; + DYLIB_CURRENT_VERSION = 117; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5191,7 +5202,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5215,7 +5226,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5240,7 +5251,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5265,7 +5276,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5289,7 +5300,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 113; + CURRENT_PROJECT_VERSION = 117; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5465,6 +5476,14 @@ minimumVersion = 4.2.2; }; }; + DB8D8E2D28192EED009FD90F /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/siteline/SwiftUI-Introspect.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.1.4; + }; + }; DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/UITextView-Placeholder"; @@ -5587,6 +5606,11 @@ package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; + DB8D8E2E28192EED009FD90F /* Introspect */ = { + isa = XCSwiftPackageProductDependency; + package = DB8D8E2D28192EED009FD90F /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; + productName = Introspect; + }; DB9A487D2603456B008B817C /* UITextView+Placeholder */ = { isa = XCSwiftPackageProductDependency; package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 7d7900034..ad09868c8 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -109,7 +109,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 30 + 24 MastodonIntents.xcscheme_^#shared#^_ @@ -124,7 +124,7 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 31 + 22 ShareActionExtension.xcscheme_^#shared#^_ diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 0bd118781..22e36efbb 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleURLTypes @@ -43,7 +43,7 @@ CFBundleVersion - 113 + 117 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/Mastodon/Resources/sv.lproj/InfoPlist.strings b/Mastodon/Resources/sv.lproj/InfoPlist.strings new file mode 100644 index 000000000..710865573 --- /dev/null +++ b/Mastodon/Resources/sv.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +"NSCameraUsageDescription" = "Used to take photo for post status"; +"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library"; +"NewPostShortcutItemTitle" = "New Post"; +"SearchShortcutItemTitle" = "Search"; \ No newline at end of file diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index 8b1d390f5..8b6eb9f42 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -58,6 +58,10 @@ extension HomeTimelineViewController { guard let self = self else { return } self.showWelcomeAction(action) }, + UIAction(title: "Register", image: UIImage(systemName: "list.bullet.rectangle.portrait.fill"), attributes: []) { [weak self] action in + guard let self = self else { return } + self.showRegisterAction(action) + }, UIAction(title: "Confirm Email", image: UIImage(systemName: "envelope"), attributes: []) { [weak self] action in guard let self = self else { return } self.showConfirmEmail(action) @@ -294,6 +298,33 @@ extension HomeTimelineViewController { @objc private func showWelcomeAction(_ sender: UIAction) { coordinator.present(scene: .welcome, from: self, transition: .modal(animated: true, completion: nil)) } + + @objc private func showRegisterAction(_ sender: UIAction) { + Task { @MainActor in + try await showRegisterController() + } // end Task + } + + @MainActor + func showRegisterController(domain: String = "mstdn.jp") async throws { + let viewController = try await MastodonRegisterViewController.create( + context: context, + coordinator: coordinator, + domain: "mstdn.jp" + ) + let navigationController = UINavigationController(rootViewController: viewController) + navigationController.modalPresentationStyle = .fullScreen + present(navigationController, animated: true) { + viewController.navigationItem.leftBarButtonItem = UIBarButtonItem( + systemItem: .close, + primaryAction: UIAction(handler: { [weak viewController] _ in + guard let viewController = viewController else { return } + viewController.dismiss(animated: true) + }), + menu: nil + ) + } + } @objc private func showConfirmEmail(_ sender: UIAction) { let mastodonConfirmEmailViewModel = MastodonConfirmEmailViewModel() diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index b86c952a4..ffc7708f5 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -341,7 +341,10 @@ extension MastodonPickServerViewController { ) else { throw APIService.APIError.explicit(.badResponse) } - return MastodonPickServerViewModel.SignUpResponseSecond(instance: response.instance, authenticateInfo: authenticateInfo) + return MastodonPickServerViewModel.SignUpResponseSecond( + instance: response.instance, + authenticateInfo: authenticateInfo + ) } .compactMap { [weak self] response -> AnyPublisher? in guard let self = self else { return nil } @@ -353,7 +356,13 @@ extension MastodonPickServerViewController { clientSecret: authenticateInfo.clientSecret, redirectURI: authenticateInfo.redirectURI ) - .map { MastodonPickServerViewModel.SignUpResponseThird(instance: instance, authenticateInfo: authenticateInfo, applicationToken: $0) } + .map { + MastodonPickServerViewModel.SignUpResponseThird( + instance: instance, + authenticateInfo: authenticateInfo, + applicationToken: $0 + ) + } .eraseToAnyPublisher() } .switchToLatest() diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift new file mode 100644 index 000000000..1a47de22f --- /dev/null +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterView.swift @@ -0,0 +1,304 @@ +// +// MastodonRegisterView.swift +// Mastodon +// +// Created by MainasuK on 2022-4-27. +// + +import UIKit +import SwiftUI +import MastodonLocalization +import MastodonSDK +import MastodonAsset + +struct MastodonRegisterView: View { + + @ObservedObject var viewModel: MastodonRegisterViewModel + + @State var usernameRightViewWidth: CGFloat = 300 + + var body: some View { + ScrollView(.vertical) { + let margin: CGFloat = 16 + + // header + HStack { + Text(L10n.Scene.Register.title(viewModel.domain)) + .font(Font(MastodonPickServerViewController.largeTitleFont as CTFont)) + .foregroundColor(Color(Asset.Colors.Label.primary.color)) + Spacer() + } + .padding(.horizontal, margin) + + // Avatar selector + Menu { + // Photo Library + Button { + viewModel.avatarMediaMenuActionPublisher.send(.photoLibrary) + } label: { + Label(L10n.Scene.Compose.MediaSelection.photoLibrary, systemImage: "photo") + } + // Camera + if UIImagePickerController.isSourceTypeAvailable(.camera) { + Button { + viewModel.avatarMediaMenuActionPublisher.send(.camera) + } label: { + Label(L10n.Scene.Compose.MediaSelection.camera, systemImage: "camera") + } + } + // Browse + Button { + viewModel.avatarMediaMenuActionPublisher.send(.browse) + } label: { + Label(L10n.Scene.Compose.MediaSelection.browse, systemImage: "folder") + } + // Delete + if viewModel.avatarImage != nil { + Divider() + if #available(iOS 15.0, *) { + Button(role: .destructive) { + viewModel.avatarMediaMenuActionPublisher.send(.delete) + } label: { + Label(L10n.Scene.Register.Input.Avatar.delete, systemImage: "delete.left") + } + } else { + // Fallback on earlier ve rsions + Button { + viewModel.avatarMediaMenuActionPublisher.send(.delete) + } label: { + Label(L10n.Scene.Register.Input.Avatar.delete, systemImage: "delete.left") + } + } + } + } label: { + let avatarImage = viewModel.avatarImage ?? Asset.Scene.Onboarding.avatarPlaceholder.image + Image(uiImage: avatarImage) + .resizable() + .frame(width: 88, height: 88, alignment: .center) + .overlay(ZStack { + Color.black.opacity(0.5) + .frame(height: 22, alignment: .bottom) + Text(L10n.Common.Controls.Actions.edit) + .font(.system(size: 13, weight: .semibold)) + .foregroundColor(.white) + }, alignment: .bottom) + .cornerRadius(22) + } + .padding(EdgeInsets(top: 20, leading: 0, bottom: 20, trailing: 0)) + + // Display Name & Uesrname + VStack(alignment: .leading, spacing: 11) { + TextField(L10n.Scene.Register.Input.DisplayName.placeholder.localizedCapitalized, text: $viewModel.name) + .textContentType(.name) + .disableAutocorrection(true) + .modifier(FormTextFieldModifier(validateState: viewModel.displayNameValidateState)) + HStack { + TextField(L10n.Scene.Register.Input.Username.placeholder.localizedCapitalized, text: $viewModel.username) + .textContentType(.username) + .autocapitalization(.none) + .disableAutocorrection(true) + .keyboardType(.asciiCapable) + Text("@\(viewModel.domain)") + .lineLimit(1) + .truncationMode(.middle) + .measureWidth { usernameRightViewWidth = $0 } + .frame(width: min(300.0, usernameRightViewWidth), alignment: .trailing) + } + .modifier(FormTextFieldModifier(validateState: viewModel.usernameValidateState)) + .environment(\.layoutDirection, .leftToRight) // force LTR + if let errorPrompt = viewModel.usernameErrorPrompt { + Text(errorPrompt) + .modifier(FormFootnoteModifier()) + } + } + .padding(.horizontal, margin) + .padding(.bottom, 22) + + // Email & Password & Password hint + VStack(alignment: .leading, spacing: 11) { + TextField(L10n.Scene.Register.Input.Email.placeholder.localizedCapitalized, text: $viewModel.email) + .textContentType(.emailAddress) + .autocapitalization(.none) + .disableAutocorrection(true) + .keyboardType(.emailAddress) + .modifier(FormTextFieldModifier(validateState: viewModel.emailValidateState)) + if let errorPrompt = viewModel.emailErrorPrompt { + Text(errorPrompt) + .modifier(FormFootnoteModifier()) + } + SecureField(L10n.Scene.Register.Input.Password.placeholder.localizedCapitalized, text: $viewModel.password) + .textContentType(.newPassword) + .modifier(FormTextFieldModifier(validateState: viewModel.passwordValidateState)) + Text(L10n.Scene.Register.Input.Password.hint) + .modifier(FormFootnoteModifier(foregroundColor: .secondary)) + if let errorPrompt = viewModel.passwordErrorPrompt { + Text(errorPrompt) + .modifier(FormFootnoteModifier()) + } + } + .padding(.horizontal, margin) + .padding(.bottom, 22) + + // Reason + if viewModel.approvalRequired { + VStack(alignment: .leading, spacing: 11) { + TextField(L10n.Scene.Register.Input.Invite.registrationUserInviteRequest.localizedCapitalized, text: $viewModel.reason) + .modifier(FormTextFieldModifier(validateState: viewModel.reasonValidateState)) + if let errorPrompt = viewModel.reasonErrorPrompt { + Text(errorPrompt) + .modifier(FormFootnoteModifier()) + } + } + .padding(.horizontal, margin) + } + + Spacer() + .frame(minHeight: viewModel.bottomPaddingHeight) + } + .background( + Color(viewModel.backgroundColor) + .onTapGesture { + viewModel.endEditing.send() + } + ) + } + + struct FormTextFieldModifier: ViewModifier { + var validateState: MastodonRegisterViewModel.ValidateState + + func body(content: Content) -> some View { + ZStack { + let shadowColor: Color = { + switch validateState { + case .empty: return .black.opacity(0.125) + case .invalid: return Color(Asset.Colors.TextField.invalid.color) + case .valid: return Color(Asset.Colors.TextField.valid.color) + } + }() + Color(Asset.Scene.Onboarding.textFieldBackground.color) + .cornerRadius(10) + .shadow(color: shadowColor, radius: 1, x: 0, y: 2) + .animation(.easeInOut, value: validateState) + content + .padding() + .background(Color(Asset.Scene.Onboarding.textFieldBackground.color)) + .cornerRadius(10) + } + } + } + + struct FormFootnoteModifier: ViewModifier { + var foregroundColor = Color(Asset.Colors.TextField.invalid.color) + func body(content: Content) -> some View { + content + .font(.footnote) + .foregroundColor(foregroundColor) + .padding(.horizontal) + } + } + + + + +} + +struct WidthKey: PreferenceKey { + static let defaultValue: CGFloat = 0 + static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { + value = nextValue() + } +} + +extension View { + func measureWidth(_ f: @escaping (CGFloat) -> ()) -> some View { + overlay(GeometryReader { proxy in + Color.clear.preference(key: WidthKey.self, value: proxy.size.width) + } + .onPreferenceChange(WidthKey.self, perform: f)) + } +} + +#if DEBUG +struct MastodonRegisterView_Previews: PreviewProvider { + static var viewMdoel: MastodonRegisterViewModel { + let domain = "mstdn.jp" + return MastodonRegisterViewModel( + context: .shared, + domain: domain, + authenticateInfo: AuthenticationViewModel.AuthenticateInfo( + domain: domain, + application: Mastodon.Entity.Application( + name: "Preview", + website: nil, + vapidKey: nil, + redirectURI: nil, + clientID: "", + clientSecret: "" + ), + redirectURI: "" + )!, + instance: Mastodon.Entity.Instance(domain: "mstdn.jp"), + applicationToken: Mastodon.Entity.Token( + accessToken: "", + tokenType: "", + scope: "", + createdAt: Date() + ) + ) + } + + static var viewMdoel2: MastodonRegisterViewModel { + let domain = "mstdn.jp" + return MastodonRegisterViewModel( + context: .shared, + domain: domain, + authenticateInfo: AuthenticationViewModel.AuthenticateInfo( + domain: domain, + application: Mastodon.Entity.Application( + name: "Preview", + website: nil, + vapidKey: nil, + redirectURI: nil, + clientID: "", + clientSecret: "" + ), + redirectURI: "" + )!, + instance: Mastodon.Entity.Instance(domain: "mstdn.jp", approvalRequired: true), + applicationToken: Mastodon.Entity.Token( + accessToken: "", + tokenType: "", + scope: "", + createdAt: Date() + ) + ) + } + + static var previews: some View { + Group { + NavigationView { + MastodonRegisterView(viewModel: viewMdoel) + .navigationBarTitle(Text("")) + .navigationBarTitleDisplayMode(.inline) + } + NavigationView { + MastodonRegisterView(viewModel: viewMdoel) + .navigationBarTitle(Text("")) + .navigationBarTitleDisplayMode(.inline) + } + .preferredColorScheme(.dark) + NavigationView { + MastodonRegisterView(viewModel: viewMdoel) + .navigationBarTitle(Text("")) + .navigationBarTitleDisplayMode(.inline) + } + .environment(\.sizeCategory, .accessibilityExtraLarge) + NavigationView { + MastodonRegisterView(viewModel: viewMdoel2) + .navigationBarTitle(Text("")) + .navigationBarTitleDisplayMode(.inline) + } + } + } +} +#endif diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index 26060c2c5..89c98759f 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -11,6 +11,7 @@ import MastodonSDK import os.log import PhotosUI import UIKit +import SwiftUI import MastodonUI import MastodonAsset import MastodonLocalization @@ -28,6 +29,7 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } var viewModel: MastodonRegisterViewModel! + private(set) lazy var mastodonRegisterView = MastodonRegisterView(viewModel: viewModel) // picker private(set) lazy var imagePicker: PHPickerViewController = { @@ -52,22 +54,6 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O return documentPickerController }() - let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - - let tableView: UITableView = { - let tableView = UITableView() - tableView.rowHeight = UITableView.automaticDimension - tableView.separatorStyle = .none - tableView.backgroundColor = .clear - tableView.keyboardDismissMode = .onDrag - if #available(iOS 15.0, *) { - tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude - } else { - // Fallback on earlier versions - } - return tableView - }() - let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color @@ -88,17 +74,21 @@ extension MastodonRegisterViewController { navigationItem.leftBarButtonItem = UIBarButtonItem() setupOnboardingAppearance() + viewModel.backgroundColor = view.backgroundColor ?? .clear defer { setupNavigationBarBackgroundView() } - tableView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(tableView) + let hostingViewController = UIHostingController(rootView: mastodonRegisterView) + 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), ]) navigationActionView.translatesAutoresizingMaskIntoConstraints = false @@ -116,7 +106,7 @@ extension MastodonRegisterViewController { .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.viewModel.bottomPaddingHeight = inset } .store(in: &observations) @@ -130,19 +120,14 @@ extension MastodonRegisterViewController { self.navigationActionView.nextButton.isEnabled = isAllValid } .store(in: &disposeBag) - - viewModel.setupDiffableDataSource(tableView: tableView) - - KeyboardResponderService - .configure( - scrollView: tableView, - layoutNeedsUpdate: viewModel.viewDidAppear.eraseToAnyPublisher() - ) - .store(in: &disposeBag) - // gesture - view.addGestureRecognizer(tapGestureRecognizer) - tapGestureRecognizer.addTarget(self, action: #selector(tapGestureRecognizerHandler)) + viewModel.endEditing + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + self.view.endEditing(true) + } + .store(in: &disposeBag) // // return // if viewModel.approvalRequired { @@ -150,80 +135,22 @@ extension MastodonRegisterViewController { // } else { // passwordTextField.returnKeyType = .done // } -// -// viewModel.usernameValidateState -// .receive(on: DispatchQueue.main) -// .sink { [weak self] validateState in -// guard let self = self else { return } -// self.setTextFieldValidAppearance(self.usernameTextField, validateState: validateState) -// } -// .store(in: &disposeBag) -// viewModel.usernameErrorPrompt -// .receive(on: DispatchQueue.main) -// .sink { [weak self] prompt in -// guard let self = self else { return } -// self.usernameErrorPromptLabel.attributedText = prompt -// } -// .store(in: &disposeBag) -// viewModel.displayNameValidateState -// .receive(on: DispatchQueue.main) -// .sink { [weak self] validateState in -// guard let self = self else { return } -// self.setTextFieldValidAppearance(self.displayNameTextField, validateState: validateState) -// } -// .store(in: &disposeBag) -// viewModel.emailValidateState -// .receive(on: DispatchQueue.main) -// .sink { [weak self] validateState in -// guard let self = self else { return } -// self.setTextFieldValidAppearance(self.emailTextField, validateState: validateState) -// } -// .store(in: &disposeBag) -// viewModel.emailErrorPrompt -// .receive(on: DispatchQueue.main) -// .sink { [weak self] prompt in -// guard let self = self else { return } -// self.emailErrorPromptLabel.attributedText = prompt -// } -// .store(in: &disposeBag) -// viewModel.passwordValidateState -// .receive(on: DispatchQueue.main) -// .sink { [weak self] validateState in -// guard let self = self else { return } -// self.setTextFieldValidAppearance(self.passwordTextField, validateState: validateState) -// self.passwordCheckLabel.attributedText = MastodonRegisterViewModel.attributeStringForPassword(validateState: validateState) -// } -// .store(in: &disposeBag) -// viewModel.passwordErrorPrompt -// .receive(on: DispatchQueue.main) -// .sink { [weak self] prompt in -// guard let self = self else { return } -// self.passwordErrorPromptLabel.attributedText = prompt -// } -// .store(in: &disposeBag) -// viewModel.reasonErrorPrompt -// .receive(on: DispatchQueue.main) -// .sink { [weak self] prompt in -// guard let self = self else { return } -// self.reasonErrorPromptLabel.attributedText = prompt -// } -// .store(in: &disposeBag) -// viewModel.error -// .receive(on: DispatchQueue.main) -// .sink { [weak self] error in -// guard let self = self else { return } -// guard let error = error as? Mastodon.API.Error else { return } -// let alertController = UIAlertController(for: error, title: "Sign Up Failure", 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) -// ) -// } -// .store(in: &disposeBag) -// + + viewModel.$error + .receive(on: DispatchQueue.main) + .sink { [weak self] error in + guard let self = self else { return } + guard let error = error as? Mastodon.API.Error else { return } + let alertController = UIAlertController(for: error, title: "Sign Up Failure", 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) + ) + } + .store(in: &disposeBag) viewModel.avatarMediaMenuActionPublisher .receive(on: DispatchQueue.main) @@ -261,10 +188,6 @@ extension MastodonRegisterViewController { extension MastodonRegisterViewController { - @objc private func tapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { - view.endEditing(true) - } - @objc private func backButtonPressed(_ sender: UIButton) { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") navigationController?.popViewController(animated: true) diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift index beb16890b..d8dc8943d 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift @@ -143,7 +143,7 @@ extension MastodonRegisterViewModel { snapshot.appendItems([.header(domain: domain)], toSection: .main) snapshot.appendItems([.avatar, .name, .username, .email, .password, .hint], toSection: .main) if approvalRequired { - snapshot.appendItems([.reason], toSection: .main) + snapshot.appendItems([.reason], toSection: .main) } diffableDataSource?.applySnapshot(snapshot, animated: false, completion: nil) } @@ -164,51 +164,6 @@ extension MastodonRegisterViewModel { .store(in: &cell.disposeBag) } - enum AvatarMediaMenuAction { - case photoLibrary - case camera - case browse - case delete - } - - private func createAvatarMediaContextMenu() -> UIMenu { - var children: [UIMenuElement] = [] - - // Photo Library - let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in - guard let self = self else { return } - self.avatarMediaMenuActionPublisher.send(.photoLibrary) - } - children.append(photoLibraryAction) - - // Camera - if UIImagePickerController.isSourceTypeAvailable(.camera) { - let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in - guard let self = self else { return } - self.avatarMediaMenuActionPublisher.send(.camera) - }) - children.append(cameraAction) - } - - // Browse - let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in - guard let self = self else { return } - self.avatarMediaMenuActionPublisher.send(.browse) - } - children.append(browseAction) - - // Delete - if avatarImage != nil { - let deleteAction = UIAction(title: L10n.Scene.Register.Input.Avatar.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) { [weak self] _ in - guard let self = self else { return } - self.avatarMediaMenuActionPublisher.send(.delete) - } - children.append(deleteAction) - } - - return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children) - } - private func configureTextFieldCell( cell: MastodonRegisterTextFieldTableViewCell, validateState: Published.Publisher diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift index 1ef9cf47a..e7fbd307d 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift @@ -12,7 +12,7 @@ import UIKit import MastodonAsset import MastodonLocalization -final class MastodonRegisterViewModel { +final class MastodonRegisterViewModel: ObservableObject { var disposeBag = Set() // input @@ -23,6 +23,7 @@ final class MastodonRegisterViewModel { let applicationToken: Mastodon.Entity.Token let viewDidAppear = CurrentValueSubject(Void()) + @Published var backgroundColor: UIColor = Asset.Scene.Onboarding.background.color @Published var avatarImage: UIImage? = nil @Published var name = "" @Published var username = "" @@ -30,10 +31,12 @@ final class MastodonRegisterViewModel { @Published var password = "" @Published var reason = "" - let usernameErrorPrompt = CurrentValueSubject(nil) - let emailErrorPrompt = CurrentValueSubject(nil) - let passwordErrorPrompt = CurrentValueSubject(nil) - let reasonErrorPrompt = CurrentValueSubject(nil) + @Published var usernameErrorPrompt: String? = nil + @Published var emailErrorPrompt: String? = nil + @Published var passwordErrorPrompt: String? = nil + @Published var reasonErrorPrompt: String? = nil + + @Published var bottomPaddingHeight: CGFloat = .zero // output var diffableDataSource: UITableViewDiffableDataSource? @@ -51,6 +54,7 @@ final class MastodonRegisterViewModel { @Published var error: Error? = nil let avatarMediaMenuActionPublisher = PassthroughSubject() + let endEditing = PassthroughSubject() init( context: AppContext, @@ -97,45 +101,46 @@ final class MastodonRegisterViewModel { .assign(to: \.usernameValidateState, on: self) .store(in: &disposeBag) - // TODO: check username available -// username -// .filter { !$0.isEmpty } -// .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) -// .removeDuplicates() -// .compactMap { [weak self] text -> AnyPublisher, Error>, Never>? in -// guard let self = self else { return nil } -// let query = Mastodon.API.Account.AccountLookupQuery(acct: text) -// return context.apiService.accountLookup(domain: domain, query: query, authorization: self.applicationAuthorization) -// .map { -// response -> Result, Error> in -// Result.success(response) -// } -// .catch { error in -// Just(Result.failure(error)) -// } -// .eraseToAnyPublisher() -// } -// .switchToLatest() -// .sink { [weak self] result in -// guard let self = self else { return } -// switch result { -// case .success: -// let text = L10n.Scene.Register.Error.Reason.taken(L10n.Scene.Register.Error.Item.username) -// self.usernameErrorPrompt.value = MastodonRegisterViewModel.errorPromptAttributedString(for: text) -// self.usernameValidateState.value = .invalid -// case .failure: -// break -// } -// } -// .store(in: &disposeBag) -// -// usernameValidateState -// .sink { [weak self] validateState in -// if validateState == .valid { -// self?.usernameErrorPrompt.value = nil -// } -// } -// .store(in: &disposeBag) + // check username available + $username + .filter { !$0.isEmpty } + .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) + .removeDuplicates() + .compactMap { [weak self] text -> AnyPublisher, Error>, Never>? in + guard let self = self else { return nil } + let query = Mastodon.API.Account.AccountLookupQuery(acct: text) + return context.apiService.accountLookup(domain: domain, query: query, authorization: self.applicationAuthorization) + .map { + response -> Result, Error> in + Result.success(response) + } + .catch { error in + Just(Result.failure(error)) + } + .eraseToAnyPublisher() + } + .switchToLatest() + .receive(on: DispatchQueue.main) + .sink { [weak self] result in + guard let self = self else { return } + switch result { + case .success: + let text = L10n.Scene.Register.Error.Reason.taken(L10n.Scene.Register.Error.Item.username) + self.usernameErrorPrompt = text + self.usernameValidateState = .invalid + case .failure: + break + } + } + .store(in: &disposeBag) + + $usernameValidateState + .sink { [weak self] validateState in + if validateState == .valid { + self?.usernameErrorPrompt = nil + } + } + .store(in: &disposeBag) $email .map { email in @@ -163,27 +168,31 @@ final class MastodonRegisterViewModel { .store(in: &disposeBag) } -// error -// .sink { [weak self] error in -// guard let self = self else { return } -// let error = error as? Mastodon.API.Error -// let mastodonError = error?.mastodonError -// if case let .generic(genericMastodonError) = mastodonError, -// let details = genericMastodonError.details -// { -// self.usernameErrorPrompt.value = details.usernameErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } -// self.emailErrorPrompt.value = details.emailErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } -// self.passwordErrorPrompt.value = details.passwordErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } -// self.reasonErrorPrompt.value = details.reasonErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } -// } else { -// self.usernameErrorPrompt.value = nil -// self.emailErrorPrompt.value = nil -// self.passwordErrorPrompt.value = nil -// self.reasonErrorPrompt.value = nil -// } -// } -// .store(in: &disposeBag) -// + $error + .sink { [weak self] error in + guard let self = self else { return } + let error = error as? Mastodon.API.Error + let mastodonError = error?.mastodonError + if case let .generic(genericMastodonError) = mastodonError, + let details = genericMastodonError.details + { + self.usernameErrorPrompt = details.usernameErrorDescriptions.first + details.usernameErrorDescriptions.first.flatMap { _ in self.usernameValidateState = .invalid } + self.emailErrorPrompt = details.emailErrorDescriptions.first + details.emailErrorDescriptions.first.flatMap { _ in self.emailValidateState = .invalid } + self.passwordErrorPrompt = details.passwordErrorDescriptions.first + details.passwordErrorDescriptions.first.flatMap { _ in self.passwordValidateState = .invalid } + self.reasonErrorPrompt = details.reasonErrorDescriptions.first + details.reasonErrorDescriptions.first.flatMap { _ in self.reasonValidateState = .invalid } + } else { + self.usernameErrorPrompt = nil + self.emailErrorPrompt = nil + self.passwordErrorPrompt = nil + self.reasonErrorPrompt = nil + } + } + .store(in: &disposeBag) + let publisherOne = Publishers.CombineLatest4( $usernameValidateState, $displayNameValidateState, @@ -213,7 +222,7 @@ final class MastodonRegisterViewModel { } extension MastodonRegisterViewModel { - enum ValidateState { + enum ValidateState: Hashable { case empty case invalid case valid @@ -271,3 +280,52 @@ extension MastodonRegisterViewModel { return attributeString } } + +extension MastodonRegisterViewModel { + + enum AvatarMediaMenuAction { + case photoLibrary + case camera + case browse + case delete + } + + private func createAvatarMediaContextMenu() -> UIMenu { + var children: [UIMenuElement] = [] + + // Photo Library + let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.photoLibrary) + } + children.append(photoLibraryAction) + + // Camera + if UIImagePickerController.isSourceTypeAvailable(.camera) { + let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.camera) + }) + children.append(cameraAction) + } + + // Browse + let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.browse) + } + children.append(browseAction) + + // Delete + if avatarImage != nil { + let deleteAction = UIAction(title: L10n.Scene.Register.Input.Avatar.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.delete) + } + children.append(deleteAction) + } + + return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children) + } + +} diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController+Debug.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController+Debug.swift new file mode 100644 index 000000000..f6aaf5fba --- /dev/null +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController+Debug.swift @@ -0,0 +1,50 @@ +// +// MastodonServerRulesViewController+Debug.swift +// Mastodon +// +// Created by MainasuK on 2022-4-27. +// + +import UIKit + +#if DEBUG + +extension MastodonRegisterViewController { + + @MainActor + static func create( + context: AppContext, + coordinator: SceneCoordinator, + domain: String + ) async throws -> MastodonRegisterViewController { + let viewController = MastodonRegisterViewController() + viewController.context = context + viewController.coordinator = coordinator + + let instanceResponse = try await context.apiService.instance(domain: domain).singleOutput() + let applicationResponse = try await context.apiService.createApplication(domain: domain).singleOutput() + let accessTokenResponse = try await context.apiService.applicationAccessToken( + domain: domain, + clientID: applicationResponse.value.clientID!, + clientSecret: applicationResponse.value.clientSecret!, + redirectURI: applicationResponse.value.redirectURI! + ).singleOutput() + + viewController.viewModel = MastodonRegisterViewModel( + context: context, + domain: domain, + authenticateInfo: .init( + domain: domain, + application: applicationResponse.value + )!, + instance: instanceResponse.value, + applicationToken: accessTokenResponse.value + ) + + return viewController + } + +} + +#endif + diff --git a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift index f470082f2..1b08722d5 100644 --- a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift +++ b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift @@ -270,7 +270,15 @@ extension MainTabBarController { updateTabBarDisplay() #if DEBUG -// selectedIndex = 1 + // Debug Register viewController + // Task { @MainActor in + // let _homeTimelineViewController = viewControllers + // .compactMap { $0 as? UINavigationController } + // .compactMap { $0.topViewController } + // .compactMap { $0 as? HomeTimelineViewController } + // .first + // try await _homeTimelineViewController?.showRegisterController() + // } // end Task #endif } diff --git a/Mastodon/Service/APIService/APIService+HomeTimeline.swift b/Mastodon/Service/APIService/APIService+HomeTimeline.swift index 39d4cf6e1..863510af4 100644 --- a/Mastodon/Service/APIService/APIService+HomeTimeline.swift +++ b/Mastodon/Service/APIService/APIService+HomeTimeline.swift @@ -1,5 +1,5 @@ // -// APIService+HomeTimeline.swift +// µ.swift // Mastodon // // Created by MainasuK Cirno on 2021/2/3. diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 0d11fe1f3..c43b12529 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleVersion - 113 + 117 NSExtension NSExtensionAttributes diff --git a/MastodonIntent/sv.lproj/Intents.strings b/MastodonIntent/sv.lproj/Intents.strings new file mode 100644 index 000000000..b85bec4c5 --- /dev/null +++ b/MastodonIntent/sv.lproj/Intents.strings @@ -0,0 +1,52 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully."; + diff --git a/MastodonIntent/sv.lproj/Intents.stringsdict b/MastodonIntent/sv.lproj/Intents.stringsdict new file mode 100644 index 000000000..5a39d5e64 --- /dev/null +++ b/MastodonIntent/sv.lproj/Intents.stringsdict @@ -0,0 +1,54 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + zero + 0 options + one + 1 option + two + 2 options + few + %ld options + many + %ld options + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + zero + 0 options + one + 1 option + two + 2 options + few + %ld options + many + %ld options + other + %ld options + + + + diff --git a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift index f2bec6b01..36ddc8ffe 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift +++ b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift @@ -270,6 +270,8 @@ public enum L10n { public static let contentWarning = L10n.tr("Localizable", "Common.Controls.Status.ContentWarning") /// Tap anywhere to reveal public static let mediaContentWarning = L10n.tr("Localizable", "Common.Controls.Status.MediaContentWarning") + /// Sensitive Content + public static let sensitiveContent = L10n.tr("Localizable", "Common.Controls.Status.SensitiveContent") /// Show Post public static let showPost = L10n.tr("Localizable", "Common.Controls.Status.ShowPost") /// Show user profile @@ -544,6 +546,8 @@ public enum L10n { } } public enum Discovery { + /// These are the posts gaining traction in your corner of Mastodon. + public static let intro = L10n.tr("Localizable", "Scene.Discovery.Intro") public enum Tabs { /// For You public static let forYou = L10n.tr("Localizable", "Scene.Discovery.Tabs.ForYou") diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings index bf6ab09e6..2cb63b209 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings @@ -108,6 +108,7 @@ "Common.Controls.Status.MediaContentWarning" = "اُنقُر لِلكَشف"; "Common.Controls.Status.Poll.Closed" = "انتهى"; "Common.Controls.Status.Poll.Vote" = "صَوِّت"; +"Common.Controls.Status.SensitiveContent" = "مُحتَوى حَسَّاس"; "Common.Controls.Status.ShowPost" = "أظْهِر مَنشور"; "Common.Controls.Status.ShowUserProfile" = "أظْهِر المِلَفَّ التَّعريفِيَّ لِلمُستَخدِم"; "Common.Controls.Status.Tag.Email" = "بَريدٌ إلِكتُرُونِيّ"; @@ -201,7 +202,8 @@ "Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو بريد إلكتروني إلى %@، انقر على الرابط لتأكيد حسابك."; "Scene.ConfirmEmail.Title" = "شيءٌ أخير."; -"Scene.Discovery.Tabs.ForYou" = "For You"; +"Scene.Discovery.Intro" = "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون."; +"Scene.Discovery.Tabs.ForYou" = "لَك"; "Scene.Discovery.Tabs.Hashtags" = "الوسوم"; "Scene.Discovery.Tabs.News" = "الأخبار"; "Scene.Discovery.Tabs.Posts" = "المنشورات"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings index 4e10ce165..62ddadfaf 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings @@ -108,6 +108,7 @@ Comprova la teva connexió a Internet."; "Common.Controls.Status.MediaContentWarning" = "Toca qualsevol lloc per a mostrar"; "Common.Controls.Status.Poll.Closed" = "Finalitzada"; "Common.Controls.Status.Poll.Vote" = "Vota"; +"Common.Controls.Status.SensitiveContent" = "Contingut sensible"; "Common.Controls.Status.ShowPost" = "Mostra la Publicació"; "Common.Controls.Status.ShowUserProfile" = "Mostra el perfil de l'usuari"; "Common.Controls.Status.Tag.Email" = "Correu electrònic"; @@ -200,6 +201,7 @@ carregat a Mastodon."; "Scene.ConfirmEmail.OpenEmailApp.Title" = "Comprova la teva safata d'entrada."; "Scene.ConfirmEmail.Subtitle" = "Toca l'enllaç del correu electrònic que t'hem enviat per a confirmar el teu compte."; "Scene.ConfirmEmail.Title" = "Una última cosa."; +"Scene.Discovery.Intro" = "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon."; "Scene.Discovery.Tabs.ForYou" = "Per a tu"; "Scene.Discovery.Tabs.Hashtags" = "Etiquetes"; "Scene.Discovery.Tabs.News" = "Notícies"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings index 06f5eedff..71dd59d0f 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings @@ -108,6 +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.ShowPost" = "Beitrag anzeigen"; "Common.Controls.Status.ShowUserProfile" = "Benutzerprofil anzeigen"; "Common.Controls.Status.Tag.Email" = "E-Mail"; @@ -201,6 +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.Tabs.ForYou" = "Für dich"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.News" = "Nachrichten"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings index 4edf4702f..eb1838e34 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings @@ -108,6 +108,7 @@ Please check your internet connection."; "Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal"; "Common.Controls.Status.Poll.Closed" = "Closed"; "Common.Controls.Status.Poll.Vote" = "Vote"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "Show Post"; "Common.Controls.Status.ShowUserProfile" = "Show user profile"; "Common.Controls.Status.Tag.Email" = "Email"; @@ -200,6 +201,7 @@ uploaded to Mastodon."; "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.Discovery.Tabs.ForYou" = "For You"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.News" = "News"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings index 0782206f4..0203cd195 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings @@ -90,9 +90,9 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Keyboard.Timeline.PreviewImage" = "Previsualizar imagen"; "Common.Controls.Keyboard.Timeline.PreviousStatus" = "Mensaje anterior"; "Common.Controls.Keyboard.Timeline.ReplyStatus" = "Responder al mensaje"; -"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Cambiar la advertencia de contenido"; -"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Cambiar la marca de favorito en el mensaje"; -"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Cambiar la adhesión en el mensaje"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Cambiar modo de advertencia de contenido"; +"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Cambiar marca de favorito del mensaje"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Cambiar adhesión al mensaje"; "Common.Controls.Status.Actions.Favorite" = "Marcar como favorito"; "Common.Controls.Status.Actions.Hide" = "Ocultar"; "Common.Controls.Status.Actions.Menu" = "Menú"; @@ -105,9 +105,10 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Status.Actions.Unfavorite" = "Dejar de marcar como favorito"; "Common.Controls.Status.Actions.Unreblog" = "Deshacer adhesión"; "Common.Controls.Status.ContentWarning" = "Advertencia de contenido"; -"Common.Controls.Status.MediaContentWarning" = "Toca en cualquier lugar para mostrar"; +"Common.Controls.Status.MediaContentWarning" = "Tocá en cualquier parte para mostrar"; "Common.Controls.Status.Poll.Closed" = "Cerrada"; "Common.Controls.Status.Poll.Vote" = "Votar"; +"Common.Controls.Status.SensitiveContent" = "Contenido sensible"; "Common.Controls.Status.ShowPost" = "Mostrar mensaje"; "Common.Controls.Status.ShowUserProfile" = "Mostrar perfil de usuario"; "Common.Controls.Status.Tag.Email" = "Correo electrónico"; @@ -201,6 +202,7 @@ y no se puede subir a Mastodon."; "Scene.ConfirmEmail.Subtitle" = "Acabamos de enviar un correo electrónico a %@, 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.ForYou" = "Para vos"; "Scene.Discovery.Tabs.Hashtags" = "Etiquetas"; "Scene.Discovery.Tabs.News" = "Novedades"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings index 544a0b86c..9da54c16b 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings @@ -98,16 +98,17 @@ Por favor, revise su conexión a internet."; "Common.Controls.Status.Actions.Menu" = "Menú"; "Common.Controls.Status.Actions.Reblog" = "Rebloguear"; "Common.Controls.Status.Actions.Reply" = "Responder"; -"Common.Controls.Status.Actions.ShowGif" = "Show GIF"; -"Common.Controls.Status.Actions.ShowImage" = "Show image"; -"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player"; -"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu"; +"Common.Controls.Status.Actions.ShowGif" = "Mostrar GIF"; +"Common.Controls.Status.Actions.ShowImage" = "Mostrar imagen"; +"Common.Controls.Status.Actions.ShowVideoPlayer" = "Mostrar reproductor de vídeo"; +"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Toca, después mantén para mostrar el menú"; "Common.Controls.Status.Actions.Unfavorite" = "No favorito"; "Common.Controls.Status.Actions.Unreblog" = "Deshacer reblogueo"; "Common.Controls.Status.ContentWarning" = "Advertencia de Contenido"; "Common.Controls.Status.MediaContentWarning" = "Pulsa en cualquier sitio para mostrar"; "Common.Controls.Status.Poll.Closed" = "Cerrado"; "Common.Controls.Status.Poll.Vote" = "Vota"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "Mostrar Publicación"; "Common.Controls.Status.ShowUserProfile" = "Mostrar perfil del usuario"; "Common.Controls.Status.Tag.Email" = "E-mail"; @@ -116,7 +117,7 @@ Por favor, revise su conexión a internet."; "Common.Controls.Status.Tag.Link" = "Enlace"; "Common.Controls.Status.Tag.Mention" = "Mención"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.TapToReveal" = "Tap to reveal"; +"Common.Controls.Status.TapToReveal" = "Tocar para revelar"; "Common.Controls.Status.UserReblogged" = "%@ lo reblogueó"; "Common.Controls.Status.UserRepliedTo" = "En respuesta a %@"; "Common.Controls.Status.Visibility.Direct" = "Sólo el usuario mencionado puede ver este mensaje."; @@ -201,10 +202,11 @@ subirse a Mastodon."; "Scene.ConfirmEmail.Subtitle" = "Te acabamos de enviar un correo a %@, pulsa en el enlace para confirmar tu cuenta."; "Scene.ConfirmEmail.Title" = "Una última cosa."; -"Scene.Discovery.Tabs.ForYou" = "For You"; -"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; -"Scene.Discovery.Tabs.News" = "News"; -"Scene.Discovery.Tabs.Posts" = "Posts"; +"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; +"Scene.Discovery.Tabs.ForYou" = "Para Ti"; +"Scene.Discovery.Tabs.Hashtags" = "Etiquetas"; +"Scene.Discovery.Tabs.News" = "Noticias"; +"Scene.Discovery.Tabs.Posts" = "Publicaciones"; "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."; @@ -226,10 +228,10 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.Preview.Keyboard.ClosePreview" = "Cerrar Previsualización"; "Scene.Preview.Keyboard.ShowNext" = "Mostrar Siguiente"; "Scene.Preview.Keyboard.ShowPrevious" = "Mostrar Anterior"; -"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list"; -"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image"; -"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image"; -"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image"; +"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Pulsa dos veces para abrir la lista"; +"Scene.Profile.Accessibility.EditAvatarImage" = "Editar imagen del avatar"; +"Scene.Profile.Accessibility.ShowAvatarImage" = "Mostrar imagen del avatar"; +"Scene.Profile.Accessibility.ShowBannerImage" = "Mostrar imagen de banner"; "Scene.Profile.Dashboard.Followers" = "seguidores"; "Scene.Profile.Dashboard.Following" = "siguiendo"; "Scene.Profile.Dashboard.Posts" = "publicaciones"; @@ -370,7 +372,7 @@ cualquier servidor."; "Scene.Settings.Section.Notifications.Trigger.Title" = "Recibir notificación cuando"; "Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Deshabilitar avatares animados"; "Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Deshabilitar emojis animados"; -"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon"; +"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Abrir links en Mastodon"; "Scene.Settings.Section.Preference.Title" = "Preferencias"; "Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Modo oscuro negro real"; "Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Usar navegador predeterminado para abrir los enlaces"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict index 24e407d03..8f3e94f6b 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 reply + 1 respuesta other - %ld replies + %ld respuestas plural.count.vote diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings index 42b3bfb6c..8be5744d5 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings @@ -108,6 +108,7 @@ Egiaztatu Interneteko konexioa."; "Common.Controls.Status.MediaContentWarning" = "Ukitu edonon bistaratzeko"; "Common.Controls.Status.Poll.Closed" = "Itxita"; "Common.Controls.Status.Poll.Vote" = "Bozkatu"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "Erakutsi bidalketa"; "Common.Controls.Status.ShowUserProfile" = "Erakutsi erabiltzailearen profila"; "Common.Controls.Status.Tag.Email" = "Eposta"; @@ -201,10 +202,11 @@ Mastodonera igo."; "Scene.ConfirmEmail.Subtitle" = "Eposta bat bidali dizugu %@ helbidera, sakatu kontua berresteko esteka."; "Scene.ConfirmEmail.Title" = "Eta azkenik..."; -"Scene.Discovery.Tabs.ForYou" = "For You"; -"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; -"Scene.Discovery.Tabs.News" = "News"; -"Scene.Discovery.Tabs.Posts" = "Posts"; +"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; +"Scene.Discovery.Tabs.ForYou" = "Zuretzat"; +"Scene.Discovery.Tabs.Hashtags" = "Traolak"; +"Scene.Discovery.Tabs.News" = "Albisteak"; +"Scene.Discovery.Tabs.Posts" = "Argitalpenak"; "Scene.Favorite.Title" = "Zure gogokoak"; "Scene.Follower.Footer" = "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen."; "Scene.Following.Footer" = "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen."; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings index 0ed3a271a..ebeba78ac 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings @@ -108,6 +108,7 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Status.MediaContentWarning" = "Tapotez n’importe où pour révéler la publication"; "Common.Controls.Status.Poll.Closed" = "Fermé"; "Common.Controls.Status.Poll.Vote" = "Voter"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "Montrer la publication"; "Common.Controls.Status.ShowUserProfile" = "Montrer le profil de l’utilisateur·rice"; "Common.Controls.Status.Tag.Email" = "Courriel"; @@ -201,6 +202,7 @@ téléversé sur Mastodon."; "Scene.ConfirmEmail.Subtitle" = "Nous venons d’envoyer un courriel à %@, tapotez le lien pour confirmer votre compte."; "Scene.ConfirmEmail.Title" = "Une dernière chose."; +"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; "Scene.Discovery.Tabs.ForYou" = "Pour vous"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.News" = "Actualité"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings index 91bc13736..d6dddaf3a 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings @@ -108,6 +108,7 @@ Thoir sùil air a’ cheangal agad ris an eadar-lìon."; "Common.Controls.Status.MediaContentWarning" = "Thoir gnogag àite sam bith gus a nochdadh"; "Common.Controls.Status.Poll.Closed" = "Dùinte"; "Common.Controls.Status.Poll.Vote" = "Cuir bhòt"; +"Common.Controls.Status.SensitiveContent" = "Susbaint fhrionasach"; "Common.Controls.Status.ShowPost" = "Seall am post"; "Common.Controls.Status.ShowUserProfile" = "Seall pròifil a’ chleachdaiche"; "Common.Controls.Status.Tag.Email" = "Post-d"; @@ -201,10 +202,11 @@ a luchdadh suas gu Mastodon."; "Scene.ConfirmEmail.Subtitle" = "Tha sinn air post-d a chur gu %@, thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.ConfirmEmail.Title" = "Aon rud eile."; -"Scene.Discovery.Tabs.ForYou" = "For You"; -"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; -"Scene.Discovery.Tabs.News" = "News"; -"Scene.Discovery.Tabs.Posts" = "Posts"; +"Scene.Discovery.Intro" = "Seo na postaichean fèillmhor ’nad cheàrnaidh de Mhastodon."; +"Scene.Discovery.Tabs.ForYou" = "Dhut-sa"; +"Scene.Discovery.Tabs.Hashtags" = "Tagaichean hais"; +"Scene.Discovery.Tabs.News" = "Naidheachdan"; +"Scene.Discovery.Tabs.Posts" = "Postaichean"; "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."; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings index 339e23f1c..184f53322 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings @@ -46,7 +46,7 @@ "Common.Controls.Actions.Preview" = "プレビュー"; "Common.Controls.Actions.Previous" = "前"; "Common.Controls.Actions.Remove" = "消去"; -"Common.Controls.Actions.Reply" = "リプライ"; +"Common.Controls.Actions.Reply" = "返信"; "Common.Controls.Actions.ReportUser" = "%@を通報"; "Common.Controls.Actions.Save" = "保存"; "Common.Controls.Actions.SavePhoto" = "写真を撮る"; @@ -97,7 +97,7 @@ "Common.Controls.Status.Actions.Hide" = "非表示"; "Common.Controls.Status.Actions.Menu" = "メニュー"; "Common.Controls.Status.Actions.Reblog" = "ブースト"; -"Common.Controls.Status.Actions.Reply" = "リプライ"; +"Common.Controls.Status.Actions.Reply" = "返信"; "Common.Controls.Status.Actions.ShowGif" = "Show GIF"; "Common.Controls.Status.Actions.ShowImage" = "Show image"; "Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player"; @@ -108,6 +108,7 @@ "Common.Controls.Status.MediaContentWarning" = "どこかをタップして表示"; "Common.Controls.Status.Poll.Closed" = "クローズド"; "Common.Controls.Status.Poll.Vote" = "投票"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "投稿を見る"; "Common.Controls.Status.ShowUserProfile" = "プロフィールを見る"; "Common.Controls.Status.Tag.Email" = "メール"; @@ -118,7 +119,7 @@ "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.TapToReveal" = "Tap to reveal"; "Common.Controls.Status.UserReblogged" = "%@がブースト"; -"Common.Controls.Status.UserRepliedTo" = "%@がリプライ"; +"Common.Controls.Status.UserRepliedTo" = "%@に返信"; "Common.Controls.Status.Visibility.Direct" = "この投稿はメンションされたユーザーに限り見ることができます。"; "Common.Controls.Status.Visibility.Private" = "この投稿はフォロワーに限り見ることができます。"; "Common.Controls.Status.Visibility.PrivateFromMe" = "この投稿はフォロワーに限り見ることができます。"; @@ -139,7 +140,7 @@ "Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@のアカウントは停止されました。"; "Common.Controls.Timeline.Loader.LoadMissingPosts" = "不足している投稿を読み込む"; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "読込中..."; -"Common.Controls.Timeline.Loader.ShowMoreReplies" = "リプライをもっとみる"; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "返信をさらに表示"; "Common.Controls.Timeline.Timestamp.Now" = "今"; "Scene.AccountList.AddAccount" = "アカウントを追加"; "Scene.AccountList.DismissAccountSwitcher" = "アカウント切替画面を閉じます"; @@ -177,9 +178,9 @@ "Scene.Compose.Poll.SixHours" = "6時間"; "Scene.Compose.Poll.ThirtyMinutes" = "30分"; "Scene.Compose.Poll.ThreeDays" = "3日"; -"Scene.Compose.ReplyingToUser" = "%@にリプライ"; +"Scene.Compose.ReplyingToUser" = "%@に返信"; "Scene.Compose.Title.NewPost" = "新しい投稿"; -"Scene.Compose.Title.NewReply" = "新しいリプライ"; +"Scene.Compose.Title.NewReply" = "新しい返信"; "Scene.Compose.Visibility.Direct" = "ダイレクト"; "Scene.Compose.Visibility.Private" = "フォロワーのみ"; "Scene.Compose.Visibility.Public" = "パブリック"; @@ -195,10 +196,11 @@ "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.ForYou" = "For You"; -"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; -"Scene.Discovery.Tabs.News" = "News"; -"Scene.Discovery.Tabs.Posts" = "Posts"; +"Scene.Discovery.Tabs.Hashtags" = "ハッシュタグ"; +"Scene.Discovery.Tabs.News" = "ニュース"; +"Scene.Discovery.Tabs.Posts" = "投稿"; "Scene.Favorite.Title" = "お気に入り"; "Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。"; "Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。"; @@ -238,11 +240,11 @@ "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "%@をミュートしますか?"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "ミュートを解除"; -"Scene.Profile.SegmentedControl.About" = "About"; +"Scene.Profile.SegmentedControl.About" = "概要"; "Scene.Profile.SegmentedControl.Media" = "メディア"; "Scene.Profile.SegmentedControl.Posts" = "投稿"; -"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; -"Scene.Profile.SegmentedControl.Replies" = "リプライ"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "投稿と返信"; +"Scene.Profile.SegmentedControl.Replies" = "返信"; "Scene.Register.Error.Item.Agreement" = "契約"; "Scene.Register.Error.Item.Email" = "メール"; "Scene.Register.Error.Item.Locale" = "地域"; @@ -278,15 +280,15 @@ "Scene.Register.Title" = "あなたのことを教えてください"; "Scene.Report.Content1" = "他に通報したい投稿はありますか?"; "Scene.Report.Content2" = "この通報についてモデレーターに伝達しておきたい事項はありますか?"; -"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; -"Scene.Report.Reported" = "REPORTED"; +"Scene.Report.ReportSentTitle" = "ご報告ありがとうございます、追って確認します。"; +"Scene.Report.Reported" = "報告済み"; "Scene.Report.Send" = "通報を送信"; "Scene.Report.SkipToSend" = "コメントなしで送信"; "Scene.Report.Step1" = "ステップ 1/2"; "Scene.Report.Step2" = "ステップ 2/2"; "Scene.Report.TextPlaceholder" = "追加コメントを入力"; "Scene.Report.Title" = "%@を通報"; -"Scene.Report.TitleReport" = "Report"; +"Scene.Report.TitleReport" = "報告する"; "Scene.Search.Recommend.Accounts.Description" = "以下のアカウントをフォローしてみてはいかがでしょうか?"; "Scene.Search.Recommend.Accounts.Follow" = "フォロー"; "Scene.Search.Recommend.Accounts.Title" = "おすすめのアカウント"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings index 792cf3681..aa95cfb69 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.strings @@ -98,16 +98,17 @@ Ma ulac aɣilif, senqed tuqqna-inek internet."; "Common.Controls.Status.Actions.Menu" = "Umuɣ"; "Common.Controls.Status.Actions.Reblog" = "Aɛiwed n usuffeɣ"; "Common.Controls.Status.Actions.Reply" = "Err"; -"Common.Controls.Status.Actions.ShowGif" = "Show GIF"; -"Common.Controls.Status.Actions.ShowImage" = "Show image"; -"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player"; -"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu"; +"Common.Controls.Status.Actions.ShowGif" = "Sken GIF"; +"Common.Controls.Status.Actions.ShowImage" = "Sken tugna"; +"Common.Controls.Status.Actions.ShowVideoPlayer" = "Sken ameɣri n tvidyut"; +"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Sit teǧǧeḍ aḍad-ik•im i wakken ad d-iffeɣ wumuɣ"; "Common.Controls.Status.Actions.Unfavorite" = "Kkes seg yismenyifen"; "Common.Controls.Status.Actions.Unreblog" = "Sefsex allus n usuffeɣ"; "Common.Controls.Status.ContentWarning" = "Alɣu n ugbur"; "Common.Controls.Status.MediaContentWarning" = "Sit anida tebɣiḍ i wakken ad twaliḍ"; "Common.Controls.Status.Poll.Closed" = "Ifukk"; "Common.Controls.Status.Poll.Vote" = "Dɣeṛ"; +"Common.Controls.Status.SensitiveContent" = "Agbur amḥulfu"; "Common.Controls.Status.ShowPost" = "Sken-d tasuffeɣt"; "Common.Controls.Status.ShowUserProfile" = "Ssken-d amaɣnu n useqdac"; "Common.Controls.Status.Tag.Email" = "Imayl"; @@ -116,7 +117,7 @@ Ma ulac aɣilif, senqed tuqqna-inek internet."; "Common.Controls.Status.Tag.Link" = "Aseɣwen"; "Common.Controls.Status.Tag.Mention" = "Tabdart"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.TapToReveal" = "Tap to reveal"; +"Common.Controls.Status.TapToReveal" = "Sit i uskan"; "Common.Controls.Status.UserReblogged" = "Tettwasuffeɣ-d %@ i tikkelt-nniḍen"; "Common.Controls.Status.UserRepliedTo" = "Yerra ɣef %@"; "Common.Controls.Status.Visibility.Direct" = "D ineḍfaren-is kan i izemren ad walin tsuffeɣ-a."; @@ -200,10 +201,11 @@ Ad d-yettwasali ɣef Mastodon."; "Scene.ConfirmEmail.OpenEmailApp.Title" = "Sefqed Tanaka-inek."; "Scene.ConfirmEmail.Subtitle" = "Sit ɣef useɣwen i ak-n-uznen i wakken ad tesneqdeḍ amiḍan-ik."; "Scene.ConfirmEmail.Title" = "Taɣawsa taneggarut."; -"Scene.Discovery.Tabs.ForYou" = "For You"; -"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; -"Scene.Discovery.Tabs.News" = "News"; -"Scene.Discovery.Tabs.Posts" = "Posts"; +"Scene.Discovery.Intro" = "Tigi d tisuffaɣ i d-ijebbden s waṭas deg tama-inek•inem n Mastodon."; +"Scene.Discovery.Tabs.ForYou" = "I kečč·kem"; +"Scene.Discovery.Tabs.Hashtags" = "Ihacṭagen"; +"Scene.Discovery.Tabs.News" = "Isallen"; +"Scene.Discovery.Tabs.Posts" = "Tisuffaɣ"; "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."; @@ -225,10 +227,10 @@ Ad d-yettwasali ɣef Mastodon."; "Scene.Preview.Keyboard.ClosePreview" = "Mdel timeẓri"; "Scene.Preview.Keyboard.ShowNext" = "Sken uḍfir"; "Scene.Preview.Keyboard.ShowPrevious" = "Sken udfir"; -"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list"; -"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image"; -"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image"; -"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image"; +"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Sin isitiyen i twaledyawt n tebdart"; +"Scene.Profile.Accessibility.EditAvatarImage" = "Ẓreg tugna n avaṭar"; +"Scene.Profile.Accessibility.ShowAvatarImage" = "Sken tugna n avaṭar"; +"Scene.Profile.Accessibility.ShowBannerImage" = "Sken tugna n uɣerrac"; "Scene.Profile.Dashboard.Followers" = "imeḍfaren"; "Scene.Profile.Dashboard.Following" = "iṭafaṛ"; "Scene.Profile.Dashboard.Posts" = "tisuffaɣ"; @@ -315,7 +317,7 @@ Ad d-yettwasali ɣef Mastodon."; "Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Taggayt: Akk"; "Scene.ServerPicker.Button.Category.Art" = "taẓuri"; "Scene.ServerPicker.Button.Category.Food" = "učči"; -"Scene.ServerPicker.Button.Category.Furry" = "furry"; +"Scene.ServerPicker.Button.Category.Furry" = "s taḍut"; "Scene.ServerPicker.Button.Category.Games" = "uraren"; "Scene.ServerPicker.Button.Category.General" = "amatu"; "Scene.ServerPicker.Button.Category.Journalism" = "taɣamsa"; @@ -368,7 +370,7 @@ Ad d-yettwasali ɣef Mastodon."; "Scene.Settings.Section.Notifications.Trigger.Title" = "Selɣu-yi-d mi ara"; "Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Sens ivaṭaren yettembiwilen"; "Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Sens imujiten yettembiwilen"; -"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon"; +"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Ldi iseɣwan deg Mastodon"; "Scene.Settings.Section.Preference.Title" = "Imenyafen"; "Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Askar aberkan n tidet"; "Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Seqdec iminig amezwer i twaledyawt n yiseɣwan"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.stringsdict index c3d72dda2..4ccb271fa 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.stringsdict +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/kab.lproj/Localizable.stringsdict @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 reply + 1 tririt other - %ld replies + %ld tririyin plural.count.vote diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings index dcc8dae64..2444c70c4 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings @@ -108,6 +108,7 @@ Jkx girêdana înternetê xwe kontrol bike."; "Common.Controls.Status.MediaContentWarning" = "Ji bo eşkerekirinê li derekî bitikîne"; "Common.Controls.Status.Poll.Closed" = "Girtî"; "Common.Controls.Status.Poll.Vote" = "Deng bide"; +"Common.Controls.Status.SensitiveContent" = "Naveroka hestiyarî"; "Common.Controls.Status.ShowPost" = "Şandiyê nîşan bide"; "Common.Controls.Status.ShowUserProfile" = "Profîla bikarhêner nîşan bide"; "Common.Controls.Status.Tag.Email" = "E-name"; @@ -201,6 +202,7 @@ Profîla te ji wan ra wiha xuya dike."; "Scene.ConfirmEmail.Subtitle" = "Me tenê e-nameyek ji %@ re şand, girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin."; "Scene.ConfirmEmail.Title" = "Tiştekî dawî."; +"Scene.Discovery.Intro" = "Ev şandiyên ku di quncika Mastodon balê dikişîne."; "Scene.Discovery.Tabs.ForYou" = "Ji bo te"; "Scene.Discovery.Tabs.Hashtags" = "Hashtag"; "Scene.Discovery.Tabs.News" = "Nûçe"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings index 31148373f..0a06b59d3 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings @@ -1,63 +1,63 @@ -"Common.Alerts.BlockDomain.BlockEntireDomain" = "Domein blokkeren"; -"Common.Alerts.BlockDomain.Title" = "Weet u zeker dat u alles van %@ wilt blokkeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en wenselijker. U zult geen berichten meer zien van dit domein en volgers van dit domein worden verwijderd."; +"Common.Alerts.BlockDomain.BlockEntireDomain" = "Blokkeer domein"; +"Common.Alerts.BlockDomain.Title" = "Weet je het echt heel erg zeker dat je alles van %@ wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende. Je zult geen berichten van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd."; "Common.Alerts.CleanCache.Message" = "Cache-geheugen (%@) succesvol gewist."; "Common.Alerts.CleanCache.Title" = "Cache-geheugen Wissen"; "Common.Alerts.Common.PleaseTryAgain" = "Probeer het opnieuw."; "Common.Alerts.Common.PleaseTryAgainLater" = "Probeer het later nog eens."; -"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; -"Common.Alerts.DeletePost.Title" = "Weet u zeker dat u dit bericht wilt verwijderen?"; +"Common.Alerts.DeletePost.Message" = "Weet je zeker dat je dit bericht wilt verwijderen?"; +"Common.Alerts.DeletePost.Title" = "Verwijder Bericht"; "Common.Alerts.DiscardPostContent.Message" = "Bevestig het verwijderen van het concept bericht."; -"Common.Alerts.DiscardPostContent.Title" = "Concept Verwijderen"; -"Common.Alerts.EditProfileFailure.Message" = "Het profiel kan niet bewerkt worden. Probeer het opnieuw."; +"Common.Alerts.DiscardPostContent.Title" = "Verwijder concept"; +"Common.Alerts.EditProfileFailure.Message" = "Je profiel kan niet bewerkt worden. Probeer het opnieuw."; "Common.Alerts.EditProfileFailure.Title" = "Profiel bewerken mislukt"; -"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Slechts één video kan aan een bericht worden gekoppeld."; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Kan niet meer dan één video toevoegen."; "Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Een video kan niet aan een bericht met afbeeldingen worden gekoppeld."; -"Common.Alerts.PublishPostFailure.Message" = "Het publiceren van het bericht is mislukt. Controleer alstublieft uw internetverbinding."; +"Common.Alerts.PublishPostFailure.Message" = "Het publiceren van het bericht is mislukt. Controleer je internetverbinding."; "Common.Alerts.PublishPostFailure.Title" = "Publicatiefout"; "Common.Alerts.SavePhotoFailure.Message" = "Geef toestemming om de foto op te slaan."; "Common.Alerts.SavePhotoFailure.Title" = "Foto Opslaan Mislukt"; "Common.Alerts.ServerError.Title" = "Serverfout"; -"Common.Alerts.SignOut.Confirm" = "Afmelden"; -"Common.Alerts.SignOut.Message" = "Weet u zeker dat u zich wilt afmelden?"; -"Common.Alerts.SignOut.Title" = "Afmelden"; +"Common.Alerts.SignOut.Confirm" = "Log-uit"; +"Common.Alerts.SignOut.Message" = "Weet je zeker dat je wilt uitloggen?"; +"Common.Alerts.SignOut.Title" = "Log-uit"; "Common.Alerts.SignUpFailure.Title" = "Registratiefout"; "Common.Alerts.VoteFailure.PollEnded" = "De peiling is beëindigd"; "Common.Alerts.VoteFailure.Title" = "Stemmen Mislukt"; -"Common.Controls.Actions.Add" = "Toevoegen"; +"Common.Controls.Actions.Add" = "Voeg toe"; "Common.Controls.Actions.Back" = "Terug"; "Common.Controls.Actions.BlockDomain" = "Blokkeer %@"; -"Common.Controls.Actions.Cancel" = "Annuleren"; -"Common.Controls.Actions.Compose" = "Compose"; +"Common.Controls.Actions.Cancel" = "Annuleer"; +"Common.Controls.Actions.Compose" = "Schrijf bericht"; "Common.Controls.Actions.Confirm" = "Bevestigen"; -"Common.Controls.Actions.Continue" = "Doorgaan"; -"Common.Controls.Actions.CopyPhoto" = "Foto kopiëren"; -"Common.Controls.Actions.Delete" = "Verwijderen"; +"Common.Controls.Actions.Continue" = "Ga verder"; +"Common.Controls.Actions.CopyPhoto" = "Kopieer foto"; +"Common.Controls.Actions.Delete" = "Verwijder"; "Common.Controls.Actions.Discard" = "Weggooien"; "Common.Controls.Actions.Done" = "Klaar"; -"Common.Controls.Actions.Edit" = "Bewerken"; +"Common.Controls.Actions.Edit" = "Bewerk"; "Common.Controls.Actions.FindPeople" = "Zoek mensen om te volgen"; "Common.Controls.Actions.ManuallySearch" = "Handmatig zoeken"; "Common.Controls.Actions.Next" = "Volgende"; -"Common.Controls.Actions.Ok" = "Oké"; +"Common.Controls.Actions.Ok" = "Ok"; "Common.Controls.Actions.Open" = "Open"; -"Common.Controls.Actions.OpenInBrowser" = "Open in Browser"; +"Common.Controls.Actions.OpenInBrowser" = "Open in browser"; "Common.Controls.Actions.OpenInSafari" = "Open in Safari"; "Common.Controls.Actions.Preview" = "Voorvertoning"; "Common.Controls.Actions.Previous" = "Vorige"; -"Common.Controls.Actions.Remove" = "Verwijderen"; -"Common.Controls.Actions.Reply" = "Reageren"; +"Common.Controls.Actions.Remove" = "Verwijder"; +"Common.Controls.Actions.Reply" = "Reageer"; "Common.Controls.Actions.ReportUser" = "Rapporteer %@"; -"Common.Controls.Actions.Save" = "Opslaan"; -"Common.Controls.Actions.SavePhoto" = "Foto Opslaan"; +"Common.Controls.Actions.Save" = "Bewaar"; +"Common.Controls.Actions.SavePhoto" = "Bewaar foto"; "Common.Controls.Actions.SeeMore" = "Meer"; "Common.Controls.Actions.Settings" = "Instellingen"; -"Common.Controls.Actions.Share" = "Delen"; -"Common.Controls.Actions.SharePost" = "Bericht Delen"; +"Common.Controls.Actions.Share" = "Deel"; +"Common.Controls.Actions.SharePost" = "Deel bericht"; "Common.Controls.Actions.ShareUser" = "Delen %@"; "Common.Controls.Actions.SignIn" = "Aanmelden"; "Common.Controls.Actions.SignUp" = "Registreren"; "Common.Controls.Actions.Skip" = "Overslaan"; -"Common.Controls.Actions.TakePhoto" = "Foto Maken"; +"Common.Controls.Actions.TakePhoto" = "Maak foto"; "Common.Controls.Actions.TryAgain" = "Probeer Opnieuw"; "Common.Controls.Actions.UnblockDomain" = "Deblokkeer %@"; "Common.Controls.Friendship.Block" = "Blokkeren"; @@ -79,7 +79,7 @@ "Common.Controls.Keyboard.Common.ComposeNewPost" = "Nieuw Bericht Opstellen"; "Common.Controls.Keyboard.Common.OpenSettings" = "Open Instellingen"; "Common.Controls.Keyboard.Common.ShowFavorites" = "Favorieten Weergeven"; -"Common.Controls.Keyboard.Common.SwitchToTab" = "Wisselen naar %@"; +"Common.Controls.Keyboard.Common.SwitchToTab" = "Overschakelen naar %@"; "Common.Controls.Keyboard.SegmentedControl.NextSection" = "Volgende Sectie"; "Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Vorige Sectie"; "Common.Controls.Keyboard.Timeline.NextStatus" = "Volgend Bericht"; @@ -88,25 +88,26 @@ "Common.Controls.Keyboard.Timeline.OpenStatus" = "Open Bericht"; "Common.Controls.Keyboard.Timeline.PreviewImage" = "Voorvertoning Afbeelding"; "Common.Controls.Keyboard.Timeline.PreviousStatus" = "Vorig Bericht"; -"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reageren"; -"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Inhoudswaarschuwing Omschakelen"; -"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favoriet Omschakelen bij Bericht"; +"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reageer"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Inhoudswaarschuwing"; +"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favoriet in-/uitschakelen bij Post"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Delen bij berichten omschakelen"; "Common.Controls.Status.Actions.Favorite" = "Toevoegen aan Favorieten"; -"Common.Controls.Status.Actions.Hide" = "Hide"; +"Common.Controls.Status.Actions.Hide" = "Verberg"; "Common.Controls.Status.Actions.Menu" = "Menu"; "Common.Controls.Status.Actions.Reblog" = "Delen"; "Common.Controls.Status.Actions.Reply" = "Reageren"; -"Common.Controls.Status.Actions.ShowGif" = "Show GIF"; -"Common.Controls.Status.Actions.ShowImage" = "Show image"; -"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player"; -"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu"; +"Common.Controls.Status.Actions.ShowGif" = "GIF weergeven"; +"Common.Controls.Status.Actions.ShowImage" = "Toon afbeelding"; +"Common.Controls.Status.Actions.ShowVideoPlayer" = "Toon videospeler"; +"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tik en houd vast om menu te tonen"; "Common.Controls.Status.Actions.Unfavorite" = "Verwijderen uit Favorieten"; "Common.Controls.Status.Actions.Unreblog" = "Delen ongedaan maken"; "Common.Controls.Status.ContentWarning" = "Inhoudswaarschuwing"; "Common.Controls.Status.MediaContentWarning" = "Tap hier om te tonen"; "Common.Controls.Status.Poll.Closed" = "Gesloten"; "Common.Controls.Status.Poll.Vote" = "Stemmen"; +"Common.Controls.Status.SensitiveContent" = "Gevoelige inhoud"; "Common.Controls.Status.ShowPost" = "Toon Bericht"; "Common.Controls.Status.ShowUserProfile" = "Toon Gebruikersprofiel"; "Common.Controls.Status.Tag.Email" = "Email"; @@ -115,17 +116,17 @@ "Common.Controls.Status.Tag.Link" = "Link"; "Common.Controls.Status.Tag.Mention" = "Vermelden"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.TapToReveal" = "Tap to reveal"; -"Common.Controls.Status.UserReblogged" = "%@ gedeeld"; +"Common.Controls.Status.TapToReveal" = "Tik om te onthullen"; +"Common.Controls.Status.UserReblogged" = "%@ heeft gedeeld"; "Common.Controls.Status.UserRepliedTo" = "Reactie op %@"; -"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; -"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; -"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; -"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; +"Common.Controls.Status.Visibility.Direct" = "Alleen de vermelde persoon kan dit bericht zien."; +"Common.Controls.Status.Visibility.Private" = "Alleen hun volgers kunnen dit bericht zien."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Alleen mijn volgers kunnen dit bericht zien."; +"Common.Controls.Status.Visibility.Unlisted" = "Iedereen kan dit bericht zien maar het wordt niet in de publieke tijdlijn getoond."; "Common.Controls.Tabs.Home" = "Start"; "Common.Controls.Tabs.Notification" = "Melding"; "Common.Controls.Tabs.Profile" = "Profiel"; -"Common.Controls.Tabs.Search" = "Zoeken"; +"Common.Controls.Tabs.Search" = "Zoek"; "Common.Controls.Timeline.Filtered" = "Gefilterd"; "Common.Controls.Timeline.Header.BlockedWarning" = "U kunt het profiel van deze gebruiker niet bekijken zolang u geblokkeerd bent."; "Common.Controls.Timeline.Header.BlockingWarning" = "U kunt het profiel van deze geblokkeerde gebruiker niet bekijken. @@ -140,9 +141,9 @@ Uw profiel ziet er zo uit voor hen."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Resterende berichten laden..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Toon meer reacties"; "Common.Controls.Timeline.Timestamp.Now" = "Nu"; -"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" = "Voeg account toe"; +"Scene.AccountList.DismissAccountSwitcher" = "Annuleer account wisselen"; +"Scene.AccountList.TabBarHint" = "Huidige geselecteerde profiel: %@. Dubbel-tik en houd vast om account te wisselen"; "Scene.Compose.Accessibility.AppendAttachment" = "Bijlage Toevoegen"; "Scene.Compose.Accessibility.AppendPoll" = "Peiling Toevoegen"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Eigen Emojikiezer"; @@ -184,7 +185,7 @@ Uw profiel ziet er zo uit voor hen."; "Scene.Compose.Visibility.Public" = "Openbaar"; "Scene.Compose.Visibility.Unlisted" = "Niet-vermeld"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Email Openen"; -"Scene.ConfirmEmail.Button.Resend" = "Resend"; +"Scene.ConfirmEmail.Button.Resend" = "Verstuur opnieuw"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Controleer of uw emailadres correct is en of the email in de ongewenste email filter terecht is gekomen."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Email Opnieuw Versturen"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Controleer uw emailadres"; @@ -195,13 +196,14 @@ Uw profiel ziet er zo uit voor hen."; "Scene.ConfirmEmail.Subtitle" = "We hebben een e-mail gestuurd naar %@, klik op de link om uw account te bevestigen."; "Scene.ConfirmEmail.Title" = "Nog één ding."; -"Scene.Discovery.Tabs.ForYou" = "For You"; +"Scene.Discovery.Intro" = "Dit zijn de berichten die populair zijn in jouw Mastodon-kringen."; +"Scene.Discovery.Tabs.ForYou" = "Voor jou"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags"; -"Scene.Discovery.Tabs.News" = "News"; -"Scene.Discovery.Tabs.Posts" = "Posts"; +"Scene.Discovery.Tabs.News" = "Nieuws"; +"Scene.Discovery.Tabs.Posts" = "Berichten"; "Scene.Favorite.Title" = "Uw favorieten"; -"Scene.Follower.Footer" = "Followers from other servers are not displayed."; -"Scene.Following.Footer" = "Follows from other servers are not displayed."; +"Scene.Follower.Footer" = "Volgers van andere servers worden niet weergegeven."; +"Scene.Following.Footer" = "Volgers van andere servers worden niet weergegeven."; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Bekijk nieuwe berichten"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; "Scene.HomeTimeline.NavigationBarState.Published" = "Gepubliceerd!"; @@ -209,39 +211,39 @@ klik op de link om uw account te bevestigen."; "Scene.HomeTimeline.Title" = "Start"; "Scene.Notification.Keyobard.ShowEverything" = "Alles weergeven"; "Scene.Notification.Keyobard.ShowMentions" = "Vermeldingen weergeven"; -"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" = "heeft je bericht als favoriet gemrkeerd"; +"Scene.Notification.NotificationDescription.FollowedYou" = "volgt je"; +"Scene.Notification.NotificationDescription.MentionedYou" = "noemde je"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "de peiling is beëindigd"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "deelde je bericht"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "verzoek je te volgen"; "Scene.Notification.Title.Everything" = "Alles"; "Scene.Notification.Title.Mentions" = "Vermeldingen"; "Scene.Preview.Keyboard.ClosePreview" = "Voorbeeldweergave Sluiten"; "Scene.Preview.Keyboard.ShowNext" = "Volgende"; "Scene.Preview.Keyboard.ShowPrevious" = "Vorige"; -"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list"; -"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image"; -"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image"; -"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image"; +"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Dubbel tikken om de lijst te openen"; +"Scene.Profile.Accessibility.EditAvatarImage" = "Bewerk avatar-afbeelding"; +"Scene.Profile.Accessibility.ShowAvatarImage" = "Toon avatar-afbeelding"; +"Scene.Profile.Accessibility.ShowBannerImage" = "Toon banner-afbeelding"; "Scene.Profile.Dashboard.Followers" = "volgers"; "Scene.Profile.Dashboard.Following" = "volgend"; "Scene.Profile.Dashboard.Posts" = "berichten"; "Scene.Profile.Fields.AddRow" = "Rij Toevoegen"; "Scene.Profile.Fields.Placeholder.Content" = "Inhoud"; "Scene.Profile.Fields.Placeholder.Label" = "Etiket"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Bevestig om %@ te blokkeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Blokkeer account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Bevestig om %@ te negeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Negeer account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Bevestig om %@ te deblokkeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Deblokkeer Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bevestig om %@ te negeren"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Account Negeren"; -"Scene.Profile.SegmentedControl.About" = "About"; +"Scene.Profile.SegmentedControl.About" = "Informatie"; "Scene.Profile.SegmentedControl.Media" = "Media"; "Scene.Profile.SegmentedControl.Posts" = "Berichten"; -"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Berichten en reacties"; "Scene.Profile.SegmentedControl.Replies" = "Reacties"; "Scene.Register.Error.Item.Agreement" = "Overeenkomst"; "Scene.Register.Error.Item.Email" = "Email"; @@ -267,26 +269,26 @@ klik op de link om uw account te bevestigen."; "Scene.Register.Input.DisplayName.Placeholder" = "weergavenaam"; "Scene.Register.Input.Email.Placeholder" = "email"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Waarom wil u zich hier registreren?"; -"Scene.Register.Input.Password.Accessibility.Checked" = "checked"; -"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked"; -"Scene.Register.Input.Password.CharacterLimit" = "8 characters"; +"Scene.Register.Input.Password.Accessibility.Checked" = "ingeschakeld"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "uitgeschakeld"; +"Scene.Register.Input.Password.CharacterLimit" = "8 tekens"; "Scene.Register.Input.Password.Hint" = "Uw wachtwoord moet ten minste acht tekens bevatten"; "Scene.Register.Input.Password.Placeholder" = "wachtwoord"; -"Scene.Register.Input.Password.Require" = "Your password needs at least:"; +"Scene.Register.Input.Password.Require" = "Je wachtwoord moet ten minste:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Deze gebruikersnaam is al in gebruik."; "Scene.Register.Input.Username.Placeholder" = "gebruikersnaam"; "Scene.Register.Title" = "Vertel ons over uzelf."; "Scene.Report.Content1" = "Zijn er nog meer berichten die u aan het rapport wilt toevoegen?"; "Scene.Report.Content2" = "Is er iets anders over dit rapport dat de moderators zouden moeten weten?"; -"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; -"Scene.Report.Reported" = "REPORTED"; +"Scene.Report.ReportSentTitle" = "Bedankt voor het rapporteren, we zullen hiernaar kijken."; +"Scene.Report.Reported" = "Gerapporteerd"; "Scene.Report.Send" = "Stuur rapport"; "Scene.Report.SkipToSend" = "Verstuur zonder opmerkingen"; "Scene.Report.Step1" = "Stap 1 van 2"; "Scene.Report.Step2" = "Stap 2 van 2"; "Scene.Report.TextPlaceholder" = "Schrijf of plak aanvullende opmerkingen"; "Scene.Report.Title" = "Rapporteer %@"; -"Scene.Report.TitleReport" = "Report"; +"Scene.Report.TitleReport" = "Rapporteer"; "Scene.Search.Recommend.Accounts.Description" = "Misschien dat u geïnteresseerd bent in deze accounts"; "Scene.Search.Recommend.Accounts.Follow" = "Volgen"; "Scene.Search.Recommend.Accounts.Title" = "Interessante accounts voor u"; @@ -327,8 +329,8 @@ klik op de link om uw account te bevestigen."; "Scene.ServerPicker.Label.Category" = "CATEGORIE"; "Scene.ServerPicker.Label.Language" = "TAAL"; "Scene.ServerPicker.Label.Users" = "GEBRUIKERS"; -"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; -"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; +"Scene.ServerPicker.Subtitle" = "Kies een gemeenschap gebaseerd op jouw interesses, regio of een algemeen doel."; +"Scene.ServerPicker.SubtitleExtend" = "Kies een gemeenschap gebaseerd op jouw interesses, regio, of een algemeen doel. Elke gemeenschap wordt beheerd door een volledig onafhankelijke organisatie of individu."; "Scene.ServerPicker.Title" = "Kies een server, welke dan ook."; "Scene.ServerRules.Button.Confirm" = "Ik Ga Akkoord"; "Scene.ServerRules.PrivacyPolicy" = "privacybeleid"; @@ -346,11 +348,11 @@ klik op de link om uw account te bevestigen."; "Scene.Settings.Section.BoringZone.Privacy" = "Privacybeleid"; "Scene.Settings.Section.BoringZone.Terms" = "Servicevoorwaarden"; "Scene.Settings.Section.BoringZone.Title" = "De Saaie Instellingen"; -"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" = "Licht"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Echt donker"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Donker"; +"Scene.Settings.Section.LookAndFeel.Title" = "Opmaak"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Gebruik systeem"; "Scene.Settings.Section.Notifications.Boosts" = "Mijn bericht deelt"; "Scene.Settings.Section.Notifications.Favorites" = "Mijn bericht als favoriet toevoegt"; "Scene.Settings.Section.Notifications.Follows" = "Mij volgt"; @@ -375,9 +377,9 @@ klik op de link om uw account te bevestigen."; "Scene.SuggestionAccount.Title" = "Zoek Mensen om te Volgen"; "Scene.Thread.BackTitle" = "Bericht"; "Scene.Thread.Title" = "Bericht van %@"; -"Scene.Welcome.GetStarted" = "Get Started"; -"Scene.Welcome.LogIn" = "Log In"; +"Scene.Welcome.GetStarted" = "Aan de slag"; +"Scene.Welcome.LogIn" = "Log in"; "Scene.Welcome.Slogan" = "Sociale media terug in uw handen."; -"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.Wizard.AccessibilityHint" = "Tik tweemaal om het popup-scherm te sluiten"; +"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Schakel tussen meerdere accounts door de profielknop in te drukken en vast te houden."; +"Scene.Wizard.NewInMastodon" = "Nieuw in Mastodon"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings index d7ed34c30..051169824 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings @@ -108,6 +108,7 @@ "Common.Controls.Status.MediaContentWarning" = "Нажмите в любом месте, чтобы показать"; "Common.Controls.Status.Poll.Closed" = "Завершён"; "Common.Controls.Status.Poll.Vote" = "Проголосовать"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "Показать пост"; "Common.Controls.Status.ShowUserProfile" = "Показать профиль пользователя"; "Common.Controls.Status.Tag.Email" = "E-mail"; @@ -211,6 +212,7 @@ Нажмите на ссылку в нём, чтобы подтвердить свою учётную запись."; "Scene.ConfirmEmail.Title" = "И ещё кое-что."; +"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; "Scene.Discovery.Tabs.ForYou" = "For You"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.News" = "News"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings index 434303e3d..342b05b23 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings @@ -108,6 +108,7 @@ Tarkista internet-yhteytesi."; "Common.Controls.Status.MediaContentWarning" = "Napauta mistä tahansa paljastaaksesi"; "Common.Controls.Status.Poll.Closed" = "Suljettu"; "Common.Controls.Status.Poll.Vote" = "Vote"; +"Common.Controls.Status.SensitiveContent" = "Sensitive Content"; "Common.Controls.Status.ShowPost" = "Näytä julkaisu"; "Common.Controls.Status.ShowUserProfile" = "Näytä tili"; "Common.Controls.Status.Tag.Email" = "Sähköposti"; @@ -200,6 +201,7 @@ uploaded to Mastodon."; "Scene.ConfirmEmail.OpenEmailApp.Title" = "Tarkasta postilaatikkosi."; "Scene.ConfirmEmail.Subtitle" = "Lähetimme juuri sähköpostin osoitteeseen %@, napauta siinä olevaa linkkiä vahvistaaksesi tilisi."; "Scene.ConfirmEmail.Title" = "Viimeinen asia."; +"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; "Scene.Discovery.Tabs.ForYou" = "For You"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.News" = "News"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings index 5dfb5134a..a9846e8e2 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings @@ -108,6 +108,7 @@ "Common.Controls.Status.MediaContentWarning" = "แตะที่ใดก็ตามเพื่อเปิดเผย"; "Common.Controls.Status.Poll.Closed" = "ปิดแล้ว"; "Common.Controls.Status.Poll.Vote" = "ลงคะแนน"; +"Common.Controls.Status.SensitiveContent" = "เนื้อหาที่ละเอียดอ่อน"; "Common.Controls.Status.ShowPost" = "แสดงโพสต์"; "Common.Controls.Status.ShowUserProfile" = "แสดงโปรไฟล์ผู้ใช้"; "Common.Controls.Status.Tag.Email" = "อีเมล"; @@ -200,6 +201,7 @@ "Scene.ConfirmEmail.OpenEmailApp.Title" = "ตรวจสอบกล่องขาเข้าของคุณ"; "Scene.ConfirmEmail.Subtitle" = "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ"; "Scene.ConfirmEmail.Title" = "หนึ่งสิ่งสุดท้าย"; +"Scene.Discovery.Intro" = "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ"; "Scene.Discovery.Tabs.ForYou" = "สำหรับคุณ"; "Scene.Discovery.Tabs.Hashtags" = "แฮชแท็ก"; "Scene.Discovery.Tabs.News" = "ข่าว"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings index 407c4f9cb..3b853cd6b 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/vi.lproj/Localizable.strings @@ -7,7 +7,7 @@ "Common.Alerts.DeletePost.Message" = "Bạn có chắc muốn xóa tút này không?"; "Common.Alerts.DeletePost.Title" = "Xóa tút"; "Common.Alerts.DiscardPostContent.Message" = "Xác nhận bỏ qua nội dung tút đã viết."; -"Common.Alerts.DiscardPostContent.Title" = "Hủy bản nháp"; +"Common.Alerts.DiscardPostContent.Title" = "Bỏ bản nháp"; "Common.Alerts.EditProfileFailure.Message" = "Không thể chỉnh sửa hồ sơ. Vui lòng thử lại."; "Common.Alerts.EditProfileFailure.Title" = "Lỗi chỉnh sửa hồ sơ"; "Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Không thể đính kèm nhiều video."; @@ -108,6 +108,7 @@ Vui lòng kiểm tra kết nối mạng."; "Common.Controls.Status.MediaContentWarning" = "Nhấn để hiển thị"; "Common.Controls.Status.Poll.Closed" = "Kết thúc"; "Common.Controls.Status.Poll.Vote" = "Bình chọn"; +"Common.Controls.Status.SensitiveContent" = "Nội dung nhạy cảm"; "Common.Controls.Status.ShowPost" = "Xem tút"; "Common.Controls.Status.ShowUserProfile" = "Xem trang hồ sơ"; "Common.Controls.Status.Tag.Email" = "Email"; @@ -116,7 +117,7 @@ Vui lòng kiểm tra kết nối mạng."; "Common.Controls.Status.Tag.Link" = "Liên kết"; "Common.Controls.Status.Tag.Mention" = "Nhắc đến"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.TapToReveal" = "Nhấn để hiển thị"; +"Common.Controls.Status.TapToReveal" = "Nhấn để xem"; "Common.Controls.Status.UserReblogged" = "%@ đăng lại"; "Common.Controls.Status.UserRepliedTo" = "Trả lời %@"; "Common.Controls.Status.Visibility.Direct" = "Chỉ người được nhắc đến có thể thấy tút."; @@ -174,7 +175,7 @@ tải lên Mastodon."; "Scene.Compose.MediaSelection.Browse" = "Chọn"; "Scene.Compose.MediaSelection.Camera" = "Chụp ảnh"; "Scene.Compose.MediaSelection.PhotoLibrary" = "Thư viện hình ảnh"; -"Scene.Compose.Poll.DurationTime" = "Thời gian: %@"; +"Scene.Compose.Poll.DurationTime" = "Thời hạn: %@"; "Scene.Compose.Poll.OneDay" = "1 ngày"; "Scene.Compose.Poll.OneHour" = "1 giờ"; "Scene.Compose.Poll.OptionNumber" = "Lựa chọn %ld"; @@ -182,10 +183,10 @@ tải lên Mastodon."; "Scene.Compose.Poll.SixHours" = "6 giờ"; "Scene.Compose.Poll.ThirtyMinutes" = "30 phút"; "Scene.Compose.Poll.ThreeDays" = "3 ngày"; -"Scene.Compose.ReplyingToUser" = "trả lời đến %@"; +"Scene.Compose.ReplyingToUser" = "trả lời %@"; "Scene.Compose.Title.NewPost" = "Viết tút"; "Scene.Compose.Title.NewReply" = "Viết trả lời"; -"Scene.Compose.Visibility.Direct" = "Chỉ người được nhắc đến"; +"Scene.Compose.Visibility.Direct" = "Nhắn riêng"; "Scene.Compose.Visibility.Private" = "Riêng tư"; "Scene.Compose.Visibility.Public" = "Công khai"; "Scene.Compose.Visibility.Unlisted" = "Hạn chế"; @@ -200,6 +201,7 @@ tải lên Mastodon."; "Scene.ConfirmEmail.OpenEmailApp.Title" = "Kiểm tra hộp thư của bạn."; "Scene.ConfirmEmail.Subtitle" = "Nhấn vào liên kết chúng tôi gửi qua email để xác thực tài khoản."; "Scene.ConfirmEmail.Title" = "Còn điều này nữa."; +"Scene.Discovery.Intro" = "Đây là những tút thu hút được sự chú ý trong góc Mastodon của bạn."; "Scene.Discovery.Tabs.ForYou" = "Dành cho bạn"; "Scene.Discovery.Tabs.Hashtags" = "Hashtag"; "Scene.Discovery.Tabs.News" = "Tin tức"; @@ -316,7 +318,7 @@ tải lên Mastodon."; "Scene.ServerPicker.Button.Category.Art" = "nghệ thuật"; "Scene.ServerPicker.Button.Category.Food" = "ăn uống"; "Scene.ServerPicker.Button.Category.Furry" = "furry"; -"Scene.ServerPicker.Button.Category.Games" = "trò chơi"; +"Scene.ServerPicker.Button.Category.Games" = "trò chơi điện tử"; "Scene.ServerPicker.Button.Category.General" = "chung"; "Scene.ServerPicker.Button.Category.Journalism" = "tin tức"; "Scene.ServerPicker.Button.Category.Lgbt" = "lgbt"; @@ -363,7 +365,7 @@ tải lên Mastodon."; "Scene.Settings.Section.Notifications.Title" = "Thông báo"; "Scene.Settings.Section.Notifications.Trigger.Anyone" = "ai đó"; "Scene.Settings.Section.Notifications.Trigger.Follow" = "người tôi theo dõi"; -"Scene.Settings.Section.Notifications.Trigger.Follower" = "người theo dõi"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "người theo dõi tôi"; "Scene.Settings.Section.Notifications.Trigger.Noone" = "không một ai"; "Scene.Settings.Section.Notifications.Trigger.Title" = "Thông báo khi"; "Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Tắt ảnh đại diện GIF"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings index f9ec487c4..f0c67ec23 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings @@ -108,6 +108,7 @@ "Common.Controls.Status.MediaContentWarning" = "点击任意位置显示"; "Common.Controls.Status.Poll.Closed" = "已关闭"; "Common.Controls.Status.Poll.Vote" = "投票"; +"Common.Controls.Status.SensitiveContent" = "敏感内容"; "Common.Controls.Status.ShowPost" = "显示帖子"; "Common.Controls.Status.ShowUserProfile" = "查看用户个人资料"; "Common.Controls.Status.Tag.Email" = "电子邮箱"; @@ -201,10 +202,11 @@ "Scene.ConfirmEmail.Subtitle" = "我们刚刚向 %@ 发送了一封电子邮件, 点击链接确认你的帐户。"; "Scene.ConfirmEmail.Title" = "最后一件事。"; +"Scene.Discovery.Intro" = "这些嘟文在你的长毛象小宇宙中备受关注。"; "Scene.Discovery.Tabs.ForYou" = "为你推荐"; -"Scene.Discovery.Tabs.Hashtags" = "话题"; -"Scene.Discovery.Tabs.News" = "新闻"; -"Scene.Discovery.Tabs.Posts" = "帖子"; +"Scene.Discovery.Tabs.Hashtags" = "话题标签"; +"Scene.Discovery.Tabs.News" = "最新消息"; +"Scene.Discovery.Tabs.Posts" = "嘟文"; "Scene.Favorite.Title" = "你的喜欢"; "Scene.Follower.Footer" = "不会显示来自其它服务器的关注者"; "Scene.Following.Footer" = "不会显示来自其它服务器的关注"; diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift index 7cf4890bc..5d649a841 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift @@ -38,7 +38,7 @@ extension Mastodon.Entity { // https://github.com/mastodon/mastodon/pull/16485 public let configuration: Configuration? - public init(domain: String) { + public init(domain: String, approvalRequired: Bool? = nil) { self.uri = domain self.title = domain self.description = "" @@ -47,7 +47,7 @@ extension Mastodon.Entity { self.version = nil self.languages = nil self.registrations = nil - self.approvalRequired = nil + self.approvalRequired = approvalRequired self.invitesEnabled = nil self.urls = nil self.statistics = nil diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 920eaff87..da1201b7f 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleVersion - 113 + 117 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 920eaff87..da1201b7f 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleVersion - 113 + 117 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index fa92e4a24..d3b7fdfe5 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleVersion - 113 + 117 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 9ee97c1e1..565cd561b 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.3.1 + 1.3.3 CFBundleVersion - 113 + 117 NSExtension NSExtensionAttributes