diff --git a/Localization/Localizable.stringsdict b/Localization/Localizable.stringsdict index b002a41c3..cfa87b017 100644 --- a/Localization/Localizable.stringsdict +++ b/Localization/Localizable.stringsdict @@ -2,6 +2,50 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 characters + one + 1 character + few + %ld characters + many + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 characters + one + 1 character + few + %ld characters + many + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -23,6 +67,28 @@ other posts + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 posts + one + 1 post + few + %ld posts + many + %ld posts + other + %ld posts + plural.count.favorite @@ -134,5 +200,181 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 following + one + 1 following + few + %ld following + many + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 followers + one + 1 follower + few + %ld followers + many + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 years left + one + 1 year left + few + %ld years left + many + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 months left + one + 1 months left + few + %ld months left + many + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 days left + one + 1 day left + few + %ld days left + many + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 hours left + one + 1 hour left + few + %ld hours left + many + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 minutes left + one + 1 minute left + few + %ld minutes left + many + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 seconds left + one + 1 second left + few + %ld seconds left + many + %ld seconds left + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/Intents/input/ca_ES/Intents.strings b/Localization/StringsConvertor/Intents/input/ca_ES/Intents.strings index 3c3de2574..6b92eb263 100644 --- a/Localization/StringsConvertor/Intents/input/ca_ES/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/ca_ES/Intents.strings @@ -1,4 +1,4 @@ -"16wxgf" = "Publicar a Mastodon"; +"16wxgf" = "Publica a Mastodon"; "751xkl" = "Contingut del Text"; @@ -14,7 +14,7 @@ "RxSqsb" = "Publicació"; -"WCIR3D" = "Publicar ${content} a Mastodon"; +"WCIR3D" = "Publica ${content} a Mastodon"; "ZKJSNu" = "Publicació"; diff --git a/Localization/StringsConvertor/Intents/input/de_DE/Intents.strings b/Localization/StringsConvertor/Intents/input/de_DE/Intents.strings index 3bf4531e2..e19069797 100644 --- a/Localization/StringsConvertor/Intents/input/de_DE/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/de_DE/Intents.strings @@ -1,28 +1,28 @@ "16wxgf" = "Post on Mastodon"; -"751xkl" = "Textinhalt"; +"751xkl" = "Text Content"; -"CsR7G2" = "Beitrag"; +"CsR7G2" = "Post"; "HZSGTr" = "What content to post?"; -"HdGikU" = "Senden fehlgeschlagen"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Fehlerursache"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Beitrag mit Textinhalt senden"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Beitrag"; +"RxSqsb" = "Post"; "WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Beitrag"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Sichtbarkeit"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Sichtbarkeit des Beitrags"; +"Zo4jgJ" = "Post Visibility"; "apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; @@ -32,13 +32,13 @@ "ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Beitrag"; +"dUyuGg" = "Post"; "dYQ5NN" = "Public"; "ehFLjY" = "Followers Only"; -"gfePDu" = "Senden fehlgeschlagen. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; "k7dbKQ" = "Post was sent successfully."; @@ -48,4 +48,4 @@ "rM6dvp" = "URL"; -"ryJLwG" = "Beitrag wurde erfolgreich gesendet. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/es_AR/Intents.strings b/Localization/StringsConvertor/Intents/input/es_AR/Intents.strings index 6a4ea3acd..e19069797 100644 --- a/Localization/StringsConvertor/Intents/input/es_AR/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/es_AR/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Enviar a Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "Contenido del texto"; +"751xkl" = "Text Content"; -"CsR7G2" = "Enviar"; +"CsR7G2" = "Post"; -"HZSGTr" = "¿Qué contenido enviar?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "Error al enviar mensaje"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Motivo del error"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Enviar mensaje con contenido de texto"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Enviar"; +"RxSqsb" = "Post"; -"WCIR3D" = "Enviar ${content} a Mastodon"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Enviar"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibilidad"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Visibilidad del mensaje"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "Hay ${count} opciones que coinciden con \"Público\"."; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "Hay ${count} opciones que coinciden con \"Sólo para seguidores\"."; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content}, público"; +"ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content}, sólo para seguidores"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Publicar"; +"dUyuGg" = "Post"; -"dYQ5NN" = "Público"; +"dYQ5NN" = "Public"; -"ehFLjY" = "Sólo para seguidores"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "Error al enviar mensaje. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "El mensaje se envió exitosamente."; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "Sólo para confirmar, ¿querías que este mensaje sea PÚBLICO?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "Sólo para confirmar, ¿querías que este mensaje sea SÓLO PARA SEGUIDORES?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; -"rM6dvp" = "Dirección web"; +"rM6dvp" = "URL"; -"ryJLwG" = "El mensaje se envió exitosamente. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/es_ES/Intents.strings b/Localization/StringsConvertor/Intents/input/es_ES/Intents.strings index b04a39c08..e19069797 100644 --- a/Localization/StringsConvertor/Intents/input/es_ES/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/es_ES/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Publicar en Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "Contenido del Texto"; +"751xkl" = "Text Content"; -"CsR7G2" = "Publicación"; +"CsR7G2" = "Post"; -"HZSGTr" = "¿Qué contenido publicar?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "Publicación fallida"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Motivo del fallo"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Enviar publicación con contenido de texto"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Publicar"; +"RxSqsb" = "Post"; -"WCIR3D" = "Publicar ${content} en Mastodon"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Publicar"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibilidad"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Visibilidad de la Publicación"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "Hay ${count} opciones que coinciden con «Público»."; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "Hay ${count} opciones que coinciden con «Solo seguidores»."; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content}, Público"; +"ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content}, Solo Seguidores"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Publicar"; +"dUyuGg" = "Post"; -"dYQ5NN" = "Público"; +"dYQ5NN" = "Public"; -"ehFLjY" = "Solo Seguidores"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "Error al publicar. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "La publicación se envió correctamente."; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "Solo para confirmar, ¿querías «Público»?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "Solo para confirmar, ¿querías «Solo seguidores»?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; "rM6dvp" = "URL"; -"ryJLwG" = "La publicación se envió con éxito. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings b/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings index b21e895e3..e19069797 100644 --- a/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Publier sur Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "Contenu textuel"; +"751xkl" = "Text Content"; -"CsR7G2" = "Publication"; +"CsR7G2" = "Post"; -"HZSGTr" = "Quel contenu publier?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "L'envoi a échoué"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Raison de l'échec"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Envoyer un message avec du contenu textuel"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Publication"; +"RxSqsb" = "Post"; -"WCIR3D" = "Publier ${content} sur Mastodon"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Publication"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibilité"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Visibilité de la publication"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "Il y a ${count} options correspondant à « Public »."; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "Il y a ${count} options correspondant à « Abonnés uniquement »."; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; "ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content}, abonnés seulement"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Publication"; +"dUyuGg" = "Post"; "dYQ5NN" = "Public"; -"ehFLjY" = "Abonnés seulement"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "L'envoi a échoué. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "Léa publication a été envoyée avec succès."; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "Juste pour confirmer, vous vouliez bien diffuser en « Public » ?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "Juste pour confirmer, vous vouliez bien diffuser en « abonnés uniquement » ?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; "rM6dvp" = "URL"; -"ryJLwG" = "La publication a été envoyée avec succès. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/ko_KR/Intents.strings b/Localization/StringsConvertor/Intents/input/ko_KR/Intents.strings index cda2f7d86..e19069797 100644 --- a/Localization/StringsConvertor/Intents/input/ko_KR/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/ko_KR/Intents.strings @@ -2,13 +2,13 @@ "751xkl" = "Text Content"; -"CsR7G2" = "게시물"; +"CsR7G2" = "Post"; "HZSGTr" = "What content to post?"; "HdGikU" = "Posting failed"; -"KDNTJ4" = "실패 사유"; +"KDNTJ4" = "Failure Reason"; "RHxKOw" = "Send Post with text content"; @@ -32,7 +32,7 @@ "ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "게시물"; +"dUyuGg" = "Post"; "dYQ5NN" = "Public"; @@ -48,4 +48,4 @@ "rM6dvp" = "URL"; -"ryJLwG" = "메시지가 성공적으로 전송되었습니다. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/nl_NL/Intents.strings b/Localization/StringsConvertor/Intents/input/nl_NL/Intents.strings new file mode 100644 index 000000000..77d237112 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/nl_NL/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Berichten op Mastodon"; + +"751xkl" = "Berichtsinhoud"; + +"CsR7G2" = "Plaatsen"; + +"HZSGTr" = "Welke inhoud om bericht te plaatsen?"; + +"HdGikU" = "Bericht plaatsen mislukt"; + +"KDNTJ4" = "Reden van de Fout"; + +"RHxKOw" = "Bericht verzenden met tekstinhoud"; + +"RxSqsb" = "Bericht"; + +"WCIR3D" = "Plaats ${content} op Mastodon"; + +"ZKJSNu" = "Plaatsen"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Zichbaarheid"; + +"Zo4jgJ" = "Berichtszichtbaarheid"; + +"apSxMG-dYQ5NN" = "Er zijn ${count} opties die overeenkomen met ‘Openbaar’."; + +"apSxMG-ehFLjY" = "Er zijn ${count} opties die overeenkomen met ‘Alleen Volgers’."; + +"ayoYEb-dYQ5NN" = "${content}, Openbaar"; + +"ayoYEb-ehFLjY" = "${content}, Alleen Volgers"; + +"dUyuGg" = "Plaatsen"; + +"dYQ5NN" = "Openbaar"; + +"ehFLjY" = "Alleen Volgers"; + +"gfePDu" = "Plaatsen mislukt. ${failureReason}"; + +"k7dbKQ" = "Het bericht is succesvol verzonden."; + +"oGiqmY-dYQ5NN" = "Wilde u ‘Openbaar’?"; + +"oGiqmY-ehFLjY" = "Wilde u ‘Alleen Volgers’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Het bericht is succesvol verzonden. "; diff --git a/Localization/StringsConvertor/Intents/input/zh_CN/Intents.strings b/Localization/StringsConvertor/Intents/input/zh_CN/Intents.strings index 41067a523..e19069797 100644 --- a/Localization/StringsConvertor/Intents/input/zh_CN/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/zh_CN/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "分享到 Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "文本内容"; +"751xkl" = "Text Content"; -"CsR7G2" = "帖子"; +"CsR7G2" = "Post"; -"HZSGTr" = "要发送的内容是什么?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "发送失败"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "失败原因"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "发送带有文本内容的帖子"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "帖子"; +"RxSqsb" = "Post"; -"WCIR3D" = "在 Mastodon 上发送 ${content}"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "帖子"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "可见性"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "帖子可见性"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "有 ${count} 个选项匹配 “公开”"; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "有 ${count} 个选项匹配 “仅关注者”"; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content},公开"; +"ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content},仅关注者"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "帖子"; +"dUyuGg" = "Post"; -"dYQ5NN" = "公开"; +"dYQ5NN" = "Public"; -"ehFLjY" = "仅关注者"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "发送失败。 ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "帖子发送成功。"; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "确认要选择 “公开”?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "确认要选择 “仅关注者”?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; "rM6dvp" = "URL"; -"ryJLwG" = "帖子发送成功。"; +"ryJLwG" = "Post was sent successfully. "; diff --git a/Localization/StringsConvertor/Intents/input/zh_TW/Intents.strings b/Localization/StringsConvertor/Intents/input/zh_TW/Intents.strings new file mode 100644 index 000000000..e19069797 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/zh_TW/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post"; + +"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"; + +"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/Sources/StringsConvertor/main.swift b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift index 79459e120..63ffa1433 100644 --- a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift +++ b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift @@ -46,6 +46,7 @@ private func map(language: String) -> String? { case "ar_SA": return "ar" // Arabic (Saudi Arabia) case "ca_ES": return "ca" // Catalan case "zh_CN": return "zh-Hans" // Chinese Simplified + case "nl_NL": return "nl" // Dutch case "en_US": return "en" case "fr_FR": return "fr" // French case "de_DE": return "de" // German diff --git a/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict b/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict index 7efc3e0f3..ac93b644b 100644 --- a/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ar_SA/Localizable.stringsdict @@ -2,6 +2,54 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld characters + one + 1 character + two + %ld characters + few + %ld characters + many + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld characters + one + 1 character + two + %ld characters + few + %ld characters + many + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -26,6 +74,30 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld posts + one + 1 post + two + %ld posts + few + %ld posts + many + %ld posts + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -146,5 +218,197 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld following + one + 1 following + two + %ld following + few + %ld following + many + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld followers + one + 1 follower + two + %ld followers + few + %ld followers + many + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld years left + one + 1 year left + two + %ld years left + few + %ld years left + many + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld months left + one + 1 months left + two + %ld months left + few + %ld months left + many + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld days left + one + 1 day left + two + %ld days left + few + %ld days left + many + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld hours left + one + 1 hour left + two + %ld hours left + few + %ld hours left + many + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld minutes left + one + 1 minute left + two + %ld minutes left + few + %ld minutes left + many + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld seconds left + one + 1 second left + two + %ld seconds left + few + %ld seconds left + many + %ld seconds left + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 684f56946..e370035cb 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "فشل التصويت", - "poll_expired": "انتهت مدة صلاحية الاستطلاع" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "تجاهل المسودة", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "الأن", - "time_ago": "منذ %s" + "now": "الأن" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "منشور جديد", @@ -383,9 +373,7 @@ "custom_emoji_picker": "منتقي مخصص للإيموجي", "enable_content_warning": "تنشيط تحذير المحتوى", "disable_content_warning": "تعطيل تحذير الحتوى", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "منشورات", "following": "مُتابَع", - "followers": "متابِع", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "متابِع" }, "fields": { "add_row": "إضافة صف", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/ca_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/ca_ES/Localizable.stringsdict index 76ff3b6f2..012a0d4c8 100644 --- a/Localization/StringsConvertor/input/ca_ES/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ca_ES/Localizable.stringsdict @@ -2,6 +2,38 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + El límit d’entrada supera a %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 caràcter + other + %ld caràcters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + El límit d’entrada continua sent %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 caràcter + other + %ld caràcters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -18,6 +50,22 @@ publicacions + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 publicació + other + %ld publicacions + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld persones en parlen + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 seguit + other + %ld seguits + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 seguidor + other + %ld seguidors + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 any restant + other + %ld anys restants + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 mes restant + other + %ld mesos restants + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dia restant + other + %ld dies restants + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hora restant + other + %ld hores restants + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minut restant + other + %ld minuts restants + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 segon restant + other + %ld segons restants + + diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index 9697cf5f7..0f0c6711d 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Error del Vot", - "poll_expired": "L'enquesta ha finalitzat" + "poll_ended": "L'enquesta ha finalitzat" }, "discard_post_content": { "title": "Descarta l'esborrany", @@ -130,7 +130,6 @@ "media_content_warning": "Toca qualsevol lloc per mostrar", "poll": { "vote": "Vota", - "time_left": "Falten %s", "closed": "Finalitzada" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtrat", "timestamp": { - "now": "Ara", - "time_ago": "fa %s" + "now": "Ara" }, "loader": { "load_missing_posts": "Carrega les publicacions que falten", @@ -187,11 +185,6 @@ "user_blocked_warning": "No pots veure el perfil de %s\n fins que et desbloquegi.", "suspended_warning": "Aquest usuari ha estat suspès.", "user_suspended_warning": "El compte de %s ha estat suspès." - }, - "accessibility": { - "count_replies": "respostes de %s", - "count_reblogs": "impulsos de %s", - "count_favorites": "favorits de %s" } } } @@ -331,12 +324,9 @@ "title": "Cerca Persones per Seguir", "follow_explain": "Quan segueixes algú, veuràs les seves publicacions a Inici." }, - "public_timeline": { - "title": "Públic" - }, "compose": { "title": { - "new_post": "Nueva publicació", + "new_post": "Nova publicació", "new_reply": "Nova Resposta" }, "media_selection": { @@ -383,9 +373,7 @@ "custom_emoji_picker": "Selector d'Emoji Personalitzat", "enable_content_warning": "Activa l'Avís de Contingut", "disable_content_warning": "Desactiva l'Avís de Contingut", - "post_visibility_menu": "Menú de Visibilitat de Publicació", - "input_limit_remains_count": "El límit d’entrada continua sent %ld", - "input_limit_exceeds_count": "El límit d’entrada supera a %ld" + "post_visibility_menu": "Menú de Visibilitat de Publicació" }, "keyboard": { "discard_post": "Descarta la Publicació", @@ -400,12 +388,7 @@ "dashboard": { "posts": "publicacions", "following": "seguint", - "followers": "seguidors", - "accessibility": { - "count_posts": "%ld publicacions", - "count_following": "seguint a %ld", - "count_followers": "%ld seguidors" - } + "followers": "seguidors" }, "fields": { "add_row": "Afegeix fila", @@ -463,9 +446,6 @@ "clear": "Neteja" } }, - "hashtag": { - "prompt": "%s persones hi estan parlant" - }, "favorite": { "title": "Els teus Favorits" }, @@ -507,16 +487,16 @@ "boosts": "Ha impulsat el meu estat", "mentions": "M'ha mencionat", "trigger": { - "anyone": "ningú", + "anyone": "algú", "follower": "un seguidor", "follow": "a qualsevol que segueixi", - "noone": "ningú", + "noone": "algú", "title": "Notifica'm quan" } }, "preference": { "title": "Preferències", - "true_black_dark_mode": "Mode autèntic negre fosc", + "true_black_dark_mode": "Mode negre fosc autèntic", "disable_avatar_animation": "Desactiva avatars animats", "disable_emoji_animation": "Desactiva emojis animats", "using_default_browser": "Utilitza el navegador predeterminat per a obrir enllaços" diff --git a/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict b/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict index 7efc3e0f3..ac93b644b 100644 --- a/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/cy_GB/Localizable.stringsdict @@ -2,6 +2,54 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld characters + one + 1 character + two + %ld characters + few + %ld characters + many + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld characters + one + 1 character + two + %ld characters + few + %ld characters + many + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -26,6 +74,30 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld posts + one + 1 post + two + %ld posts + few + %ld posts + many + %ld posts + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -146,5 +218,197 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld following + one + 1 following + two + %ld following + few + %ld following + many + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld followers + one + 1 follower + two + %ld followers + few + %ld followers + many + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld years left + one + 1 year left + two + %ld years left + few + %ld years left + many + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld months left + one + 1 months left + two + %ld months left + few + %ld months left + many + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld days left + one + 1 day left + two + %ld days left + few + %ld days left + many + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld hours left + one + 1 hour left + two + %ld hours left + few + %ld hours left + many + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld minutes left + one + 1 minute left + two + %ld minutes left + few + %ld minutes left + many + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld seconds left + one + 1 second left + two + %ld seconds left + few + %ld seconds left + many + %ld seconds left + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json index 7b5e271e4..3d99c77da 100644 --- a/Localization/StringsConvertor/input/cy_GB/app.json +++ b/Localization/StringsConvertor/input/cy_GB/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_expired": "The poll has expired" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Discard Draft", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/de_DE/Localizable.stringsdict b/Localization/StringsConvertor/input/de_DE/Localizable.stringsdict index 646920f42..e0e798625 100644 --- a/Localization/StringsConvertor/input/de_DE/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/de_DE/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ Beiträge + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -47,7 +95,7 @@ one 1 Reblog other - %ld reblogs + %ld Reblogs plural.count.vote @@ -61,7 +109,7 @@ NSStringFormatValueTypeKey ld one - 1 vote + 1 Stimme other %ld Stimmen @@ -77,7 +125,7 @@ NSStringFormatValueTypeKey ld one - 1 voter + 1 Wähler other %ld Wähler @@ -98,5 +146,133 @@ %ld Leute reden + 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 + + diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index 2202c1aba..c955e12a5 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -2,8 +2,8 @@ "common": { "alerts": { "common": { - "please_try_again": "Bitte versuchen Sie es erneut.", - "please_try_again_later": "Bitte versuchen Sie es später nochmal." + "please_try_again": "Bitte versuche es erneut.", + "please_try_again_later": "Bitte versuche es später nochmal." }, "sign_up_failure": { "title": "Anmeldefehler" @@ -13,15 +13,15 @@ }, "vote_failure": { "title": "Fehler bei Abstimmung", - "poll_expired": "Diese Umfrage ist abgelaufen" + "poll_ended": "Die Umfrage ist beendet" }, "discard_post_content": { "title": "Entwurf Verwerfen", - "message": "Bestätigen Sie um den Beitrag zu verwerfen." + "message": "Bestätige um den Beitrag zu verwerfen." }, "publish_post_failure": { "title": "Fehler bei Veröffentlichung", - "message": "Fehler beim Veröffentlichen des Beitrags.\nBitte überprüfen Sie Ihre Internetverbindung.", + "message": "Fehler beim Veröffentlichen des Beitrags.\nBitte überprüfe deine Internetverbindung.", "attachments_message": { "video_attach_with_photo": "Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden.", "more_than_one_video": "Es kann nicht mehr als ein Video hinzugefügt werden." @@ -29,28 +29,28 @@ }, "edit_profile_failure": { "title": "Fehler beim Bearbeiten des Profils", - "message": "Profil kann nicht bearbeitet werden. Bitte versuchen Sie es erneut." + "message": "Profil kann nicht bearbeitet werden. Bitte versuche es erneut." }, "sign_out": { "title": "Abmelden", - "message": "Sind Sie sicher, dass Sie sich abmelden möchten?", + "message": "Bist du sicher, dass du dich abmelden möchten?", "confirm": "Abmelden" }, "block_domain": { "title": "Bist du dir wirklich sicher, dass du die ganze Domain %s blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus und werden bevorzugt. Du wirst den Inhalt von dieser Domain nicht mehr sehen. Deine Folgenden von dieser Domain werden entfernt.", - "block_entire_domain": "Block Domain" + "block_entire_domain": "Domain blockieren" }, "save_photo_failure": { "title": "Foto konnte nicht gespeichert werden", "message": "Bitte aktiviere den Zugriff auf die Fotobibliothek, um das Foto zu speichern." }, "delete_post": { - "title": "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?", + "title": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", "delete": "Löschen" }, "clean_cache": { "title": "Zwischenspeicher leeren", - "message": "Successfully cleaned %s cache." + "message": "%s erfolgreich aus dem Cache gelöscht." } }, "controls": { @@ -109,11 +109,11 @@ "next_status": "Nächster Beitrag", "open_status": "Beitrag öffnen", "open_author_profile": "Profil des Verfassers ansehen", - "open_reblogger_profile": "Open Reblogger's Profile", + "open_reblogger_profile": "Profil des teilenden Nutzers öffnen", "reply_status": "Auf Beitrag antworten", - "toggle_reblog": "Toggle Reblog on Post", - "toggle_favorite": "Toggle Favorite on Post", - "toggle_content_warning": "Toggle Content Warning", + "toggle_reblog": "Teilen vom Beitrag umschalten", + "toggle_favorite": "Favorit vom Beitrag umschalten", + "toggle_content_warning": "Inhaltswarnung umschalten", "preview_image": "Bildvorschau" }, "segmented_control": { @@ -122,28 +122,27 @@ } }, "status": { - "user_reblogged": "%s reblogged", - "user_replied_to": "Replied to %s", - "show_post": "Show Post", + "user_reblogged": "%s teilte", + "user_replied_to": "Antwortet auf %s", + "show_post": "Beitrag anzeigen", "show_user_profile": "Benutzerprofil anzeigen", "content_warning": "Inhaltswarnung", "media_content_warning": "Tippe irgendwo zum Anzeigen", "poll": { "vote": "Abstimmen", - "time_left": "%s verbleiben", "closed": "Beendet" }, "actions": { "reply": "Antworten", - "reblog": "Reblog", - "unreblog": "Undo reblog", + "reblog": "Teilen", + "unreblog": "Nicht mehr teilen", "favorite": "Favorit", "unfavorite": "Aus Favoriten entfernen", - "menu": "Menu" + "menu": "Menü" }, "tag": { "url": "URL", - "mention": "Mention", + "mention": "Erwähnung", "link": "Link", "hashtag": "Hashtag", "email": "E-Mail", @@ -152,7 +151,7 @@ }, "friendship": { "follow": "Folgen", - "following": "Following", + "following": "Folge Ich", "request": "Anfragen", "pending": "In Warteschlange", "block": "Blockieren", @@ -160,19 +159,18 @@ "block_domain": "%s blockieren", "unblock": "Blockierung aufheben", "unblock_user": "@%s entblocken", - "blocked": "Blocked", + "blocked": "Blockiert", "mute": "Stummschalten", "mute_user": "%s stummschalten", - "unmute": "Unmute", - "unmute_user": "Unmute %s", + "unmute": "Nicht mehr stummschalten", + "unmute_user": "%s nicht mehr stummschalten", "muted": "Stummgeschaltet", "edit_info": "Information bearbeiten" }, "timeline": { "filtered": "Gefiltert", "timestamp": { - "now": "Gerade", - "time_ago": "vor %s" + "now": "Gerade" }, "loader": { "load_missing_posts": "Fehlende Beiträge laden", @@ -181,27 +179,22 @@ }, "header": { "no_status_found": "Kein Beitrag gefunden", - "blocking_warning": "Du kannst das Profil dieses Benutzers nicht anzeigen\n solange du es nicht entsperrst.\nDein Profil sieht für diesen Benutzer so aus.", - "user_blocking_warning": "Du kannst %s's Profil nicht anzeigen\n solange du es nicht entsperrst.\nDein Profil sieht für diesen Benutzer so aus.", + "blocking_warning": "Du kannst das Profil dieses Benutzers nicht sehen\n solange du den Benutzer nicht entsperrst.\nDein Profil sieht für diesen Benutzer auch so aus.", + "user_blocking_warning": "Du kannst %ss Profil nicht sehen\n solange du diesen Benutzer nicht entsperrst.\nDein Profil sieht für diesen Benutzer auch so aus.", "blocked_warning": "Das Profil dieses Benutzers\n kann nicht angezeigt werden, bis er dich entsperrt.", - "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", - "suspended_warning": "This user has been suspended.", - "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" + "user_blocked_warning": "Du kannst das Profil von %s nicht sehen\n bis der Benutzer dich entsperrt.", + "suspended_warning": "Dieser Nutzer wurde gesperrt.", + "user_suspended_warning": "Das Konto von %s wurde gesperrt." } } } }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Soziale Netzwerke wieder in deinen Händen." }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Wähle einen Server,\nbeliebigen Server.", "button": { "category": { "all": "Alle", @@ -232,7 +225,7 @@ }, "empty_state": { "finding_servers": "Verfügbare Server werden gesucht...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "bad_network": "Da ist etwas schief gelaufen. Bitte versuche es erneut oder überprüfe deine Internetverbindung.", "no_results": "Keine Ergebnisse" } }, @@ -270,30 +263,30 @@ "reason": "Begründung" }, "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 verwendet einen nicht erlaubten E-Mail-Anbieter", + "unreachable": "%s scheint nicht zu existieren", + "taken": "%s wird bereits verwendet", + "reserved": "%s ist ein reserviertes Schlüsselwort", + "accepted": "%s muss akzeptiert werden", + "blank": "%s ist erforderlich", + "invalid": "%s ist ungültig", + "too_long": "%s ist zu lang", + "too_short": "%s ist zu kurz", + "inclusion": "%s ist kein unterstützter Wert" }, "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": "Benutzername kann nur alphanumerische Zeichen und Unterstriche enthalten", + "username_too_long": "Benutzername ist zu lang (darf nicht länger als 30 Zeichen sein)", + "email_invalid": "Dies ist keine gültige E-Mail Adresse", + "password_too_short": "Passwort ist zu kurz (mindestens 8 Zeichen erforderlich)" } } }, "server_rules": { - "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", - "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", - "terms_of_service": "terms of service", + "title": "Einige Grundregeln.", + "subtitle": "Diese Regeln werden von den Administratoren von %s festgelegt.", + "prompt": "Wenn du fortfährst, unterliegst du den Nutzungsbedingungen und den Datenschutzrichtlinien für %s.", + "terms_of_service": "Nutzungsbedingungen", "privacy_policy": "Datenschutzerklärung", "button": { "confirm": "Ich stimme zu" @@ -304,18 +297,18 @@ "subtitle": "Wir haben gerade eine E-Mail an %s gesendet,\ntippe auf den Link, um Dein Konto zu bestätigen.", "button": { "open_email_app": "E-Mail-App öffnen", - "dont_receive_email": "I never got an email" + "dont_receive_email": "Ich habe keine E-Mail erhalten." }, "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": "Bitte überprüfe deine E-Mails", + "description": "Überprüfe, ob deine E-Mail-Adresse korrekt ist und sieh im Spam-Ordner nach, falls du es noch nicht getan hast.", + "resend_email": "E-Mail erneut versenden" }, "open_email_app": { - "title": "Check your inbox.", - "description": "We just sent you an email. Check your junk folder if you haven’t.", + "title": "Überprüfe deinen Posteingang.", + "description": "Wir haben dir gerade eine E-Mail geschickt. Überprüfe deinen Spam-Ordner, falls du es noch nicht getan hast.", "mail": "Mail", - "open_email_client": "Open Email Client" + "open_email_client": "E-Mail-Client öffnen" } }, "home_timeline": { @@ -324,15 +317,12 @@ "offline": "Offline", "new_posts": "Neue Beiträge anzeigen", "published": "Veröffentlicht!", - "Publishing": "Publishing post..." + "Publishing": "Beitrag wird veröffentlicht..." } }, "suggestion_account": { - "title": "Find People to Follow", - "follow_explain": "When you follow someone, you’ll see their posts in your home feed." - }, - "public_timeline": { - "title": "Öffentlich" + "title": "Entdecke Benutzer zum Folgen", + "follow_explain": "Wenn du jemandem folgst, siehst du deren Beiträge dann in deinem Home-Feed." }, "compose": { "title": { @@ -350,7 +340,7 @@ "attachment": { "photo": "Foto", "video": "Video", - "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", + "attachment_broken": "Dieses %s scheint defekt zu sein und\nkann nicht auf Mastodon hochgeladen werden.", "description_photo": "Für Menschen mit Sehbehinderung beschreiben...", "description_video": "Für Menschen mit Sehbehinderung beschreiben..." }, @@ -362,7 +352,7 @@ "one_day": "1 Tag", "three_days": "3 Tage", "seven_days": "7 Tage", - "option_number": "Option %ld" + "option_number": "Auswahlmöglichkeit %ld" }, "content_warning": { "placeholder": "Schreibe eine Inhaltswarnung hier..." @@ -374,38 +364,31 @@ "direct": "Nur für Leute, die ich erwähne" }, "auto_complete": { - "space_to_add": "Space to add" + "space_to_add": "Leerzeichen um hinzuzufügen" }, "accessibility": { "append_attachment": "Anhang hinzufügen", "append_poll": "Umfrage hinzufügen", "remove_poll": "Umfrage entfernen", - "custom_emoji_picker": "Custom Emoji Picker", - "enable_content_warning": "Enable Content Warning", - "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "custom_emoji_picker": "Benutzerdefinierter Emojiwähler", + "enable_content_warning": "Inhaltswarnung einschalten", + "disable_content_warning": "Inhaltswarnung ausschalten", + "post_visibility_menu": "Sichtbarkeitsmenü" }, "keyboard": { "discard_post": "Beitrag verwerfen", "publish_post": "Beitrag veröffentlichen", "toggle_poll": "Umfrage umschalten", "toggle_content_warning": "Inhaltswarnung umschalten", - "append_attachment_entry": "Add Attachment - %s", - "select_visibility_entry": "Select Visibility - %s" + "append_attachment_entry": "Anhang hinzufügen - %s", + "select_visibility_entry": "Sichtbarkeit auswählen - %s" } }, "profile": { "dashboard": { "posts": "Beiträge", "following": "Gefolgte", - "followers": "Folger", - "accessibility": { - "count_posts": "%ld Beiträge", - "count_following": "%ld Gefolgte", - "count_followers": "%ld Folger" - } + "followers": "Folger" }, "fields": { "add_row": "Zeile hinzufügen", @@ -422,7 +405,7 @@ "relationship_action_alert": { "confirm_unmute_user": { "title": "Ton einschalten", - "message": "Confirm to unmute %s" + "message": "Bestätige um %s nicht mehr stummzuschalten" }, "confirm_unblock_usre": { "title": "Konto entsperren", @@ -439,13 +422,13 @@ "recommend": { "button_text": "Alle anzeigen", "hash_tag": { - "title": "Trending on Mastodon", - "description": "Hashtags that are getting quite a bit of attention", + "title": "Angesagt auf Mastodon", + "description": "Hashtags die an Aufmerksamkeit zunehmen", "people_talking": "%s Leute reden" }, "accounts": { - "title": "Accounts you might like", - "description": "You may like to follow these accounts", + "title": "Konten, die dir gefallen könnten", + "description": "Vielleicht gefallen dir diese Benutzer", "follow": "Folgen" } }, @@ -463,9 +446,6 @@ "clear": "Zurücksetzen" } }, - "hashtag": { - "prompt": "%s Leute reden" - }, "favorite": { "title": "Deine Favoriten" }, diff --git a/Localization/StringsConvertor/input/en_US/Localizable.stringsdict b/Localization/StringsConvertor/input/en_US/Localizable.stringsdict index 33e100fae..42c07cec9 100644 --- a/Localization/StringsConvertor/input/en_US/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/en_US/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %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 + + diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json index 7b5e271e4..3d99c77da 100644 --- a/Localization/StringsConvertor/input/en_US/app.json +++ b/Localization/StringsConvertor/input/en_US/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_expired": "The poll has expired" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Discard Draft", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/es_AR/Localizable.stringsdict b/Localization/StringsConvertor/input/es_AR/Localizable.stringsdict index 9af995567..d1c258f4b 100644 --- a/Localization/StringsConvertor/input/es_AR/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/es_AR/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ mensajes + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld cuentas hablando + 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 + + diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index eae2f6714..e3410be12 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Error al votar", - "poll_expired": "La encuesta finalizó" + "poll_ended": "La encuesta ha terminado" }, "discard_post_content": { "title": "Descartar borrador", @@ -130,7 +130,6 @@ "media_content_warning": "Toca en cualquier lugar para mostrar", "poll": { "vote": "Votar", - "time_left": "Quedan %s", "closed": "Cerrada" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtrado", "timestamp": { - "now": "Ahora", - "time_ago": "hace %s" + "now": "Ahora" }, "loader": { "load_missing_posts": "Cargar mensajes faltantes", @@ -187,11 +185,6 @@ "user_blocked_warning": "No podés ver el perfil de %s\n hasta que dicho usuario te desbloquee.", "suspended_warning": "Este usuario está suspendido.", "user_suspended_warning": "La cuenta de %s está suspendida." - }, - "accessibility": { - "count_replies": "%s respuestas", - "count_reblogs": "%s adhesiones", - "count_favorites": "%s veces marcado como favorito" } } } @@ -331,9 +324,6 @@ "title": "Encontrá cuentas para seguir", "follow_explain": "Cuando sigás a alguien, verás sus mensajes en tu línea temporal principal." }, - "public_timeline": { - "title": "Pública" - }, "compose": { "title": { "new_post": "Nuevo mensaje", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Selector de emoji personalizado", "enable_content_warning": "Habilitar advertencia de contenido", "disable_content_warning": "Deshabilitar advertencia de contenido", - "post_visibility_menu": "Menú de visibilidad del mensaje", - "input_limit_remains_count": "El límite de entrada permite %ld caracteres", - "input_limit_exceeds_count": "El límite de entrada excede %ld caracteres" + "post_visibility_menu": "Menú de visibilidad del mensaje" }, "keyboard": { "discard_post": "Descartar mensaje", @@ -400,12 +388,7 @@ "dashboard": { "posts": "mensajes", "following": "siguiendo", - "followers": "seguidores", - "accessibility": { - "count_posts": "%ld mensajes", - "count_following": "siguiendo a %ld", - "count_followers": "%ld seguidores" - } + "followers": "seguidores" }, "fields": { "add_row": "Agregar fila", @@ -463,9 +446,6 @@ "clear": "Limpiar" } }, - "hashtag": { - "prompt": "%s cuentas hablando" - }, "favorite": { "title": "Tus favoritos" }, @@ -509,7 +489,7 @@ "trigger": { "anyone": "cualquiera", "follower": "un seguidor", - "follow": "cualquiera que sigo", + "follow": "alguien a quien sigo", "noone": "nadie", "title": "Notificarme cuando" } diff --git a/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict index 77bb9668e..9097a22c4 100644 --- a/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ publicaciones + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld personas están hablando de esto + 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 + + diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index febfe4733..e040b8be7 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Voto fallido", - "poll_expired": "La encuesta ha caducado" + "poll_ended": "La encuesta ha terminado" }, "discard_post_content": { "title": "Descartar borrador", @@ -130,7 +130,6 @@ "media_content_warning": "Pulsa en cualquier sitio para mostrar", "poll": { "vote": "Vota", - "time_left": "Quedan %s", "closed": "Cerrado" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtrado", "timestamp": { - "now": "Ahora", - "time_ago": "Hace %s" + "now": "Ahora" }, "loader": { "load_missing_posts": "Cargar publicaciones faltantes", @@ -187,11 +185,6 @@ "user_blocked_warning": "No puedes ver el perfil de %s\n hasta que te desbloquee.", "suspended_warning": "Este usuario ha sido suspendido.", "user_suspended_warning": "La cuenta de %s ha sido suspendida." - }, - "accessibility": { - "count_replies": "%s respuestas", - "count_reblogs": "%s redifusiones", - "count_favorites": "%s favoritos" } } } @@ -331,9 +324,6 @@ "title": "Encuentra Gente a la que Seguir", "follow_explain": "Cuando sigas a alguien verás sus publicaciones en tu página de inicio." }, - "public_timeline": { - "title": "Pública" - }, "compose": { "title": { "new_post": "Nueva Publicación", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Selector de Emojis Personalizados", "enable_content_warning": "Activar Advertencia de Contenido", "disable_content_warning": "Desactivar Advertencia de Contenido", - "post_visibility_menu": "Menú de Visibilidad de la Publicación", - "input_limit_remains_count": "%ld restante hasta el límite de entrada", - "input_limit_exceeds_count": "%ld en exceso sobre el límite de entrada" + "post_visibility_menu": "Menú de Visibilidad de la Publicación" }, "keyboard": { "discard_post": "Descartar Publicación", @@ -400,12 +388,7 @@ "dashboard": { "posts": "publicaciones", "following": "siguiendo", - "followers": "seguidores", - "accessibility": { - "count_posts": "%ld publicaciones", - "count_following": "%ld siguiendo", - "count_followers": "%ld seguidores" - } + "followers": "seguidores" }, "fields": { "add_row": "Añadir Fila", @@ -463,9 +446,6 @@ "clear": "Borrar" } }, - "hashtag": { - "prompt": "%s personas están hablando de esto" - }, "favorite": { "title": "Tus Favoritos" }, diff --git a/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict b/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict index d31559e32..56e176d1e 100644 --- a/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ publications + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld personnes en parlent + 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 + + diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 8a5356806..ad9dbc60d 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Le vote n’a pas pu être enregistré", - "poll_expired": "Le sondage a expiré" + "poll_ended": "Le sondage est terminé" }, "discard_post_content": { "title": "Abandonner le brouillon", @@ -130,7 +130,6 @@ "media_content_warning": "Tapotez n’importe où pour révéler la publication", "poll": { "vote": "Voter", - "time_left": "%s restantes", "closed": "Fermé" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtré", "timestamp": { - "now": "À l’instant", - "time_ago": "il y a %s" + "now": "À l’instant" }, "loader": { "load_missing_posts": "Charger les messages manquants", @@ -187,11 +185,6 @@ "user_blocked_warning": "Vous ne pouvez pas voir le profil de %s\n tant qu'il ne vous aura pas débloqué.", "suspended_warning": "Cet utilisateur a été suspendu.", "user_suspended_warning": "Le compte de %s à été suspendu." - }, - "accessibility": { - "count_replies": "%s réponses", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favoris" } } } @@ -331,9 +324,6 @@ "title": "Trouver des personnes à suivre", "follow_explain": "Quand vous suivez quelqu'un, vous verrez leurs messages dans votre flux d’accueil." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "Nouvelle Publication", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Sélecteur d’émojis personnalisé", "enable_content_warning": "Basculer l’avertissement de contenu", "disable_content_warning": "Désactiver l'avertissement de contenu", - "post_visibility_menu": "Menu de Visibilité de la publication", - "input_limit_remains_count": "La limite d'entrée reste %ld", - "input_limit_exceeds_count": "La limite d'entrée dépasse %ld" + "post_visibility_menu": "Menu de Visibilité de la publication" }, "keyboard": { "discard_post": "Rejeter la publication", @@ -400,12 +388,7 @@ "dashboard": { "posts": "publications", "following": "abonnements", - "followers": "abonnés", - "accessibility": { - "count_posts": "%ld publications", - "count_following": "%ld abonnés", - "count_followers": "%ld abonnés" - } + "followers": "abonnés" }, "fields": { "add_row": "Ajouter une rangée", @@ -463,9 +446,6 @@ "clear": "Effacer" } }, - "hashtag": { - "prompt": "%s personnes parlent" - }, "favorite": { "title": "Vos favoris" }, diff --git a/Localization/StringsConvertor/input/gd_GB/Localizable.stringsdict b/Localization/StringsConvertor/input/gd_GB/Localizable.stringsdict index 8b9ad59e5..214befaad 100644 --- a/Localization/StringsConvertor/input/gd_GB/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/gd_GB/Localizable.stringsdict @@ -2,6 +2,46 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + two + %ld characters + few + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + two + %ld characters + few + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -13,13 +53,33 @@ NSStringFormatValueTypeKey ld one - post + phost two - posts + phost few - posts + postaichean other - posts + post + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + two + %ld posts + few + %ld posts + other + %ld posts plural.count.favorite @@ -33,13 +93,13 @@ NSStringFormatValueTypeKey ld one - 1 favorite + %ld annsachd two - %ld favorites + %ld annsachd few - %ld favorites + %ld annsachdan other - %ld favorites + %ld annsachd plural.count.reblog @@ -53,13 +113,13 @@ NSStringFormatValueTypeKey ld one - 1 reblog + %ld bhrosnachadh two - %ld reblogs + %ld bhrosnachadh few - %ld reblogs + %ld brosnachaidhean other - %ld reblogs + %ld brosnachadh plural.count.vote @@ -73,13 +133,13 @@ NSStringFormatValueTypeKey ld one - 1 vote + %ld bhòt two - %ld votes + %ld bhòt few - %ld votes + %ld bhòtaichean other - %ld votes + %ld bhòt plural.count.voter @@ -93,13 +153,13 @@ NSStringFormatValueTypeKey ld one - 1 voter + %ld neach-bhòtaidh two - %ld voters + %ld luchd-bhòtaidh few - %ld voters + %ld luchd-bhòtaidh other - %ld voters + %ld luchd-bhòtaidh plural.people_talking @@ -113,13 +173,173 @@ NSStringFormatValueTypeKey ld one - 1 people talking + %ld a’ bruidhinn two - %ld people talking + %ld a’ bruidhinn few - %ld people talking + %ld a’ bruidhinn other - %ld people talking + %ld a’ bruidhinn + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + two + %ld following + few + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + two + %ld followers + few + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + two + %ld years left + few + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + two + %ld months left + few + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + two + %ld days left + few + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + two + %ld hours left + few + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + two + %ld minutes left + few + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + two + %ld seconds left + few + %ld seconds left + other + %ld seconds left diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index 7b5e271e4..f3be64be0 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -2,506 +2,486 @@ "common": { "alerts": { "common": { - "please_try_again": "Please try again.", - "please_try_again_later": "Please try again later." + "please_try_again": "Feuch ris a-rithist.", + "please_try_again_later": "Feuch ris a-rithist an ceann greis." }, "sign_up_failure": { - "title": "Sign Up Failure" + "title": "Dh’fhàillig leis a’ chlàradh" }, "server_error": { - "title": "Server Error" + "title": "Mearachd an fhrithealaiche" }, "vote_failure": { - "title": "Vote Failure", - "poll_expired": "The poll has expired" + "title": "Dh’fhàillig leis a’ bhòt", + "poll_ended": "The poll has ended" }, "discard_post_content": { - "title": "Discard Draft", - "message": "Confirm to discard composed post content." + "title": "Tilg air falbh an dreachd", + "message": "Dearbh tilgeil air falbh susbaint a’ phuist a sgrìobh thu." }, "publish_post_failure": { - "title": "Publish Failure", - "message": "Failed to publish the post.\nPlease check your internet connection.", + "title": "Dh’fhàillig leis an fhoillseachadh", + "message": "Cha deach leinn am post fhoillseachadh.\nThoir sùil air a’ cheangal agad ris an eadar-lìon.", "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": "Chan urrainn dhut video a cheangal ri post sa bheil dealbh mu thràth.", + "more_than_one_video": "Chan urrainn dhut barrachd air aon video a cheangal ris." } }, "edit_profile_failure": { - "title": "Edit Profile Error", - "message": "Cannot edit profile. Please try again." + "title": "Mearachd le deasachadh na pròifil", + "message": "Cha b’ urrainn dhuinn a’ pròifil a dheasachadh. Feuch ris a-rithist." }, "sign_out": { - "title": "Sign Out", - "message": "Are you sure you want to sign out?", - "confirm": "Sign Out" + "title": "Clàraich a-mach", + "message": "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?", + "confirm": "Clàraich a-mach" }, "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": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn %s a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiod sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud agus thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.", + "block_entire_domain": "Bac an àrainn" }, "save_photo_failure": { - "title": "Save Photo Failure", - "message": "Please enable the photo library access permission to save the photo." + "title": "Dh’fhàillig le sàbhaladh an deilbh", + "message": "Cuir cead inntrigidh do thasg-lann nan dealbhan an comas gus an dealbh a shàbhaladh." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", + "delete": "Sguab às" }, "clean_cache": { - "title": "Clean Cache", - "message": "Successfully cleaned %s cache." + "title": "Falamhaich an tasgadan", + "message": "Chaidh %s a thasgadan fhalamhachadh." } }, "controls": { "actions": { - "back": "Back", - "next": "Next", - "previous": "Previous", - "open": "Open", - "add": "Add", - "remove": "Remove", - "edit": "Edit", - "save": "Save", - "ok": "OK", - "done": "Done", - "confirm": "Confirm", - "continue": "Continue", - "cancel": "Cancel", - "discard": "Discard", - "try_again": "Try Again", - "take_photo": "Take Photo", - "save_photo": "Save Photo", - "copy_photo": "Copy Photo", - "sign_in": "Sign In", - "sign_up": "Sign Up", - "see_more": "See More", - "preview": "Preview", - "share": "Share", - "share_user": "Share %s", - "share_post": "Share Post", - "open_in_safari": "Open in Safari", - "find_people": "Find people to follow", - "manually_search": "Manually search instead", - "skip": "Skip", - "reply": "Reply", - "report_user": "Report %s", - "block_domain": "Block %s", - "unblock_domain": "Unblock %s", - "settings": "Settings", - "delete": "Delete" + "back": "Air ais", + "next": "Air adhart", + "previous": "Air ais", + "open": "Fosgail", + "add": "Cuir ris", + "remove": "Thoir air falbh", + "edit": "Deasaich", + "save": "Sàbhail", + "ok": "Ceart ma-thà", + "done": "Deiseil", + "confirm": "Dearbh", + "continue": "Lean air adhart", + "cancel": "Sguir dheth", + "discard": "Tilg air falbh", + "try_again": "Feuch ris a-rithist", + "take_photo": "Tog dealbh", + "save_photo": "Sàbhail an dealbh", + "copy_photo": "Dèan lethbhreac dhen dealbh", + "sign_in": "Clàraich a-steach", + "sign_up": "Clàraich leinn", + "see_more": "Seall a bharrachd", + "preview": "Ro-sheall", + "share": "Co-roinn", + "share_user": "Co-roinn %s", + "share_post": "Co-roinn am post", + "open_in_safari": "Fosgail ann an Safari", + "find_people": "Lorg daoine a leanas tu", + "manually_search": "Lorg a làimh ’na àite", + "skip": "Leum thairis air", + "reply": "Freagair", + "report_user": "Dèan gearan mu %s", + "block_domain": "Bac %s", + "unblock_domain": "Dì-bhac %s", + "settings": "Roghainnean", + "delete": "Sguab às" }, "tabs": { - "home": "Home", - "search": "Search", - "notification": "Notification", - "profile": "Profile" + "home": "Dachaigh", + "search": "Lorg", + "notification": "Brath", + "profile": "Pròifil" }, "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": "Geàrr leum gu %s", + "compose_new_post": "Sgrìobh post ùr", + "show_favorites": "Seall na h-annsachdan", + "open_settings": "Fosgail na roghainnean" }, "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": "Am post roimhe", + "next_status": "An ath-phost", + "open_status": "Fosgail am post", + "open_author_profile": "Fosgail pròifil an ùghdair", + "open_reblogger_profile": "Fosgail pròifil an neach-brosnachaidh", + "reply_status": "Freagair do phost", + "toggle_reblog": "Toglaich brosnachadh a’ phuist", + "toggle_favorite": "Toglaich annsachd a’ phuist", + "toggle_content_warning": "Toglaich rabhadh susbainte a’ phuist", + "preview_image": "Ro-sheall an dealbh" }, "segmented_control": { - "previous_section": "Previous Section", - "next_section": "Next Section" + "previous_section": "An earrann roimhpe", + "next_section": "An ath earrann" } }, "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", + "user_reblogged": "Tha %s ’ga bhrosnachadh", + "user_replied_to": "Air %s fhreagairt", + "show_post": "Seall am post", + "show_user_profile": "Seall pròifil a’ chleachdaiche", + "content_warning": "Rabhadh susbainte", + "media_content_warning": "Thoir gnogag àite sam bith gus a nochdadh", "poll": { - "vote": "Vote", - "time_left": "%s left", - "closed": "Closed" + "vote": "Cuir bhòt", + "closed": "Dùinte" }, "actions": { - "reply": "Reply", - "reblog": "Reblog", - "unreblog": "Undo reblog", - "favorite": "Favorite", - "unfavorite": "Unfavorite", - "menu": "Menu" + "reply": "Freagair", + "reblog": "Brosnaich", + "unreblog": "Na brosnaich tuilleadh", + "favorite": "Cuir ris na h-annsachdan", + "unfavorite": "Thoir air falbh o na h-annsachdan", + "menu": "Clàr-taice" }, "tag": { "url": "URL", - "mention": "Mention", - "link": "Link", - "hashtag": "Hashtag", - "email": "Email", + "mention": "Iomradh", + "link": "Ceangal", + "hashtag": "Taga hais", + "email": "Post-d", "emoji": "Emoji" } }, "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" + "follow": "Lean air", + "following": "’Ga leantainn", + "request": "Iarrtas", + "pending": "Ri dhèiligeadh", + "block": "Bac", + "block_user": "Bac %s", + "block_domain": "Bac %s", + "unblock": "Dì-bhac", + "unblock_user": "Dì-bhac %s", + "blocked": "’Ga bhacadh", + "mute": "Mùch", + "mute_user": "Mùch %s", + "unmute": "Dì-mhùch", + "unmute_user": "Dì-mhùch %s", + "muted": "’Ga mhùchadh", + "edit_info": "Deasaich" }, "timeline": { - "filtered": "Filtered", + "filtered": "Criathraichte", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "An-dràsta" }, "loader": { - "load_missing_posts": "Load missing posts", - "loading_missing_posts": "Loading missing posts...", - "show_more_replies": "Show more replies" + "load_missing_posts": "Luchdaich postaichean a dhìth", + "loading_missing_posts": "A’ luchdadh nam post a tha a dhìth…", + "show_more_replies": "Seall barrachd freagairtean" }, "header": { - "no_status_found": "No Post Found", - "blocking_warning": "You can’t view this user's profile\n until you unblock them.\nYour profile looks like this to them.", - "user_blocking_warning": "You can’t view %s’s profile\n until you unblock them.\nYour profile looks like this to them.", - "blocked_warning": "You can’t view this user’s profile\n until they unblock you.", - "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", - "suspended_warning": "This user has been suspended.", - "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" + "no_status_found": "Cha deach post a lorg", + "blocking_warning": "Chan fhaic thu pròifil a’ chleachdaiche seo\n gus an dì-bhac thu iad.\nSeo an coltas a th’ air a’ phròifil agad dhaibh-san.", + "user_blocking_warning": "Chan fhaic thu a’ phròifil aig %s\n gus an dì-bhac thu iad.\nSeo an coltas a th’ air a’ phròifil agad dhaibh-san.", + "blocked_warning": "Chan fhaic thu pròifil a’ chleachdaiche seo\n mus dì-bhac iad thu.", + "user_blocked_warning": "Chan fhaic thu a’ phròifil aig %s\n mus dì-bhac iad thu.", + "suspended_warning": "Chaidh an cleachdaiche seo a chur à rèim.", + "user_suspended_warning": "Chaidh an cunntas aig %s a chur à rèim." } } } }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "A’ cur nan lìonraidhean sòisealta\n’nad làmhan fhèin." }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Tagh frithealaiche sam bith.", "button": { "category": { - "all": "All", - "all_accessiblity_description": "Category: All", - "academia": "academia", - "activism": "activism", - "food": "food", + "all": "Na h-uile", + "all_accessiblity_description": "Roinn-seòrsa: Na h-uile", + "academia": "saoghal nan sgoilear", + "activism": "iomairteachd", + "food": "biadh", "furry": "furry", - "games": "games", - "general": "general", - "journalism": "journalism", - "lgbt": "lgbt", - "regional": "regional", - "art": "art", - "music": "music", - "tech": "tech" + "games": "geamannan", + "general": "coitcheann", + "journalism": "naidheachdas", + "lgbt": "LGBT", + "regional": "ionadail", + "art": "ealain", + "music": "ceòl", + "tech": "teicneolas" }, - "see_less": "See Less", - "see_more": "See More" + "see_less": "Seall nas lugha", + "see_more": "Seall a bharrachd" }, "label": { - "language": "LANGUAGE", - "users": "USERS", - "category": "CATEGORY" + "language": "CÀNAN", + "users": "CLEACHDAICHEAN", + "category": "ROINN-SEÒRSA" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Lorg frithealaiche no gabh pàirt san fhear agad fhèin…" }, "empty_state": { - "finding_servers": "Finding available servers...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", - "no_results": "No results" + "finding_servers": "A’ lorg nam frithealaichean ri am faighinn…", + "bad_network": "Chaidh rudeigin ceàrr le luchdadh an dàta. Thoir sùil air a’ cheangal agad ris an eadar-lìon.", + "no_results": "Gun toradh" } }, "register": { - "title": "Tell us about you.", + "title": "Innis dhuinn mu do dhèidhinn.", "input": { "avatar": { - "delete": "Delete" + "delete": "Sguab às" }, "username": { - "placeholder": "username", - "duplicate_prompt": "This username is taken." + "placeholder": "ainm-cleachdaiche", + "duplicate_prompt": "Tha an t-ainm-cleachdaiche seo aig cuideigin eile." }, "display_name": { - "placeholder": "display name" + "placeholder": "ainm-taisbeanaidh" }, "email": { - "placeholder": "email" + "placeholder": "post-d" }, "password": { - "placeholder": "password", - "hint": "Your password needs at least eight characters" + "placeholder": "facal-faire", + "hint": "Feumaidh ochd caractaran a bhith san fhacal-fhaire agad air a char as giorra" }, "invite": { - "registration_user_invite_request": "Why do you want to join?" + "registration_user_invite_request": "Carson a bu mhiann leat ballrachd fhaighinn?" } }, "error": { "item": { - "username": "Username", - "email": "Email", - "password": "Password", - "agreement": "Agreement", - "locale": "Locale", - "reason": "Reason" + "username": "Ainm-cleachdaiche", + "email": "Post-d", + "password": "Facal-faire", + "agreement": "Aonta", + "locale": "Sgeama ionadail", + "reason": "Adhbhar" }, "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": "Tha solaraiche puist-d nach eil ceadaichte am broinn %s", + "unreachable": "Tha coltas nach eil %s ann", + "taken": "Tha %s ’ga chleachdadh mu thràth", + "reserved": "’S e facal glèidhte a th’ ann an %s", + "accepted": "Feumaidh tu aontachadh ri %s", + "blank": "Tha %s riatanach", + "invalid": "Chan eil %s dligheach", + "too_long": "Tha %s ro fhada", + "too_short": "Tha %s ro ghoirid", + "inclusion": "Cha chuir sinn taic ri luach %s" }, "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": "Chan fhaod ach litrichean gun stràcan is fo-loidhnichean a bhith am broinn ainm-cleachdaiche", + "username_too_long": "Tha an t-ainm-cleachdaiche ro fhada (chan fhaod e a bhith nas fhaide na 30 caractar)", + "email_invalid": "Chan e seòladh puist-d dligheach a tha seo", + "password_too_short": "Tha am facal-faire ro ghoirid (feumaidh 8 caractaran a bhith ann air a char as giorra)" } } }, "server_rules": { - "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", - "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", - "terms_of_service": "terms of service", - "privacy_policy": "privacy policy", + "title": "Riaghailt bhunasach no dhà.", + "subtitle": "Shuidhich rianairean %s na riaghailtean seo.", + "prompt": "Ma leanas tu air adhart, bidh thu fo bhuaidh teirmichean seirbheise is poileasaidh prìobhaideachd %s.", + "terms_of_service": "teirmichean na seirbheise", + "privacy_policy": "poileasaidh prìobhaideachd", "button": { - "confirm": "I Agree" + "confirm": "Gabhaidh mi ris" } }, "confirm_email": { - "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "title": "Aon rud eile.", + "subtitle": "Tha sinn air post-d a chur gu %s,\nthoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.", "button": { - "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "open_email_app": "Fosgail aplacaid a’ phuist-d", + "dont_receive_email": "Cha d’ fhuair mi post-d a-riamh" }, "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": "Thoir sùil air a’ phost-d agad", + "description": "Dearbh gu bheil an seòladh puist-d agad mar bu chòir agus nach eil dad ann am pasgan an truilleis.", + "resend_email": "Cuir am post-d a-rithist" }, "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": "Thoir sùil air a’ bhogsa a-steach agad.", + "description": "Tha sinn air post-d a chur thugad. Thoir sùil air pasgan an truilleis agad mura d’ fhuair thu e.", + "mail": "Post", + "open_email_client": "Fosgail cliant puist-d" } }, "home_timeline": { - "title": "Home", + "title": "Dachaigh", "navigation_bar_state": { - "offline": "Offline", - "new_posts": "See new posts", - "published": "Published!", - "Publishing": "Publishing post..." + "offline": "Far loidhne", + "new_posts": "Seall na postaichean ùra", + "published": "Chaidh fhoillseachadh!", + "Publishing": "A’ foillseachadh a’ phuist…" } }, "suggestion_account": { - "title": "Find People to Follow", - "follow_explain": "When you follow someone, you’ll see their posts in your home feed." - }, - "public_timeline": { - "title": "Public" + "title": "Lorg daoine a leanas tu", + "follow_explain": "Nuair a leanas tu air cuideigin, chì thu na puist aca air inbhir na dachaigh agad." }, "compose": { "title": { - "new_post": "New Post", - "new_reply": "New Reply" + "new_post": "Post ùr", + "new_reply": "Freagairt ùr" }, "media_selection": { - "camera": "Take Photo", - "photo_library": "Photo Library", - "browse": "Browse" + "camera": "Tog dealbh", + "photo_library": "Leabhar-lann nan dealbhan", + "browse": "Rùraich" }, - "content_input_placeholder": "Type or paste what’s on your mind", - "compose_action": "Publish", - "replying_to_user": "replying to %s", + "content_input_placeholder": "Sgrìobh no cuir ann na tha air d’ aire", + "compose_action": "Foillsich", + "replying_to_user": "a’ freagairt gu %s", "attachment": { - "photo": "photo", + "photo": "dealbh", "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": "Seo %s a tha briste is cha ghabh\na luchdadh suas gu Mastodon.", + "description_photo": "Mìnich an dealbh dhan fheadhainn air a bheil cion-lèirsinne…", + "description_video": "Mìnich a’ video dhan fheadhainn air a bheil cion-lèirsinne…" }, "poll": { - "duration_time": "Duration: %s", - "thirty_minutes": "30 minutes", - "one_hour": "1 Hour", - "six_hours": "6 Hours", - "one_day": "1 Day", - "three_days": "3 Days", - "seven_days": "7 Days", - "option_number": "Option %ld" + "duration_time": "Faide: %s", + "thirty_minutes": "Leth-uair a thìde", + "one_hour": "Uair a thìde", + "six_hours": "6 uairean a thìde", + "one_day": "Latha", + "three_days": "3 làithean", + "seven_days": "Seachdain", + "option_number": "Roghainn %ld" }, "content_warning": { - "placeholder": "Write an accurate warning here..." + "placeholder": "Sgrìobh rabhadh pongail an-seo…" }, "visibility": { - "public": "Public", - "unlisted": "Unlisted", - "private": "Followers only", - "direct": "Only people I mention" + "public": "Poblach", + "unlisted": "Falaichte o liostaichean", + "private": "Luchd-leantainn a-mhàin", + "direct": "Daoine air an dug mi iomradh a-mhàin" }, "auto_complete": { "space_to_add": "Space to add" }, "accessibility": { - "append_attachment": "Add Attachment", - "append_poll": "Add Poll", - "remove_poll": "Remove Poll", - "custom_emoji_picker": "Custom Emoji Picker", - "enable_content_warning": "Enable Content Warning", - "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "append_attachment": "Cuir ceanglachan ris", + "append_poll": "Cuir cunntas-bheachd ris", + "remove_poll": "Thoir air falbh an cunntas-bheachd", + "custom_emoji_picker": "Roghnaichear nan Emoji gnàthaichte", + "enable_content_warning": "Cuir rabhadh susbainte an comas", + "disable_content_warning": "Cuir rabhadh susbainte à comas", + "post_visibility_menu": "Clàr-taice faicsinneachd a’ phuist" }, "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": "Tilg air falbh am post", + "publish_post": "Foillsich am post", + "toggle_poll": "Toglaich an cunntas-bheachd", + "toggle_content_warning": "Toglaich rabhadh susbainte", + "append_attachment_entry": "Cuir ceanglachan ris – %s", + "select_visibility_entry": "Tagh an fhaicsinneachd – %s" } }, "profile": { "dashboard": { - "posts": "posts", - "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "posts": "postaichean", + "following": "a’ leantainn", + "followers": "luchd-leantainn" }, "fields": { - "add_row": "Add Row", + "add_row": "Cuir ràgh ris", "placeholder": { - "label": "Label", - "content": "Content" + "label": "Leubail", + "content": "Susbaint" } }, "segmented_control": { - "posts": "Posts", - "replies": "Replies", - "media": "Media" + "posts": "Postaichean", + "replies": "Freagairtean", + "media": "Meadhanan" }, "relationship_action_alert": { "confirm_unmute_user": { - "title": "Unmute Account", - "message": "Confirm to unmute %s" + "title": "Dì-mhùch an cunntas", + "message": "Dearbh dì-mhùchadh %s" }, "confirm_unblock_usre": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Dì-bhac an cunntas", + "message": "Dearbh dì-bhacadh %s" } } }, "search": { - "title": "Search", + "title": "Lorg", "search_bar": { - "placeholder": "Search hashtags and users", - "cancel": "Cancel" + "placeholder": "Lorg sna tagaichean hais is cleachdaichean", + "cancel": "Sguir dheth" }, "recommend": { - "button_text": "See All", + "button_text": "Seall na h-uile", "hash_tag": { - "title": "Trending on Mastodon", - "description": "Hashtags that are getting quite a bit of attention", - "people_talking": "%s people are talking" + "title": "A’ treandadh air Mastodon", + "description": "Tagaichean hais le aire orra an-dràsta", + "people_talking": "Tha %s a’ bruidhinn" }, "accounts": { - "title": "Accounts you might like", - "description": "You may like to follow these accounts", - "follow": "Follow" + "title": "Cunntasan a chòrdas riut ma dh’fhaoidte", + "description": "Saoil am bu toigh leat leantainn air na cunntasan seo?", + "follow": "Lean air" } }, "searching": { "segment": { - "all": "All", - "people": "People", - "hashtags": "Hashtags", - "posts": "Posts" + "all": "Na h-uile", + "people": "Daoine", + "hashtags": "Tagaichean hais", + "posts": "Postaichean" }, "empty_state": { - "no_results": "No results" + "no_results": "Gun toradh" }, - "recent_search": "Recent searches", - "clear": "Clear" + "recent_search": "Na lorg thu o chionn goirid", + "clear": "Falamhaich" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { - "title": "Your Favorites" + "title": "Na h-annsachdan agad" }, "notification": { "title": { - "Everything": "Everything", - "Mentions": "Mentions" + "Everything": "A h-uile rud", + "Mentions": "Iomraidhean" }, "action": { "follow": "followed you", "favourite": "favorited your post", "reblog": "reblogged your post", - "poll": "Your poll has ended", + "poll": "Thàinig an cunntas-bheachd agad gu crìoch", "mention": "mentioned you", "follow_request": "requested to follow you" }, "keyobard": { - "show_everything": "Show Everything", - "show_mentions": "Show Mentions" + "show_everything": "Seall a h-uile càil", + "show_mentions": "Seall na h-iomraidhean" } }, "thread": { "back_title": "Post", - "title": "Post from %s" + "title": "Post o %s" }, "settings": { - "title": "Settings", + "title": "Roghainnean", "section": { "appearance": { - "title": "Appearance", - "automatic": "Automatic", - "light": "Always Light", - "dark": "Always Dark" + "title": "Coltas", + "automatic": "Fèin-obrachail", + "light": "Soilleir an-còmhnaidh", + "dark": "Dorcha an-còmhnaidh" }, "notifications": { - "title": "Notifications", + "title": "Brathan", "favorites": "Favorites my post", "follows": "Follows me", "boosts": "Reblogs my post", @@ -515,46 +495,46 @@ } }, "preference": { - "title": "Preferences", - "true_black_dark_mode": "True black dark mode", - "disable_avatar_animation": "Disable animated avatars", - "disable_emoji_animation": "Disable animated emojis", - "using_default_browser": "Use default browser to open links" + "title": "Roghainnean", + "true_black_dark_mode": "Modh dubh dorcha", + "disable_avatar_animation": "Cuir beothachadh nan avataran à comas", + "disable_emoji_animation": "Cuir beothachadh nan Emojis à comas", + "using_default_browser": "Cleachd am brabhsair bunaiteach airson ceanglaichean fhosgladh" }, "boring_zone": { - "title": "The Boring Zone", - "account_settings": "Account Settings", - "terms": "Terms of Service", - "privacy": "Privacy Policy" + "title": "An earrann ràsanach", + "account_settings": "Roghainnean a’ chunntais", + "terms": "Teirmichean na seirbheise", + "privacy": "Am poileasaidh prìobhaideachd" }, "spicy_zone": { - "title": "The Spicy Zone", - "clear": "Clear Media Cache", - "signout": "Sign Out" + "title": "Gnìomhan", + "clear": "Falamhaich tasgadan nam meadhanan", + "signout": "Clàraich a-mach" } }, "footer": { - "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + "mastodon_description": "’S e bathar-bog le bun-tùs fosgailte a th’ ann am Mastodon. ’S urrainn dhut aithris a dhèanamh air duilgheadasan air GitHub fo %s (%s)" }, "keyboard": { - "close_settings_window": "Close Settings Window" + "close_settings_window": "Dùin uinneag nan roghainnean" } }, "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?", - "send": "Send Report", - "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "title": "Dèan gearan mu %s", + "step1": "Ceum 1 à 2", + "step2": "Ceum 2 à 2", + "content1": "A bheil post sam bith eile ann a bu mhiann leat cur ris a’ ghearan?", + "content2": "A bheil rud sam bith ann a bu mhiann leat innse dha na maoir mun ghearan seo?", + "send": "Cuir an gearan", + "skip_to_send": "Cuir gun bheachd ris", + "text_placeholder": "Sgrìobh no cuir ann beachdan a bharrachd" }, "preview": { "keyboard": { - "close_preview": "Close Preview", - "show_next": "Show Next", - "show_previous": "Show Previous" + "close_preview": "Dùin an ro-shealladh", + "show_next": "Air adhart", + "show_previous": "Air ais" } } } diff --git a/Localization/StringsConvertor/input/gd_GB/ios-infoPlist.json b/Localization/StringsConvertor/input/gd_GB/ios-infoPlist.json index c6db73de0..2e521376d 100644 --- a/Localization/StringsConvertor/input/gd_GB/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/gd_GB/ios-infoPlist.json @@ -1,6 +1,6 @@ { - "NSCameraUsageDescription": "Used to take photo for post status", - "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", - "NewPostShortcutItemTitle": "New Post", - "SearchShortcutItemTitle": "Search" + "NSCameraUsageDescription": "’Ga chleachdadh airson dealbh a thogail do staid puist", + "NSPhotoLibraryAddUsageDescription": "’Ga chleachdadh airson dealbh a shàbhaladh ann an tasg-lann nan dealbhan", + "NewPostShortcutItemTitle": "Post ùr", + "SearchShortcutItemTitle": "Lorg" } diff --git a/Localization/StringsConvertor/input/hi_IN/Localizable.stringsdict b/Localization/StringsConvertor/input/hi_IN/Localizable.stringsdict index 33e100fae..42c07cec9 100644 --- a/Localization/StringsConvertor/input/hi_IN/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/hi_IN/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %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 + + diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json index 7b5e271e4..3d99c77da 100644 --- a/Localization/StringsConvertor/input/hi_IN/app.json +++ b/Localization/StringsConvertor/input/hi_IN/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_expired": "The poll has expired" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Discard Draft", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict b/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict index caa81fb6a..82230ebcd 100644 --- a/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict @@ -2,6 +2,34 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -16,6 +44,20 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -86,5 +128,117 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 4845347ef..3df4e56c9 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "投票の失敗", - "poll_expired": "投票は終了しました" + "poll_ended": "投票は終了しました" }, "discard_post_content": { "title": "トゥートを破棄しますか?", @@ -130,7 +130,6 @@ "media_content_warning": "どこかをタップして表示", "poll": { "vote": "投票", - "time_left": "残り%s", "closed": "クローズド" }, "actions": { @@ -166,13 +165,12 @@ "unmute": "ミュートを解除", "unmute_user": "%sのミュートを解除", "muted": "ミュート済み", - "edit_info": "Edit Info" + "edit_info": "編集" }, "timeline": { "filtered": "フィルター済み", "timestamp": { - "now": "今", - "time_ago": "%s前" + "now": "今" }, "loader": { "load_missing_posts": "不足しているトゥートを読み込む", @@ -187,11 +185,6 @@ "user_blocked_warning": "%sがブロックを解除しない限りプロフィールをみることはできません。", "suspended_warning": "このユーザーは停止されています。", "user_suspended_warning": "%sのアカウントは停止されました。" - }, - "accessibility": { - "count_replies": "%s リプライ", - "count_reblogs": "%s ブースト", - "count_favorites": "%s いいね" } } } @@ -331,9 +324,6 @@ "title": "フォローする人を探す", "follow_explain": "誰かをフォローすると、その人の投稿がタイムラインに表示されるようになります。" }, - "public_timeline": { - "title": "公開" - }, "compose": { "title": { "new_post": "新しいトゥート", @@ -383,9 +373,7 @@ "custom_emoji_picker": "カスタム絵文字ピッカー", "enable_content_warning": "コンテンツ警告を有効にする", "disable_content_warning": "コンテンツ警告を無効にする", - "post_visibility_menu": "投稿の表示メニュー", - "input_limit_remains_count": "入力制限は残り %ld", - "input_limit_exceeds_count": "最大文字数を超えました。 %ld" + "post_visibility_menu": "投稿の表示メニュー" }, "keyboard": { "discard_post": "トゥートを破棄", @@ -400,12 +388,7 @@ "dashboard": { "posts": "トゥート", "following": "フォロー中", - "followers": "フォロワー", - "accessibility": { - "count_posts": "%ld トゥート", - "count_following": "%ld フォロー中", - "count_followers": "%ld フォロワー" - } + "followers": "フォロワー" }, "fields": { "add_row": "行追加", @@ -463,9 +446,6 @@ "clear": "クリア" } }, - "hashtag": { - "prompt": "%s人がこの話題について話しています" - }, "favorite": { "title": "あなたのいいね" }, diff --git a/Localization/StringsConvertor/input/ko_KR/Localizable.stringsdict b/Localization/StringsConvertor/input/ko_KR/Localizable.stringsdict index b4603a304..2a55b670b 100644 --- a/Localization/StringsConvertor/input/ko_KR/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ko_KR/Localizable.stringsdict @@ -2,6 +2,34 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -16,6 +44,20 @@ 게시물 + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -86,5 +128,117 @@ %ld 명이 말하고 있음 + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json index 3151566d3..91fd4f147 100644 --- a/Localization/StringsConvertor/input/ko_KR/app.json +++ b/Localization/StringsConvertor/input/ko_KR/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "투표 실패", - "poll_expired": "투표가 만료되었습니다" + "poll_ended": "투표가 끝났습니다" }, "discard_post_content": { "title": "초안 버리기", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "투표", - "time_left": "%s 남음", "closed": "마감" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "필터됨", "timestamp": { - "now": "지금", - "time_ago": "%s 전" + "now": "지금" }, "loader": { "load_missing_posts": "빈 게시물 불러오기", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "이 사용자는 정지된 상태입니다.", "user_suspended_warning": "%s의 계정은 정지된 상태입니다." - }, - "accessibility": { - "count_replies": "%s개의 답장", - "count_reblogs": "%s개의 리블로그", - "count_favorites": "%s개의 즐겨찾기" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "커스텀 에모지 선택기", "enable_content_warning": "열람 주의 설정", "disable_content_warning": "열람 주의 해제", - "post_visibility_menu": "게시물 공개범위 메뉴", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "게시물 공개범위 메뉴" }, "keyboard": { "discard_post": "글 버리기", @@ -400,12 +388,7 @@ "dashboard": { "posts": "게시물", "following": "팔로잉", - "followers": "팔로워", - "accessibility": { - "count_posts": "%ld 게시물", - "count_following": "%ld 팔로잉", - "count_followers": "%ld 팔로워" - } + "followers": "팔로워" }, "fields": { "add_row": "행 추가", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/nl_NL/Localizable.stringsdict b/Localization/StringsConvertor/input/nl_NL/Localizable.stringsdict new file mode 100644 index 000000000..e69582f04 --- /dev/null +++ b/Localization/StringsConvertor/input/nl_NL/Localizable.stringsdict @@ -0,0 +1,278 @@ + + + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Invoer limiet overschrijdt %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 teken + other + %ld tekens + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Invoerlimiet blijft %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 teken + other + %ld tekens + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + bericht + other + berichten + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 bericht + other + %ld berichten + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favoriet + other + %ld favorieten + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gedeeld bericht + other + %ld gedeelde berichten + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 stem + other + %ld stemmen + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 kiezer + other + %ld kiezers + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gebruiker die praat + other + %ld gebruikers die praten + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 volgend + other + %ld volgend + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 volger + other + %ld volgers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 jaar resterend + other + %ld jaren resterend + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 maanden resterend + other + %ld maanden resterend + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dag resterend + other + %ld dagen resterend + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 uur resterend + other + %ld uur resterend + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minuut resterend + other + %ld minuten resterend + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 seconde resterend + other + %ld seconden resterend + + + + diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json new file mode 100644 index 000000000..cdd5a40ff --- /dev/null +++ b/Localization/StringsConvertor/input/nl_NL/app.json @@ -0,0 +1,541 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Probeer het opnieuw.", + "please_try_again_later": "Probeer het later nog eens." + }, + "sign_up_failure": { + "title": "Registratiefout" + }, + "server_error": { + "title": "Serverfout" + }, + "vote_failure": { + "title": "Stemmen Mislukt", + "poll_ended": "De peiling is beëindigd" + }, + "discard_post_content": { + "title": "Concept Verwijderen", + "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.", + "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." + } + }, + "edit_profile_failure": { + "title": "Profiel bewerken mislukt", + "message": "Het profiel kan niet bewerkt worden. Probeer het opnieuw." + }, + "sign_out": { + "title": "Afmelden", + "message": "Weet u zeker dat u zich wilt afmelden?", + "confirm": "Afmelden" + }, + "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" + }, + "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?", + "delete": "Verwijderen" + }, + "clean_cache": { + "title": "Cache-geheugen Wissen", + "message": "Cache-geheugen (%s) succesvol gewist." + } + }, + "controls": { + "actions": { + "back": "Terug", + "next": "Volgende", + "previous": "Vorige", + "open": "Open", + "add": "Toevoegen", + "remove": "Verwijderen", + "edit": "Bewerken", + "save": "Opslaan", + "ok": "Oké", + "done": "Klaar", + "confirm": "Bevestigen", + "continue": "Doorgaan", + "cancel": "Annuleren", + "discard": "Weggooien", + "try_again": "Probeer Opnieuw", + "take_photo": "Foto Maken", + "save_photo": "Foto Opslaan", + "copy_photo": "Foto kopiëren", + "sign_in": "Aanmelden", + "sign_up": "Registreren", + "see_more": "Meer", + "preview": "Voorvertoning", + "share": "Delen", + "share_user": "Delen %s", + "share_post": "Bericht Delen", + "open_in_safari": "Open in Safari", + "find_people": "Zoek mensen om te volgen", + "manually_search": "Handmatig zoeken", + "skip": "Overslaan", + "reply": "Reageren", + "report_user": "Rapporteer %s", + "block_domain": "Blokkeer %s", + "unblock_domain": "Deblokkeer %s", + "settings": "Instellingen", + "delete": "Verwijderen" + }, + "tabs": { + "home": "Start", + "search": "Zoeken", + "notification": "Melding", + "profile": "Profiel" + }, + "keyboard": { + "common": { + "switch_to_tab": "Wisselen naar %s", + "compose_new_post": "Nieuw Bericht Opstellen", + "show_favorites": "Favorieten Weergeven", + "open_settings": "Open Instellingen" + }, + "timeline": { + "previous_status": "Vorig Bericht", + "next_status": "Volgend Bericht", + "open_status": "Open Bericht", + "open_author_profile": "Open Auteursprofiel", + "open_reblogger_profile": "Open Delersprofiel", + "reply_status": "Reageren", + "toggle_reblog": "Delen bij berichten omschakelen", + "toggle_favorite": "Favoriet Omschakelen bij Bericht", + "toggle_content_warning": "Inhoudswaarschuwing Omschakelen", + "preview_image": "Voorvertoning Afbeelding" + }, + "segmented_control": { + "previous_section": "Vorige Sectie", + "next_section": "Volgende Sectie" + } + }, + "status": { + "user_reblogged": "%s gedeeld", + "user_replied_to": "Reactie op %s", + "show_post": "Toon Bericht", + "show_user_profile": "Toon Gebruikersprofiel", + "content_warning": "Inhoudswaarschuwing", + "media_content_warning": "Tap hier om te tonen", + "poll": { + "vote": "Stemmen", + "closed": "Gesloten" + }, + "actions": { + "reply": "Reageren", + "reblog": "Delen", + "unreblog": "Delen ongedaan maken", + "favorite": "Toevoegen aan Favorieten", + "unfavorite": "Verwijderen uit Favorieten", + "menu": "Menu" + }, + "tag": { + "url": "URL", + "mention": "Vermelden", + "link": "Link", + "hashtag": "Hashtag", + "email": "Email", + "emoji": "Emoji" + } + }, + "friendship": { + "follow": "Volgen", + "following": "Gevolgd", + "request": "Verzoeken", + "pending": "In afwachting", + "block": "Blokkeren", + "block_user": "Blokkeer %s", + "block_domain": "Blokkeer %s", + "unblock": "Deblokkeer", + "unblock_user": "Deblokkeer %s", + "blocked": "Geblokkeerd", + "mute": "Negeren", + "mute_user": "Negeer %s", + "unmute": "Niet langer negeren", + "unmute_user": "%s niet langer negeren", + "muted": "Genegeerd", + "edit_info": "Bewerken" + }, + "timeline": { + "filtered": "Gefilterd", + "timestamp": { + "now": "Nu" + }, + "loader": { + "load_missing_posts": "Resterende berichten laden", + "loading_missing_posts": "Resterende berichten laden...", + "show_more_replies": "Toon meer reacties" + }, + "header": { + "no_status_found": "Geen Berichten Gevonden", + "blocking_warning": "U kunt het profiel van deze geblokkeerde gebruiker niet bekijken.\nUw profiel ziet er zo uit voor hen.", + "user_blocking_warning": "U kunt het profiel van %s niet bekijken zolang deze gebruiker geblokkeerd is.\nUw profiel ziet er zo uit voor hen.", + "blocked_warning": "U kunt het profiel van deze gebruiker niet bekijken zolang u geblokkeerd bent.", + "user_blocked_warning": "U kunt het profiel van %s niet bekijken zolang u geblokkeerd bent.", + "suspended_warning": "Deze gebruiker is geschorst.", + "user_suspended_warning": "%s's account is geschorst." + } + } + } + }, + "scene": { + "welcome": { + "slogan": "Sociale media terug in uw handen." + }, + "server_picker": { + "title": "Kies een server, welke dan ook.", + "button": { + "category": { + "all": "Alles", + "all_accessiblity_description": "Categorie: Alles", + "academia": "academisch", + "activism": "activisme", + "food": "eten", + "furry": "furry", + "games": "spellen", + "general": "algemeen", + "journalism": "journalistiek", + "lgbt": "lgbt", + "regional": "regionaal", + "art": "kunst", + "music": "muziek", + "tech": "technologie" + }, + "see_less": "Minder Weergeven", + "see_more": "Meer Weergeven" + }, + "label": { + "language": "TAAL", + "users": "GEBRUIKERS", + "category": "CATEGORIE" + }, + "input": { + "placeholder": "Zoek uw server of sluit u bij een nieuwe server aan..." + }, + "empty_state": { + "finding_servers": "Beschikbare servers zoeken...", + "bad_network": "Er is een fout opgetreden bij het laden van de gegevens. Controleer uw internetverbinding.", + "no_results": "Geen resultaten" + } + }, + "register": { + "title": "Vertel ons over uzelf.", + "input": { + "avatar": { + "delete": "Verwijderen" + }, + "username": { + "placeholder": "gebruikersnaam", + "duplicate_prompt": "Deze gebruikersnaam is al in gebruik." + }, + "display_name": { + "placeholder": "weergavenaam" + }, + "email": { + "placeholder": "email" + }, + "password": { + "placeholder": "wachtwoord", + "hint": "Uw wachtwoord moet ten minste acht tekens bevatten" + }, + "invite": { + "registration_user_invite_request": "Waarom wil u zich hier registreren?" + } + }, + "error": { + "item": { + "username": "Gebruikersnaam", + "email": "Email", + "password": "Wachtwoord", + "agreement": "Overeenkomst", + "locale": "Taal", + "reason": "Reden" + }, + "reason": { + "blocked": "%s gebruikt een niet-toegestane emailprovider", + "unreachable": "%s lijkt niet te bestaan", + "taken": "%s is reeds in gebruik", + "reserved": "%s is een gereserveerd woord", + "accepted": "%s moet geaccepteerd worden", + "blank": "%s is vereist", + "invalid": "%s is ongeldig", + "too_long": "%s is te lang", + "too_short": "%s is te kort", + "inclusion": "%s is een niet-ondersteunde waarde" + }, + "special": { + "username_invalid": "Een gebruikersnaam mag alleen alfanumerieke karakters en lage streepjes bevatten", + "username_too_long": "De gebruikersnaam is te lang (het kan maximaal 30 karakters bevatten)", + "email_invalid": "Dit is geen geldig emailadres", + "password_too_short": "Het wachtwoord is te kort (het moet ten minste 8 tekens bevatten)" + } + } + }, + "server_rules": { + "title": "Enkele basisregels.", + "subtitle": "Deze regels zijn ingesteld door de beheerders van %s.", + "prompt": "Als u verder gaat dan gaat u akkoord met de servicevoorwaarden en privacybeleid van %s.", + "terms_of_service": "servicevoorwaarden", + "privacy_policy": "privacybeleid", + "button": { + "confirm": "Ik Ga Akkoord" + } + }, + "confirm_email": { + "title": "Nog één ding.", + "subtitle": "We hebben een e-mail gestuurd naar %s,\nklik op de link om uw account te bevestigen.", + "button": { + "open_email_app": "Email Openen", + "dont_receive_email": "Ik heb geen email ontvangen" + }, + "dont_receive_email": { + "title": "Controleer uw emailadres", + "description": "Controleer of uw emailadres correct is en of the email in de ongewenste email filter terecht is gekomen.", + "resend_email": "Email Opnieuw Versturen" + }, + "open_email_app": { + "title": "Ga naar uw inbox.", + "description": "We hebben u een e-mail gestuurd. Controleer ook uw de ongewenste email filter.", + "mail": "Mail", + "open_email_client": "Open Email Applicatie" + } + }, + "home_timeline": { + "title": "Start", + "navigation_bar_state": { + "offline": "Offline", + "new_posts": "Bekijk nieuwe berichten", + "published": "Gepubliceerd!", + "Publishing": "Bericht publiceren..." + } + }, + "suggestion_account": { + "title": "Zoek Mensen om te Volgen", + "follow_explain": "Wanneer u iemand volgt, ziet u hun berichten op de startpagina." + }, + "compose": { + "title": { + "new_post": "Nieuw Bericht", + "new_reply": "Nieuwe Reactie" + }, + "media_selection": { + "camera": "Foto Maken", + "photo_library": "Fotobibliotheek", + "browse": "Bladeren" + }, + "content_input_placeholder": "Schrijf of plak wat in je hoofd rondzweeft", + "compose_action": "Publiceren", + "replying_to_user": "reageren op %s", + "attachment": { + "photo": "foto", + "video": "video", + "attachment_broken": "Deze %s is corrupt en kan niet geüpload worden naar Mastodon.", + "description_photo": "Omschrijf de foto voor mensen met een visuele beperking...", + "description_video": "Omschrijf de video voor mensen met een visuele beperking..." + }, + "poll": { + "duration_time": "Duur: %s", + "thirty_minutes": "30 minuten", + "one_hour": "1 Uur", + "six_hours": "6 Uur", + "one_day": "1 Dag", + "three_days": "3 Dagen", + "seven_days": "7 Dagen", + "option_number": "Optie %ld" + }, + "content_warning": { + "placeholder": "Schrijf hier een nauwkeurige waarschuwing..." + }, + "visibility": { + "public": "Openbaar", + "unlisted": "Niet-vermeld", + "private": "Alleen volgers", + "direct": "Alleen vermelde gebruikers" + }, + "auto_complete": { + "space_to_add": "Spaties toe te voegen" + }, + "accessibility": { + "append_attachment": "Bijlage Toevoegen", + "append_poll": "Peiling Toevoegen", + "remove_poll": "Peiling verwijderen", + "custom_emoji_picker": "Eigen Emojikiezer", + "enable_content_warning": "Inhoudswaarschuwing inschakelen", + "disable_content_warning": "Inhoudswaarschuwing Uitschakelen", + "post_visibility_menu": "Berichtzichtbaarheidsmenu" + }, + "keyboard": { + "discard_post": "Bericht Verwijderen", + "publish_post": "Bericht Publiceren", + "toggle_poll": "Peiling omschakelen", + "toggle_content_warning": "Inhoudswaarschuwing Omschakelen", + "append_attachment_entry": "Bijlage Toevoegen - %s", + "select_visibility_entry": "Zichtbaarheid Selecteren - %s" + } + }, + "profile": { + "dashboard": { + "posts": "berichten", + "following": "volgend", + "followers": "volgers" + }, + "fields": { + "add_row": "Rij Toevoegen", + "placeholder": { + "label": "Etiket", + "content": "Inhoud" + } + }, + "segmented_control": { + "posts": "Berichten", + "replies": "Reacties", + "media": "Media" + }, + "relationship_action_alert": { + "confirm_unmute_user": { + "title": "Account Negeren", + "message": "Bevestig om %s te negeren" + }, + "confirm_unblock_usre": { + "title": "Account niet langer negeren", + "message": "Bevestig om %s te deblokkeren" + } + } + }, + "search": { + "title": "Zoeken", + "search_bar": { + "placeholder": "Zoek hashtags en gebruikers", + "cancel": "Annuleren" + }, + "recommend": { + "button_text": "Alles weergeven", + "hash_tag": { + "title": "Trending op Mastodon", + "description": "Hashtags die behoorlijk wat aandacht krijgen", + "people_talking": "%s gebruikers praten hierover" + }, + "accounts": { + "title": "Interessante accounts voor u", + "description": "Misschien dat u geïnteresseerd bent in deze accounts", + "follow": "Volgen" + } + }, + "searching": { + "segment": { + "all": "Alles", + "people": "Gebruikers", + "hashtags": "Hashtags", + "posts": "Berichten" + }, + "empty_state": { + "no_results": "Geen resultaten" + }, + "recent_search": "Recente zoekopdrachten", + "clear": "Wissen" + } + }, + "favorite": { + "title": "Uw favorieten" + }, + "notification": { + "title": { + "Everything": "Alles", + "Mentions": "Vermeldingen" + }, + "action": { + "follow": "volgt u", + "favourite": "heeft uw bericht als favoriet toegevoegd", + "reblog": "deelde uw bericht", + "poll": "Uw poll is geëindigd", + "mention": "vermeldde u", + "follow_request": "heeft gevraagd om u te volgen" + }, + "keyobard": { + "show_everything": "Alles weergeven", + "show_mentions": "Vermeldingen weergeven" + } + }, + "thread": { + "back_title": "Bericht", + "title": "Bericht van %s" + }, + "settings": { + "title": "Instellingen", + "section": { + "appearance": { + "title": "Uiterlijk", + "automatic": "Automatisch", + "light": "Altijd Licht", + "dark": "Altijd Donker" + }, + "notifications": { + "title": "Meldingen", + "favorites": "Mijn bericht als favoriet toevoegt", + "follows": "Mij volgt", + "boosts": "Mijn bericht deelt", + "mentions": "Mij vermeldt", + "trigger": { + "anyone": "iemand", + "follower": "een volger", + "follow": "iemand die ik volg", + "noone": "niemand", + "title": "Stuur mij een melding wanneer" + } + }, + "preference": { + "title": "Instellingen", + "true_black_dark_mode": "Echt zwarte donker uiterlijk", + "disable_avatar_animation": "Geanimeerde avatars uitschakelen", + "disable_emoji_animation": "Geanimeerde emojis uitschakelen", + "using_default_browser": "Gebruik de standaard browser om links te openen" + }, + "boring_zone": { + "title": "De Saaie Instellingen", + "account_settings": "Accountinstellingen", + "terms": "Servicevoorwaarden", + "privacy": "Privacybeleid" + }, + "spicy_zone": { + "title": "De Gevaarlijke Instellingen", + "clear": "Mediacache wissen", + "signout": "Afmelden" + } + }, + "footer": { + "mastodon_description": "Mastodon is vrije software. Je kunt problemen melden op GitHub via %s (%s)" + }, + "keyboard": { + "close_settings_window": "Instellingsvenster Sluiten" + } + }, + "report": { + "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?", + "send": "Stuur rapport", + "skip_to_send": "Verstuur zonder opmerkingen", + "text_placeholder": "Schrijf of plak aanvullende opmerkingen" + }, + "preview": { + "keyboard": { + "close_preview": "Voorbeeldweergave Sluiten", + "show_next": "Volgende", + "show_previous": "Vorige" + } + } + } +} \ 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 new file mode 100644 index 000000000..0a1ed1510 --- /dev/null +++ b/Localization/StringsConvertor/input/nl_NL/ios-infoPlist.json @@ -0,0 +1,6 @@ +{ + "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" +} diff --git a/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict b/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict index 33e100fae..42c07cec9 100644 --- a/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/pt_BR/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %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 + + diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json index 7b5e271e4..3d99c77da 100644 --- a/Localization/StringsConvertor/input/pt_BR/app.json +++ b/Localization/StringsConvertor/input/pt_BR/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_expired": "The poll has expired" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Discard Draft", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/pt_PT/Localizable.stringsdict b/Localization/StringsConvertor/input/pt_PT/Localizable.stringsdict index 33e100fae..42c07cec9 100644 --- a/Localization/StringsConvertor/input/pt_PT/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/pt_PT/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %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 + + diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json index 7b5e271e4..3d99c77da 100644 --- a/Localization/StringsConvertor/input/pt_PT/app.json +++ b/Localization/StringsConvertor/input/pt_PT/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_expired": "The poll has expired" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Discard Draft", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/ro_RO/Localizable.stringsdict b/Localization/StringsConvertor/input/ro_RO/Localizable.stringsdict index 0948a4c2e..c263567d2 100644 --- a/Localization/StringsConvertor/input/ro_RO/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ro_RO/Localizable.stringsdict @@ -2,6 +2,42 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + few + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + few + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -20,6 +56,24 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + few + %ld posts + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -110,5 +164,149 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + few + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + few + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + few + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + few + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + few + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + few + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + few + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + few + %ld seconds left + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json index 5afb5f55e..b63492065 100644 --- a/Localization/StringsConvertor/input/ro_RO/app.json +++ b/Localization/StringsConvertor/input/ro_RO/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Eșec la vot", - "poll_expired": "Sondajul a expirat" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Șterge Schită", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -187,11 +185,6 @@ "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", "suspended_warning": "This user has been suspended.", "user_suspended_warning": "%s’s account has been suspended." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Localization/StringsConvertor/input/ru_RU/Localizable.stringsdict b/Localization/StringsConvertor/input/ru_RU/Localizable.stringsdict index bce5a6fe3..0b48ac969 100644 --- a/Localization/StringsConvertor/input/ru_RU/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ru_RU/Localizable.stringsdict @@ -2,6 +2,46 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + few + %ld characters + many + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + few + %ld characters + many + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -22,6 +62,26 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + few + %ld posts + many + %ld posts + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -122,5 +182,165 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + few + %ld following + many + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + few + %ld followers + many + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + few + %ld years left + many + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + few + %ld months left + many + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + few + %ld days left + many + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + few + %ld hours left + many + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + few + %ld minutes left + many + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + few + %ld seconds left + many + %ld seconds left + other + %ld seconds left + + diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index 3d11d1680..ce96e80d7 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Не удалось проголосовать", - "poll_expired": "Этот опрос завершён" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Удалить черновик", @@ -105,48 +105,47 @@ "open_settings": "Открыть настройки" }, "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": "Прошлый пост", + "next_status": "Следующий пост", + "open_status": "Открыть пост", + "open_author_profile": "Открыть профиль автора", + "open_reblogger_profile": "Открыть профиль продвинувшего", + "reply_status": "Ответить на пост", + "toggle_reblog": "Продвинуть или убрать продвижение", + "toggle_favorite": "Добавить или убрать из избранного", + "toggle_content_warning": "Раскрыть или спрятать содержимое", + "preview_image": "Предпросмотр изображения" }, "segmented_control": { - "previous_section": "Previous Section", - "next_section": "Next Section" + "previous_section": "Предыдущий раздел", + "next_section": "Следующий раздел" } }, "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", + "user_reblogged": "%s продвинул(а)", + "user_replied_to": "Ответил(а) %s", + "show_post": "Показать пост", + "show_user_profile": "Показать профиль пользователя", + "content_warning": "Предупреждение о содержании", + "media_content_warning": "Нажмите в любом месте, чтобы показать", "poll": { - "vote": "Vote", - "time_left": "%s left", - "closed": "Closed" + "vote": "Проголосовать", + "closed": "Завершён" }, "actions": { - "reply": "Reply", - "reblog": "Reblog", - "unreblog": "Undo reblog", - "favorite": "Favorite", - "unfavorite": "Unfavorite", - "menu": "Menu" + "reply": "Ответить", + "reblog": "Продвинуть", + "unreblog": "Убрать продвижение", + "favorite": "Добавить в избранное", + "unfavorite": "Убрать из избранного", + "menu": "Меню" }, "tag": { - "url": "URL", - "mention": "Mention", - "link": "Link", - "hashtag": "Hashtag", - "email": "Email", + "url": "Ссылка", + "mention": "Упоминание", + "link": "Ссылка", + "hashtag": "Хэштег", + "email": "E-mail", "emoji": "Эмодзи" } }, @@ -171,8 +170,7 @@ "timeline": { "filtered": "Отфильтровано", "timestamp": { - "now": "Только что", - "time_ago": "%s назад" + "now": "Только что" }, "loader": { "load_missing_posts": "Загрузить недостающие посты", @@ -187,11 +185,6 @@ "user_blocked_warning": "Вы не можете просматривать\nпрофиль %s\nпока он(а) не разблокирует вас.", "suspended_warning": "Этот пользователь был заморожен.", "user_suspended_warning": "Учётная запись %s заморожена." - }, - "accessibility": { - "count_replies": "%s ответов", - "count_reblogs": "%s репостов", - "count_favorites": "%s добавил(и) в избранное" } } } @@ -220,96 +213,96 @@ "tech": "технологии" }, "see_less": "Показать меньше", - "see_more": "See More" + "see_more": "Ещё" }, "label": { - "language": "LANGUAGE", - "users": "USERS", - "category": "CATEGORY" + "language": "ЯЗЫК", + "users": "ПОЛЬЗОВАТЕЛИ", + "category": "КАТЕГОРИЯ" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Найдите сервер или присоединитесь к своему..." }, "empty_state": { - "finding_servers": "Finding available servers...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", - "no_results": "No results" + "finding_servers": "Ищем доступные сервера...", + "bad_network": "Что-то пошло не так при загрузке данных. Проверьте подключение к интернету.", + "no_results": "Нет результатов" } }, "register": { - "title": "Tell us about you.", + "title": "Расскажите нам о себе.", "input": { "avatar": { - "delete": "Delete" + "delete": "Удалить" }, "username": { - "placeholder": "username", - "duplicate_prompt": "This username is taken." + "placeholder": "имя пользователя", + "duplicate_prompt": "Это имя пользователя занято." }, "display_name": { - "placeholder": "display name" + "placeholder": "отображаемое имя" }, "email": { - "placeholder": "email" + "placeholder": "e-mail" }, "password": { - "placeholder": "password", - "hint": "Your password needs at least eight characters" + "placeholder": "пароль", + "hint": "Пароль должен содержать не менее восьми символов" }, "invite": { - "registration_user_invite_request": "Why do you want to join?" + "registration_user_invite_request": "Почему вы хотите присоединиться?" } }, "error": { "item": { - "username": "Username", - "email": "Email", - "password": "Password", - "agreement": "Agreement", - "locale": "Locale", - "reason": "Reason" + "username": "Имя пользователя", + "email": "E-mail", + "password": "Пароль", + "agreement": "Соглашение", + "locale": "Язык", + "reason": "Причина" }, "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 содержит запрещённый e-mail сервис", + "unreachable": "%s не существует", + "taken": "%s уже используется", + "reserved": "%s является зарезервированным ключевым словом", + "accepted": "%s должно быть принято", + "blank": "Поле «%s» обязательно", + "invalid": "Недопустимое значение поля «%s»", + "too_long": "%s слишком длинный", + "too_short": "%s слишком короткий", + "inclusion": "Неподдерживаемое значение «%s»" }, "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": "Имя пользователя может содержать только латинские буквы, цифры и подчёркивания", + "username_too_long": "Слишком длинное имя пользователя (не может быть длиннее 30 символов)", + "email_invalid": "Недопустимый e-mail адрес", + "password_too_short": "Пароль слишком короткий (должен содержать не менее 8 символов)" } } }, "server_rules": { - "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", - "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", - "terms_of_service": "terms of service", - "privacy_policy": "privacy policy", + "title": "Несколько основных правил.", + "subtitle": "Эти правила установлены администраторами %s.", + "prompt": "Продолжая, вы соглашаетесь с условиям использования и политикой конфиденциальности %s.", + "terms_of_service": "условия использования", + "privacy_policy": "политика конфиденциальности", "button": { - "confirm": "I Agree" + "confirm": "Принимаю" } }, "confirm_email": { - "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "title": "И ещё кое-что.", + "subtitle": "Мы только что отправили письмо на\n%s.\nНажмите на ссылку в нём, чтобы\nподтвердить свою учётную запись.", "button": { - "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "open_email_app": "Открыть приложение почты", + "dont_receive_email": "Я не получил письма" }, "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": "Проверьте свой e-mail адрес", + "description": "Проверьте, правильно ли указан ваш e-mail адрес, а также папку «спам», если ещё не сделали этого.", + "resend_email": "Отправить ещё раз" }, "open_email_app": { "title": "Проверьте вашу почту.", @@ -331,9 +324,6 @@ "title": "Подпишитесь на людей", "follow_explain": "Посты людей, на которых вы подписались, будут видны на главной странице." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "Новый пост", @@ -341,99 +331,92 @@ }, "media_selection": { "camera": "Сделать фото", - "photo_library": "Photo Library", + "photo_library": "Медиатека", "browse": "Выбрать" }, - "content_input_placeholder": "Type or paste what’s on your mind", + "content_input_placeholder": "Напишите то, о чём думаете", "compose_action": "Опубликовать", - "replying_to_user": "replying to %s", + "replying_to_user": "ответ %s", "attachment": { - "photo": "photo", - "video": "video", - "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", - "description_photo": "Describe the photo for the visually-impaired...", - "description_video": "Describe the video for the visually-impaired..." + "photo": "изображение", + "video": "видео", + "attachment_broken": "Это %s повреждено и не может\nбыть отправлено в Mastodon.", + "description_photo": "Опишите фото для людей с нарушениями зрения...", + "description_video": "Опишите видео для людей с нарушениями зрения..." }, "poll": { - "duration_time": "Duration: %s", - "thirty_minutes": "30 minutes", - "one_hour": "1 Hour", - "six_hours": "6 Hours", - "one_day": "1 Day", - "three_days": "3 Days", - "seven_days": "7 Days", - "option_number": "Option %ld" + "duration_time": "Продолжительность: %s", + "thirty_minutes": "30 минут", + "one_hour": "1 час", + "six_hours": "6 часов", + "one_day": "1 день", + "three_days": "3 дня", + "seven_days": "7 дней", + "option_number": "Вариант %ld" }, "content_warning": { - "placeholder": "Write an accurate warning here..." + "placeholder": "Напишите предупреждение здесь..." }, "visibility": { - "public": "Public", - "unlisted": "Unlisted", - "private": "Followers only", - "direct": "Only people I mention" + "public": "Публичный", + "unlisted": "Скрытый", + "private": "Для подписчиков", + "direct": "Только для упомянутых людей" }, "auto_complete": { "space_to_add": "Space to add" }, "accessibility": { - "append_attachment": "Add Attachment", - "append_poll": "Add Poll", - "remove_poll": "Remove Poll", - "custom_emoji_picker": "Custom Emoji Picker", - "enable_content_warning": "Enable Content Warning", - "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "append_attachment": "Прикрепить файл", + "append_poll": "Добавить опрос", + "remove_poll": "Убрать опрос", + "custom_emoji_picker": "Меню пользовательских эмодзи", + "enable_content_warning": "Добавить предупреждение о содержании", + "disable_content_warning": "Убрать предупреждение о содержании", + "post_visibility_menu": "Меню видимости поста" }, "keyboard": { - "discard_post": "Discard Post", - "publish_post": "Publish Post", + "discard_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" + "append_attachment_entry": "Прикрепить файл — %s", + "select_visibility_entry": "Выбрать видимость — %s" } }, "profile": { "dashboard": { - "posts": "posts", - "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "posts": "посты", + "following": "подписки", + "followers": "подписчики" }, "fields": { - "add_row": "Add Row", + "add_row": "Добавить строку", "placeholder": { - "label": "Label", - "content": "Content" + "label": "Ярлык", + "content": "Содержимое" } }, "segmented_control": { - "posts": "Posts", - "replies": "Replies", - "media": "Media" + "posts": "Посты", + "replies": "Ответы", + "media": "Медиа" }, "relationship_action_alert": { "confirm_unmute_user": { - "title": "Unmute Account", - "message": "Confirm to unmute %s" + "title": "Убрать из игнорируемых", + "message": "Убрать %s из игнорируемых?" }, "confirm_unblock_usre": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Разблокировать", + "message": "Убрать %s из списка блокировки?" } } }, "search": { - "title": "Search", + "title": "Поиск", "search_bar": { - "placeholder": "Search hashtags and users", + "placeholder": "Поиск хэштегов и пользователей", "cancel": "Cancel" }, "recommend": { @@ -454,96 +437,93 @@ "all": "All", "people": "People", "hashtags": "Hashtags", - "posts": "Posts" + "posts": "Посты" }, "empty_state": { - "no_results": "No results" + "no_results": "Нет результатов" }, - "recent_search": "Recent searches", - "clear": "Clear" + "recent_search": "Последние запросы", + "clear": "Очистить" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { - "title": "Your Favorites" + "title": "Ваше избранное" }, "notification": { "title": { - "Everything": "Everything", - "Mentions": "Mentions" + "Everything": "Все", + "Mentions": "Упоминания" }, "action": { - "follow": "followed you", - "favourite": "favorited your post", - "reblog": "reblogged your post", - "poll": "Your poll has ended", - "mention": "mentioned you", - "follow_request": "requested to follow you" + "follow": "подписался (-ась) на вас", + "favourite": "добавил(а) ваш пост в избранное", + "reblog": "продвинул(а) ваш пост", + "poll": "Ваш опрос завершился", + "mention": "упомянул(а) вас", + "follow_request": "отправил(а) запрос на подписку" }, "keyobard": { - "show_everything": "Show Everything", - "show_mentions": "Show Mentions" + "show_everything": "Показать все", + "show_mentions": "Показать упоминания" } }, "thread": { - "back_title": "Post", + "back_title": "Пост", "title": "Post from %s" }, "settings": { - "title": "Settings", + "title": "Настройки", "section": { "appearance": { - "title": "Appearance", - "automatic": "Automatic", - "light": "Always Light", - "dark": "Always Dark" + "title": "Внешний вид", + "automatic": "Автоматически", + "light": "Светлая тема", + "dark": "Тёмная тема" }, "notifications": { - "title": "Notifications", - "favorites": "Favorites my post", - "follows": "Follows me", - "boosts": "Reblogs my post", - "mentions": "Mentions me", + "title": "Уведомления", + "favorites": "Добавляет мой пост в избранное", + "follows": "Подписался на меня", + "boosts": "Продвигает мой пост", + "mentions": "Упоминает меня", "trigger": { - "anyone": "anyone", - "follower": "a follower", - "follow": "anyone I follow", - "noone": "no one", - "title": "Notify me when" + "anyone": "кто угодно", + "follower": "мой подписчик", + "follow": "любой, на кого я подписан(а)", + "noone": "никто", + "title": "Уведомлять меня, когда" } }, "preference": { - "title": "Preferences", - "true_black_dark_mode": "True black dark mode", - "disable_avatar_animation": "Disable animated avatars", - "disable_emoji_animation": "Disable animated emojis", - "using_default_browser": "Use default browser to open links" + "title": "Предпочтения", + "true_black_dark_mode": "Полноценно чёрный режим", + "disable_avatar_animation": "Отключить анимацию аватарок", + "disable_emoji_animation": "Отключить анимацию эмодзи", + "using_default_browser": "Использовать браузер по умолчанию для открытия ссылок" }, "boring_zone": { - "title": "The Boring Zone", - "account_settings": "Account Settings", - "terms": "Terms of Service", - "privacy": "Privacy Policy" + "title": "Зона скукотищи", + "account_settings": "Настройки аккаунта", + "terms": "Условия использования", + "privacy": "Политика конфиденциальности" }, "spicy_zone": { - "title": "The Spicy Zone", - "clear": "Clear Media Cache", - "signout": "Sign Out" + "title": "Пикантная зона", + "clear": "Очистить кэш медиа", + "signout": "Выйти из учётной записи" } }, "footer": { - "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + "mastodon_description": "Mastodon — проект с открытым исходным кодом. Сообщить о проблемах можно на GitHub по адресу %s (%s)" }, "keyboard": { - "close_settings_window": "Close Settings Window" + "close_settings_window": "Закрыть окно настроек" } }, "report": { - "title": "Report %s", - "step1": "Step 1 of 2", - "step2": "Step 2 of 2", + "title": "Пожаловаться на %s", + "step1": "Шаг 1 из 2", + "step2": "Шаг 2 из 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?", "send": "Send Report", diff --git a/Localization/StringsConvertor/input/zh_CN/Localizable.stringsdict b/Localization/StringsConvertor/input/zh_CN/Localizable.stringsdict index e94476863..bb8064914 100644 --- a/Localization/StringsConvertor/input/zh_CN/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/zh_CN/Localizable.stringsdict @@ -2,6 +2,34 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + 输入字符限制超出 %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个字符 + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + 输入字符限制剩余 %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个字符 + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -13,7 +41,21 @@ NSStringFormatValueTypeKey ld other - 帖子 + 个帖子 + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个帖子 plural.count.favorite @@ -86,5 +128,117 @@ %ld 人正在讨论 + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 人正在关注 + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个关注者 + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 年 + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 个月 + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 天 + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 小时 + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 分钟 + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 秒 + + diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index 2ab9c681d..7cbf927b5 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "投票失败", - "poll_expired": "此投票已过期" + "poll_ended": "投票已结束" }, "discard_post_content": { "title": "丢弃草案", @@ -130,7 +130,6 @@ "media_content_warning": "点击任意位置显示", "poll": { "vote": "投票", - "time_left": "剩余 %s", "closed": "已关闭" }, "actions": { @@ -166,13 +165,12 @@ "unmute": "取消静音", "unmute_user": "取消静音 %s", "muted": "已静音", - "edit_info": "编辑资料" + "edit_info": "编辑" }, "timeline": { "filtered": "已过滤", "timestamp": { - "now": "现在", - "time_ago": "%s" + "now": "现在" }, "loader": { "load_missing_posts": "加载帖子", @@ -187,11 +185,6 @@ "user_blocked_warning": "您不能查看 %s 的个人资料\n直到他们解除屏蔽。", "suspended_warning": "此用户已被封禁。", "user_suspended_warning": "%s 已被封禁。" - }, - "accessibility": { - "count_replies": "%s 条回复", - "count_reblogs": "%s 条转发", - "count_favorites": "%s 个喜欢" } } } @@ -331,9 +324,6 @@ "title": "查看推荐关注的用户", "follow_explain": "当你关注某个人时,你将会在主页看到他们的帖子。" }, - "public_timeline": { - "title": "公开" - }, "compose": { "title": { "new_post": "新帖子", @@ -383,9 +373,7 @@ "custom_emoji_picker": "自定义表情选择器", "enable_content_warning": "启用内容警告", "disable_content_warning": "关闭内容警告", - "post_visibility_menu": "帖子可见性", - "input_limit_remains_count": "输入字符限制剩余 %ld", - "input_limit_exceeds_count": "输入字符限制超出 %ld" + "post_visibility_menu": "帖子可见性" }, "keyboard": { "discard_post": "丢弃帖子", @@ -400,12 +388,7 @@ "dashboard": { "posts": "帖子", "following": "正在关注", - "followers": "关注者", - "accessibility": { - "count_posts": "%ld 个帖子", - "count_following": "%ld 正在关注", - "count_followers": "%ld 个关注者" - } + "followers": "关注者" }, "fields": { "add_row": "添加", @@ -463,9 +446,6 @@ "clear": "清除" } }, - "hashtag": { - "prompt": "%s 人正在讨论" - }, "favorite": { "title": "你的喜欢" }, diff --git a/Localization/StringsConvertor/input/zh_TW/Localizable.stringsdict b/Localization/StringsConvertor/input/zh_TW/Localizable.stringsdict new file mode 100644 index 000000000..82230ebcd --- /dev/null +++ b/Localization/StringsConvertor/input/zh_TW/Localizable.stringsdict @@ -0,0 +1,244 @@ + + + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + posts + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld posts + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld favorites + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld reblogs + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld votes + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld voters + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld people talking + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld seconds left + + + + diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json new file mode 100644 index 000000000..3d99c77da --- /dev/null +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -0,0 +1,541 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Please try again.", + "please_try_again_later": "Please try again later." + }, + "sign_up_failure": { + "title": "Sign Up Failure" + }, + "server_error": { + "title": "Server Error" + }, + "vote_failure": { + "title": "Vote Failure", + "poll_ended": "The poll has ended" + }, + "discard_post_content": { + "title": "Discard Draft", + "message": "Confirm to discard composed post content." + }, + "publish_post_failure": { + "title": "Publish Failure", + "message": "Failed to publish the post.\nPlease check your internet connection.", + "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." + } + }, + "edit_profile_failure": { + "title": "Edit Profile Error", + "message": "Cannot edit profile. Please try again." + }, + "sign_out": { + "title": "Sign Out", + "message": "Are you sure you want to sign out?", + "confirm": "Sign Out" + }, + "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" + }, + "save_photo_failure": { + "title": "Save Photo Failure", + "message": "Please enable the photo library access permission to save the photo." + }, + "delete_post": { + "title": "Are you sure you want to delete this post?", + "delete": "Delete" + }, + "clean_cache": { + "title": "Clean Cache", + "message": "Successfully cleaned %s cache." + } + }, + "controls": { + "actions": { + "back": "Back", + "next": "Next", + "previous": "Previous", + "open": "Open", + "add": "Add", + "remove": "Remove", + "edit": "Edit", + "save": "Save", + "ok": "OK", + "done": "Done", + "confirm": "Confirm", + "continue": "Continue", + "cancel": "Cancel", + "discard": "Discard", + "try_again": "Try Again", + "take_photo": "Take Photo", + "save_photo": "Save Photo", + "copy_photo": "Copy Photo", + "sign_in": "Sign In", + "sign_up": "Sign Up", + "see_more": "See More", + "preview": "Preview", + "share": "Share", + "share_user": "Share %s", + "share_post": "Share Post", + "open_in_safari": "Open in Safari", + "find_people": "Find people to follow", + "manually_search": "Manually search instead", + "skip": "Skip", + "reply": "Reply", + "report_user": "Report %s", + "block_domain": "Block %s", + "unblock_domain": "Unblock %s", + "settings": "Settings", + "delete": "Delete" + }, + "tabs": { + "home": "Home", + "search": "Search", + "notification": "Notification", + "profile": "Profile" + }, + "keyboard": { + "common": { + "switch_to_tab": "Switch to %s", + "compose_new_post": "Compose New Post", + "show_favorites": "Show Favorites", + "open_settings": "Open Settings" + }, + "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" + }, + "segmented_control": { + "previous_section": "Previous Section", + "next_section": "Next Section" + } + }, + "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", + "poll": { + "vote": "Vote", + "closed": "Closed" + }, + "actions": { + "reply": "Reply", + "reblog": "Reblog", + "unreblog": "Undo reblog", + "favorite": "Favorite", + "unfavorite": "Unfavorite", + "menu": "Menu" + }, + "tag": { + "url": "URL", + "mention": "Mention", + "link": "Link", + "hashtag": "Hashtag", + "email": "Email", + "emoji": "Emoji" + } + }, + "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\n until you unblock them.\nYour profile looks like this to them.", + "user_blocking_warning": "You can’t view %s’s profile\n until you unblock them.\nYour profile looks like this to them.", + "blocked_warning": "You can’t view this user’s profile\n until they unblock you.", + "user_blocked_warning": "You can’t view %s’s profile\n until 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." + }, + "server_picker": { + "title": "Pick a server,\nany server.", + "button": { + "category": { + "all": "All", + "all_accessiblity_description": "Category: All", + "academia": "academia", + "activism": "activism", + "food": "food", + "furry": "furry", + "games": "games", + "general": "general", + "journalism": "journalism", + "lgbt": "lgbt", + "regional": "regional", + "art": "art", + "music": "music", + "tech": "tech" + }, + "see_less": "See Less", + "see_more": "See More" + }, + "label": { + "language": "LANGUAGE", + "users": "USERS", + "category": "CATEGORY" + }, + "input": { + "placeholder": "Find a server or join your own..." + }, + "empty_state": { + "finding_servers": "Finding available servers...", + "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "no_results": "No results" + } + }, + "register": { + "title": "Tell us about you.", + "input": { + "avatar": { + "delete": "Delete" + }, + "username": { + "placeholder": "username", + "duplicate_prompt": "This username is taken." + }, + "display_name": { + "placeholder": "display name" + }, + "email": { + "placeholder": "email" + }, + "password": { + "placeholder": "password", + "hint": "Your password needs at least eight characters" + }, + "invite": { + "registration_user_invite_request": "Why do you want to join?" + } + }, + "error": { + "item": { + "username": "Username", + "email": "Email", + "password": "Password", + "agreement": "Agreement", + "locale": "Locale", + "reason": "Reason" + }, + "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" + }, + "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)" + } + } + }, + "server_rules": { + "title": "Some ground rules.", + "subtitle": "These rules are set by the admins of %s.", + "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": "We just sent an email to %s,\ntap the link to confirm your account.", + "button": { + "open_email_app": "Open Email App", + "dont_receive_email": "I never got an email" + }, + "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": "Unlisted", + "private": "Followers only", + "direct": "Only people I mention" + }, + "auto_complete": { + "space_to_add": "Space to add" + }, + "accessibility": { + "append_attachment": "Add Attachment", + "append_poll": "Add Poll", + "remove_poll": "Remove Poll", + "custom_emoji_picker": "Custom Emoji Picker", + "enable_content_warning": "Enable Content Warning", + "disable_content_warning": "Disable Content Warning", + "post_visibility_menu": "Post Visibility Menu" + }, + "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" + } + }, + "profile": { + "dashboard": { + "posts": "posts", + "following": "following", + "followers": "followers" + }, + "fields": { + "add_row": "Add Row", + "placeholder": { + "label": "Label", + "content": "Content" + } + }, + "segmented_control": { + "posts": "Posts", + "replies": "Replies", + "media": "Media" + }, + "relationship_action_alert": { + "confirm_unmute_user": { + "title": "Unmute Account", + "message": "Confirm to unmute %s" + }, + "confirm_unblock_usre": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" + } + } + }, + "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" + } + }, + "favorite": { + "title": "Your Favorites" + }, + "notification": { + "title": { + "Everything": "Everything", + "Mentions": "Mentions" + }, + "action": { + "follow": "followed you", + "favourite": "favorited your post", + "reblog": "reblogged your post", + "poll": "Your poll has ended", + "mention": "mentioned you", + "follow_request": "requested to follow you" + }, + "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" + }, + "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" + }, + "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 %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?", + "send": "Send Report", + "skip_to_send": "Send without comment", + "text_placeholder": "Type or paste additional comments" + }, + "preview": { + "keyboard": { + "close_preview": "Close Preview", + "show_next": "Show Next", + "show_previous": "Show Previous" + } + } + } +} \ No newline at end of file diff --git a/Localization/StringsConvertor/input/zh_TW/ios-infoPlist.json b/Localization/StringsConvertor/input/zh_TW/ios-infoPlist.json new file mode 100644 index 000000000..c6db73de0 --- /dev/null +++ b/Localization/StringsConvertor/input/zh_TW/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/app.json b/Localization/app.json index 7b5e271e4..d7ba2147e 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_expired": "The poll has expired" + "poll_ended": "The poll has ended" }, "discard_post_content": { "title": "Discard Draft", @@ -130,7 +130,6 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "time_left": "%s left", "closed": "Closed" }, "actions": { @@ -171,8 +170,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now", - "time_ago": "%s ago" + "now": "Now" }, "loader": { "load_missing_posts": "Load missing posts", @@ -181,17 +179,12 @@ }, "header": { "no_status_found": "No Post Found", - "blocking_warning": "You can’t view this user's profile\n until you unblock them.\nYour profile looks like this to them.", - "user_blocking_warning": "You can’t view %s’s profile\n until you unblock them.\nYour profile looks like this to them.", - "blocked_warning": "You can’t view this user’s profile\n until they unblock you.", - "user_blocked_warning": "You can’t view %s’s profile\n until they unblock you.", + "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." - }, - "accessibility": { - "count_replies": "%s replies", - "count_reblogs": "%s reblogs", - "count_favorites": "%s favorites" } } } @@ -331,9 +324,6 @@ "title": "Find People to Follow", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, - "public_timeline": { - "title": "Public" - }, "compose": { "title": { "new_post": "New Post", @@ -383,9 +373,7 @@ "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu", - "input_limit_remains_count": "Input limit remains %ld", - "input_limit_exceeds_count": "Input limit exceeds %ld" + "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { "discard_post": "Discard Post", @@ -400,12 +388,7 @@ "dashboard": { "posts": "posts", "following": "following", - "followers": "followers", - "accessibility": { - "count_posts": "%ld posts", - "count_following": "%ld following", - "count_followers": "%ld followers" - } + "followers": "followers" }, "fields": { "add_row": "Add Row", @@ -463,9 +446,6 @@ "clear": "Clear" } }, - "hashtag": { - "prompt": "%s people talking" - }, "favorite": { "title": "Your Favorites" }, diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 140157a01..5622470ef 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -1184,6 +1184,14 @@ DBA4B0E426BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "es-419"; path = "es-419.lproj/Localizable.stringsdict"; sourceTree = ""; }; DBA4B0E526BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/Localizable.strings"; sourceTree = ""; }; DBA4B0E626BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/InfoPlist.strings"; sourceTree = ""; }; + DBA4B0E826C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Intents.strings; sourceTree = ""; }; + DBA4B0E926C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = ""; }; + DBA4B0EA26C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; + DBA4B0EB26C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; + DBA4B0EC26C153B10077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Intents.strings; sourceTree = ""; }; + DBA4B0ED26C153B10077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = ""; }; + DBA4B0EE26C153B20077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; + DBA4B0EF26C153B20077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; DBA5E7A2263AD0A3004598BB /* PhotoLibraryService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoLibraryService.swift; sourceTree = ""; }; DBA5E7A4263BD28C004598BB /* ContextMenuImagePreviewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuImagePreviewViewModel.swift; sourceTree = ""; }; DBA5E7A8263BD3A4004598BB /* ContextMenuImagePreviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuImagePreviewViewController.swift; sourceTree = ""; }; @@ -3344,6 +3352,8 @@ fr, es, "es-419", + de, + nl, ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( @@ -4335,6 +4345,8 @@ DBA4B0DB26BD11130077136E /* fr */, DBA4B0DF26BD11C70077136E /* es */, DBA4B0E326BD11D10077136E /* es-419 */, + DBA4B0E826C153820077136E /* de */, + DBA4B0EC26C153B10077136E /* nl */, ); name = Intents.intentdefinition; sourceTree = ""; @@ -4350,6 +4362,8 @@ DBA4B0DE26BD11130077136E /* fr */, DBA4B0E226BD11C80077136E /* es */, DBA4B0E626BD11D10077136E /* es-419 */, + DBA4B0EB26C153820077136E /* de */, + DBA4B0EF26C153B20077136E /* nl */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4365,6 +4379,8 @@ DBA4B0DD26BD11130077136E /* fr */, DBA4B0E126BD11C80077136E /* es */, DBA4B0E526BD11D10077136E /* es-419 */, + DBA4B0EA26C153820077136E /* de */, + DBA4B0EE26C153B20077136E /* nl */, ); name = Localizable.strings; sourceTree = ""; @@ -4396,6 +4412,8 @@ DBA4B0DC26BD11130077136E /* fr */, DBA4B0E026BD11C70077136E /* es */, DBA4B0E426BD11D10077136E /* es-419 */, + DBA4B0E926C153820077136E /* de */, + DBA4B0ED26C153B10077136E /* nl */, ); name = Localizable.stringsdict; sourceTree = ""; @@ -4540,7 +4558,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4548,7 +4566,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4567,7 +4585,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4575,7 +4593,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4830,7 +4848,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4838,7 +4856,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4854,7 +4872,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4862,7 +4880,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4878,7 +4896,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4886,7 +4904,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4902,7 +4920,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4910,7 +4928,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4926,7 +4944,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4934,7 +4952,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4950,7 +4968,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4958,7 +4976,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4974,7 +4992,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4982,7 +5000,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4998,7 +5016,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5006,7 +5024,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -5088,7 +5106,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -5096,7 +5114,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -5202,7 +5220,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5210,7 +5228,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -5322,7 +5340,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -5330,7 +5348,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -5436,7 +5454,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5444,7 +5462,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -5490,7 +5508,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5498,7 +5516,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -5513,7 +5531,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 54; + CURRENT_PROJECT_VERSION = 56; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5521,7 +5539,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.4; + MARKETING_VERSION = 1.0.5; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 6faa9959a..aa31690df 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 30 + 33 CoreDataStack.xcscheme_^#shared#^_ @@ -17,17 +17,17 @@ Mastodon - ASDK.xcscheme_^#shared#^_ orderHint - 7 + 9 Mastodon - RTL.xcscheme_^#shared#^_ orderHint - 8 + 10 Mastodon - Release.xcscheme_^#shared#^_ orderHint - 6 + 8 Mastodon - ar.xcscheme_^#shared#^_ @@ -37,7 +37,12 @@ Mastodon - ca.xcscheme_^#shared#^_ orderHint - 29 + 31 + + Mastodon - de.xcscheme_^#shared#^_ + + orderHint + 6 Mastodon - en.xcscheme_^#shared#^_ @@ -64,10 +69,15 @@ orderHint 28 + Mastodon - nl.xcscheme_^#shared#^_ + + orderHint + 7 + Mastodon - zh_Hans.xcscheme_^#shared#^_ orderHint - 28 + 30 Mastodon.xcscheme_^#shared#^_ @@ -92,12 +102,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 9 + 11 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 31 + 35 SuppressBuildableAutocreation diff --git a/Mastodon/Diffiable/Item/ComposeStatusPollItem.swift b/Mastodon/Diffiable/Item/ComposeStatusPollItem.swift index 0b4abf233..2e45484c7 100644 --- a/Mastodon/Diffiable/Item/ComposeStatusPollItem.swift +++ b/Mastodon/Diffiable/Item/ComposeStatusPollItem.swift @@ -70,7 +70,7 @@ extension ComposeStatusPollItem { hasher.combine(id) } - enum ExpiresOption: Equatable, Hashable, CaseIterable { + enum ExpiresOption: String, Equatable, Hashable, CaseIterable { case thirtyMinutes case oneHour case sixHours diff --git a/Mastodon/Diffiable/Section/Search/RecommendAccountSection.swift b/Mastodon/Diffiable/Section/Search/RecommendAccountSection.swift index b894f818d..3d6cff19e 100644 --- a/Mastodon/Diffiable/Section/Search/RecommendAccountSection.swift +++ b/Mastodon/Diffiable/Section/Search/RecommendAccountSection.swift @@ -88,9 +88,7 @@ extension RecommendAccountSection { withURL: URL(string: user.header)!, placeholderImage: UIImage.placeholder(color: .systemFill), imageTransition: .crossDissolve(0.2) - ) { [weak cell] _ in - // guard let cell = cell else { return } - } + ) } static func configureFollowButton( diff --git a/Mastodon/Diffiable/Section/Status/NotificationSection.swift b/Mastodon/Diffiable/Section/Status/NotificationSection.swift index b0afd7002..79e312299 100644 --- a/Mastodon/Diffiable/Section/Status/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/Status/NotificationSection.swift @@ -79,13 +79,13 @@ extension NotificationSection { let createAt = notification.createAt let actionText = notification.notificationType.actionText cell.actionLabel.text = actionText - cell.timestampLabel.text = createAt.timeAgoSinceNow + cell.timestampLabel.text = createAt.localizedTimeAgoSinceNow AppContext.shared.timestampUpdatePublisher .receive(on: DispatchQueue.main) .sink { [weak cell] _ in guard let cell = cell else { return } cell.actionLabel.text = actionText - cell.timestampLabel.text = createAt.timeAgoSinceNow + cell.timestampLabel.text = createAt.localizedTimeAgoSinceNow } .store(in: &cell.disposeBag) diff --git a/Mastodon/Diffiable/Section/Status/StatusSection.swift b/Mastodon/Diffiable/Section/Status/StatusSection.swift index 0958ec73f..6ec997845 100644 --- a/Mastodon/Diffiable/Section/Status/StatusSection.swift +++ b/Mastodon/Diffiable/Section/Status/StatusSection.swift @@ -390,14 +390,14 @@ extension StatusSection { StatusSection.configureStatusViewAuthor(cell: cell, status: status) // set timestamp let createdAt = (status.reblog ?? status).createdAt - cell.statusView.dateLabel.text = createdAt.slowedTimeAgoSinceNow + cell.statusView.dateLabel.text = createdAt.localizedSlowedTimeAgoSinceNow cell.statusView.dateLabel.accessibilityValue = createdAt.timeAgoSinceNow AppContext.shared.timestampUpdatePublisher .receive(on: RunLoop.main) // will be paused when scrolling (on purpose) .sink { [weak cell] _ in guard let cell = cell else { return } - cell.statusView.dateLabel.text = createdAt.slowedTimeAgoSinceNow - cell.statusView.dateLabel.accessibilityLabel = createdAt.slowedTimeAgoSinceNow + cell.statusView.dateLabel.text = createdAt.localizedSlowedTimeAgoSinceNow + cell.statusView.dateLabel.accessibilityLabel = createdAt.localizedSlowedTimeAgoSinceNow } .store(in: &cell.disposeBag) // set content @@ -953,11 +953,9 @@ extension StatusSection { cell.statusView.pollCountdownSubscription = nil cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.closed } else if let expiresAt = poll.expiresAt { - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.timeLeft(expiresAt.shortTimeAgoSinceNow) + cell.statusView.pollCountdownLabel.text = expiresAt.localizedTimeLeft() cell.statusView.pollCountdownSubscription = AppContext.shared.timestampUpdatePublisher - .sink { _ in - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.timeLeft(expiresAt.shortTimeAgoSinceNow) - } + .sink { _ in cell.statusView.pollCountdownLabel.text = expiresAt.localizedTimeLeft() } } else { cell.statusView.pollCountdownSubscription = nil cell.statusView.pollCountdownLabel.text = "-" @@ -1039,7 +1037,7 @@ extension StatusSection { }() cell.statusView.actionToolbarContainer.replyButton.setTitle(replyCountTitle, for: .normal) cell.statusView.actionToolbarContainer.replyButton.accessibilityValue = status.repliesCount.flatMap { - L10n.Common.Controls.Timeline.Accessibility.countReplies($0.intValue) + L10n.Plural.Count.reblog($0.intValue) } ?? nil // set reblog let isReblogged = status.rebloggedBy.flatMap { $0.contains(where: { $0.id == requestUserID }) } ?? false @@ -1052,7 +1050,7 @@ extension StatusSection { cell.statusView.actionToolbarContainer.reblogButton.accessibilityLabel = isReblogged ? L10n.Common.Controls.Status.Actions.unreblog : L10n.Common.Controls.Status.Actions.reblog cell.statusView.actionToolbarContainer.reblogButton.accessibilityValue = { guard status.reblogsCount.intValue > 0 else { return nil } - return L10n.Common.Controls.Timeline.Accessibility.countReblogs(status.reblogsCount.intValue) + return L10n.Plural.Count.reblog(status.reblogsCount.intValue) }() // disable reblog if needs (except self) @@ -1077,7 +1075,7 @@ extension StatusSection { cell.statusView.actionToolbarContainer.favoriteButton.accessibilityLabel = isLike ? L10n.Common.Controls.Status.Actions.unfavorite : L10n.Common.Controls.Status.Actions.favorite cell.statusView.actionToolbarContainer.favoriteButton.accessibilityValue = { guard status.favouritesCount.intValue > 0 else { return nil } - return L10n.Common.Controls.Timeline.Accessibility.countReblogs(status.favouritesCount.intValue) + return L10n.Plural.Count.favorite(status.favouritesCount.intValue) }() Publishers.CombineLatest( dependency.context.blockDomainService.blockedDomains.setFailureType(to: ManagedObjectObserver.Error.self), diff --git a/Mastodon/Extension/Date.swift b/Mastodon/Extension/Date.swift index daa5eab6c..183c3f5d9 100644 --- a/Mastodon/Extension/Date.swift +++ b/Mastodon/Extension/Date.swift @@ -10,20 +10,61 @@ import DateToolsSwift extension Date { - var slowedTimeAgoSinceNow: String { - return self.slowedTimeAgo(since: Date()) - + static let relativeTimestampFormatter: RelativeDateTimeFormatter = { + let formatter = RelativeDateTimeFormatter() + formatter.dateTimeStyle = .numeric + formatter.unitsStyle = .full + return formatter + }() + + var localizedSlowedTimeAgoSinceNow: String { + return self.localizedTimeAgo(since: Date(), isSlowed: true, isAbbreviated: true) } - func slowedTimeAgo(since date: Date) -> String { + var localizedTimeAgoSinceNow: String { + return self.localizedTimeAgo(since: Date(), isSlowed: false, isAbbreviated: false) + } + + func localizedTimeAgo(since date: Date, isSlowed: Bool, isAbbreviated: Bool) -> String { let earlierDate = date < self ? date : self - let latest = earlierDate == date ? self : date + let latestDate = earlierDate == date ? self : date - if earlierDate.timeIntervalSince(latest) >= -60 { + if isSlowed, earlierDate.timeIntervalSince(latestDate) >= -60 { return L10n.Common.Controls.Timeline.Timestamp.now } else { - let interval = latest.shortTimeAgo(since: earlierDate) // 1s - return L10n.Common.Controls.Timeline.Timestamp.timeAgo(interval) // 1s ago + if isAbbreviated { + return latestDate.shortTimeAgo(since: earlierDate) + } else { + return Date.relativeTimestampFormatter.localizedString(for: earlierDate, relativeTo: latestDate) + } + } + } + +} + +extension Date { + + func localizedTimeLeft() -> String { + let date = Date() + let earlierDate = date < self ? date : self + let latestDate = earlierDate == date ? self : date + + let components = Calendar.current.dateComponents([.year, .month, .day, .minute, .second], from: earlierDate, to: latestDate) + + if components.year! > 0 { + return L10n.Date.Year.left(components.second!) + } else if components.month! > 0 { + return L10n.Date.Month.left(components.month!) + } else if components.day! > 0 { + return L10n.Date.Day.left(components.day!) + } else if components.hour! > 0 { + return L10n.Date.Hour.left(components.hour!) + } else if components.minute! > 0 { + return L10n.Date.Minute.left(components.minute!) + } else if components.second! > 0 { + return L10n.Date.Year.left(components.second!) + } else { + return "" } } diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index 0f390d2ed..1356cfacf 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -88,8 +88,8 @@ internal enum L10n { internal static let title = L10n.tr("Localizable", "Common.Alerts.SignUpFailure.Title") } internal enum VoteFailure { - /// The poll has expired - internal static let pollExpired = L10n.tr("Localizable", "Common.Alerts.VoteFailure.PollExpired") + /// The poll has ended + internal static let pollEnded = L10n.tr("Localizable", "Common.Alerts.VoteFailure.PollEnded") /// Vote Failure internal static let title = L10n.tr("Localizable", "Common.Alerts.VoteFailure.Title") } @@ -295,10 +295,6 @@ internal enum L10n { internal enum Poll { /// Closed internal static let closed = L10n.tr("Localizable", "Common.Controls.Status.Poll.Closed") - /// %@ left - internal static func timeLeft(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Status.Poll.TimeLeft", String(describing: p1)) - } /// Vote internal static let vote = L10n.tr("Localizable", "Common.Controls.Status.Poll.Vote") } @@ -330,20 +326,6 @@ internal enum L10n { internal enum Timeline { /// Filtered internal static let filtered = L10n.tr("Localizable", "Common.Controls.Timeline.Filtered") - internal enum Accessibility { - /// %@ favorites - internal static func countFavorites(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Accessibility.CountFavorites", String(describing: p1)) - } - /// %@ reblogs - internal static func countReblogs(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Accessibility.CountReblogs", String(describing: p1)) - } - /// %@ replies - internal static func countReplies(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Accessibility.CountReplies", String(describing: p1)) - } - } internal enum Header { /// You can’t view this user’s profile\n until they unblock you. internal static let blockedWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.BlockedWarning") @@ -377,10 +359,6 @@ internal enum L10n { internal enum Timestamp { /// Now internal static let now = L10n.tr("Localizable", "Common.Controls.Timeline.Timestamp.Now") - /// %@ ago - internal static func timeAgo(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Timestamp.TimeAgo", String(describing: p1)) - } } } } @@ -407,14 +385,6 @@ internal enum L10n { internal static let disableContentWarning = L10n.tr("Localizable", "Scene.Compose.Accessibility.DisableContentWarning") /// Enable Content Warning internal static let enableContentWarning = L10n.tr("Localizable", "Scene.Compose.Accessibility.EnableContentWarning") - /// Input limit exceeds %ld - internal static func inputLimitExceedsCount(_ p1: Int) -> String { - return L10n.tr("Localizable", "Scene.Compose.Accessibility.InputLimitExceedsCount", p1) - } - /// Input limit remains %ld - internal static func inputLimitRemainsCount(_ p1: Int) -> String { - return L10n.tr("Localizable", "Scene.Compose.Accessibility.InputLimitRemainsCount", p1) - } /// Post Visibility Menu internal static let postVisibilityMenu = L10n.tr("Localizable", "Scene.Compose.Accessibility.PostVisibilityMenu") /// Remove Poll @@ -543,12 +513,6 @@ internal enum L10n { /// Your Favorites internal static let title = L10n.tr("Localizable", "Scene.Favorite.Title") } - internal enum Hashtag { - /// %@ people talking - internal static func prompt(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Hashtag.Prompt", String(describing: p1)) - } - } internal enum HomeTimeline { /// Home internal static let title = L10n.tr("Localizable", "Scene.HomeTimeline.Title") @@ -609,20 +573,6 @@ internal enum L10n { internal static let following = L10n.tr("Localizable", "Scene.Profile.Dashboard.Following") /// posts internal static let posts = L10n.tr("Localizable", "Scene.Profile.Dashboard.Posts") - internal enum Accessibility { - /// %ld followers - internal static func countFollowers(_ p1: Int) -> String { - return L10n.tr("Localizable", "Scene.Profile.Dashboard.Accessibility.CountFollowers", p1) - } - /// %ld following - internal static func countFollowing(_ p1: Int) -> String { - return L10n.tr("Localizable", "Scene.Profile.Dashboard.Accessibility.CountFollowing", p1) - } - /// %ld posts - internal static func countPosts(_ p1: Int) -> String { - return L10n.tr("Localizable", "Scene.Profile.Dashboard.Accessibility.CountPosts", p1) - } - } } internal enum Fields { /// Add Row @@ -661,10 +611,6 @@ internal enum L10n { internal static let replies = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Replies") } } - internal enum PublicTimeline { - /// Public - internal static let title = L10n.tr("Localizable", "Scene.PublicTimeline.Title") - } internal enum Register { /// Tell us about you. internal static let title = L10n.tr("Localizable", "Scene.Register.Title") @@ -1019,6 +965,60 @@ internal enum L10n { } } + internal enum A11y { + internal enum Plural { + internal enum Count { + /// Plural format key: "Input limit exceeds %#@character_count@" + internal static func inputLimitExceeds(_ p1: Int) -> String { + return L10n.tr("Localizable", "a11y.plural.count.input_limit_exceeds", p1) + } + /// Plural format key: "Input limit remains %#@character_count@" + internal static func inputLimitRemains(_ p1: Int) -> String { + return L10n.tr("Localizable", "a11y.plural.count.input_limit_remains", p1) + } + } + } + } + + internal enum Date { + internal enum Day { + /// Plural format key: "%#@count_day_left@" + internal static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.day.left", p1) + } + } + internal enum Hour { + /// Plural format key: "%#@count_hour_left@" + internal static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.hour.left", p1) + } + } + internal enum Minute { + /// Plural format key: "%#@count_minute_left@" + internal static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.minute.left", p1) + } + } + internal enum Month { + /// Plural format key: "%#@count_month_left@" + internal static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.month.left", p1) + } + } + internal enum Second { + /// Plural format key: "%#@count_second_left@" + internal static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.second.left", p1) + } + } + internal enum Year { + /// Plural format key: "%#@count_year_left@" + internal static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.year.left", p1) + } + } + } + internal enum Plural { /// Plural format key: "%#@count_people_talking@" internal static func peopleTalking(_ p1: Int) -> String { @@ -1029,6 +1029,18 @@ internal enum L10n { internal static func favorite(_ p1: Int) -> String { return L10n.tr("Localizable", "plural.count.favorite", p1) } + /// Plural format key: "%#@count_follower@" + internal static func follower(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.follower", p1) + } + /// Plural format key: "%#@count_following@" + internal static func following(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.following", p1) + } + /// Plural format key: "%#@post_count@" + internal static func post(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.post", p1) + } /// Plural format key: "%#@reblog_count@" internal static func reblog(_ p1: Int) -> String { return L10n.tr("Localizable", "plural.count.reblog", p1) diff --git a/Mastodon/Resources/ar.lproj/Localizable.strings b/Mastodon/Resources/ar.lproj/Localizable.strings index 8e7b47311..39702487b 100644 --- a/Mastodon/Resources/ar.lproj/Localizable.strings +++ b/Mastodon/Resources/ar.lproj/Localizable.strings @@ -22,7 +22,7 @@ Please check your internet connection."; "Common.Alerts.SignOut.Message" = "هل أنت متأكد من أنك تريد تسجيل الخروج؟"; "Common.Alerts.SignOut.Title" = "تسجيل الخروج"; "Common.Alerts.SignUpFailure.Title" = "فشل التسجيل"; -"Common.Alerts.VoteFailure.PollExpired" = "انتهت مدة صلاحية الاستطلاع"; +"Common.Alerts.VoteFailure.PollEnded" = "The poll has ended"; "Common.Alerts.VoteFailure.Title" = "فشل التصويت"; "Common.Controls.Actions.Add" = "إضافة"; "Common.Controls.Actions.Back" = "العودة"; @@ -100,7 +100,6 @@ Please check your internet connection."; "Common.Controls.Status.ContentWarning" = "Content Warning"; "Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal"; "Common.Controls.Status.Poll.Closed" = "Closed"; -"Common.Controls.Status.Poll.TimeLeft" = "%@ left"; "Common.Controls.Status.Poll.Vote" = "Vote"; "Common.Controls.Status.ShowPost" = "Show Post"; "Common.Controls.Status.ShowUserProfile" = "Show user profile"; @@ -116,9 +115,6 @@ Please check your internet connection."; "Common.Controls.Tabs.Notification" = "الإشعارات"; "Common.Controls.Tabs.Profile" = "الملف التعريفي"; "Common.Controls.Tabs.Search" = "بحث"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ favorites"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ reblogs"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ replies"; "Common.Controls.Timeline.Filtered" = "Filtered"; "Common.Controls.Timeline.Header.BlockedWarning" = "You can’t view this user’s profile until they unblock you."; @@ -137,14 +133,11 @@ Your profile looks like this to them."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "تحميل المزيد من المنشورات..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "إظهار المزيد من الردود"; "Common.Controls.Timeline.Timestamp.Now" = "الأن"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "منذ %@"; "Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment"; "Scene.Compose.Accessibility.AppendPoll" = "اضافة استطلاع رأي"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "منتقي مخصص للإيموجي"; "Scene.Compose.Accessibility.DisableContentWarning" = "تعطيل تحذير الحتوى"; "Scene.Compose.Accessibility.EnableContentWarning" = "تنشيط تحذير المحتوى"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "Input limit exceeds %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "Input limit remains %ld"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "Post Visibility Menu"; "Scene.Compose.Accessibility.RemovePoll" = "إزالة الاستطلاع"; "Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be @@ -194,7 +187,6 @@ uploaded to Mastodon."; tap the link to confirm your account."; "Scene.ConfirmEmail.Title" = "شيء واحد أخير."; "Scene.Favorite.Title" = "Your Favorites"; -"Scene.Hashtag.Prompt" = "%@ people talking"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts"; "Scene.HomeTimeline.NavigationBarState.Offline" = "غير متصل"; "Scene.HomeTimeline.NavigationBarState.Published" = "Published!"; @@ -213,9 +205,6 @@ tap the link to confirm your account."; "Scene.Preview.Keyboard.ClosePreview" = "إغلاق المعاينة"; "Scene.Preview.Keyboard.ShowNext" = "إظهار التالي"; "Scene.Preview.Keyboard.ShowPrevious" = "إظهار السابق"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld followers"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld following"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld posts"; "Scene.Profile.Dashboard.Followers" = "متابِع"; "Scene.Profile.Dashboard.Following" = "مُتابَع"; "Scene.Profile.Dashboard.Posts" = "منشورات"; @@ -229,7 +218,6 @@ tap the link to confirm your account."; "Scene.Profile.SegmentedControl.Media" = "وسائط"; "Scene.Profile.SegmentedControl.Posts" = "منشورات"; "Scene.Profile.SegmentedControl.Replies" = "ردود"; -"Scene.PublicTimeline.Title" = "Public"; "Scene.Register.Error.Item.Agreement" = "الاتفاقية"; "Scene.Register.Error.Item.Email" = "البريد الإلكتروني"; "Scene.Register.Error.Item.Locale" = "اللغة المحلية"; diff --git a/Mastodon/Resources/ar.lproj/Localizable.stringsdict b/Mastodon/Resources/ar.lproj/Localizable.stringsdict index 7efc3e0f3..ac93b644b 100644 --- a/Mastodon/Resources/ar.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/ar.lproj/Localizable.stringsdict @@ -2,6 +2,54 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld characters + one + 1 character + two + %ld characters + few + %ld characters + many + %ld characters + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld characters + one + 1 character + two + %ld characters + few + %ld characters + many + %ld characters + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -26,6 +74,30 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld posts + one + 1 post + two + %ld posts + few + %ld posts + many + %ld posts + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -146,5 +218,197 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld following + one + 1 following + two + %ld following + few + %ld following + many + %ld following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld followers + one + 1 follower + two + %ld followers + few + %ld followers + many + %ld followers + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld years left + one + 1 year left + two + %ld years left + few + %ld years left + many + %ld years left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld months left + one + 1 months left + two + %ld months left + few + %ld months left + many + %ld months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld days left + one + 1 day left + two + %ld days left + few + %ld days left + many + %ld days left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld hours left + one + 1 hour left + two + %ld hours left + few + %ld hours left + many + %ld hours left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld minutes left + one + 1 minute left + two + %ld minutes left + few + %ld minutes left + many + %ld minutes left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + %ld seconds left + one + 1 second left + two + %ld seconds left + few + %ld seconds left + many + %ld seconds left + other + %ld seconds left + + diff --git a/Mastodon/Resources/ca.lproj/Localizable.strings b/Mastodon/Resources/ca.lproj/Localizable.strings index 728dc4bc9..31bb9b58e 100644 --- a/Mastodon/Resources/ca.lproj/Localizable.strings +++ b/Mastodon/Resources/ca.lproj/Localizable.strings @@ -22,7 +22,7 @@ Comprova la teva connexió a Internet."; "Common.Alerts.SignOut.Message" = "Estàs segur que vols tancar la sessió?"; "Common.Alerts.SignOut.Title" = "Tancar Sessió"; "Common.Alerts.SignUpFailure.Title" = "Error en el registre"; -"Common.Alerts.VoteFailure.PollExpired" = "L'enquesta ha finalitzat"; +"Common.Alerts.VoteFailure.PollEnded" = "L'enquesta ha finalitzat"; "Common.Alerts.VoteFailure.Title" = "Error del Vot"; "Common.Controls.Actions.Add" = "Afegeix"; "Common.Controls.Actions.Back" = "Enrere"; @@ -100,7 +100,6 @@ Comprova la teva connexió a Internet."; "Common.Controls.Status.ContentWarning" = "Advertència de Contingut"; "Common.Controls.Status.MediaContentWarning" = "Toca qualsevol lloc per mostrar"; "Common.Controls.Status.Poll.Closed" = "Finalitzada"; -"Common.Controls.Status.Poll.TimeLeft" = "Falten %@"; "Common.Controls.Status.Poll.Vote" = "Vota"; "Common.Controls.Status.ShowPost" = "Mostra la publicació"; "Common.Controls.Status.ShowUserProfile" = "Mostra el perfil de l'usuari"; @@ -116,9 +115,6 @@ Comprova la teva connexió a Internet."; "Common.Controls.Tabs.Notification" = "Notificació"; "Common.Controls.Tabs.Profile" = "Perfil"; "Common.Controls.Tabs.Search" = "Cerca"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "favorits de %@"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "impulsos de %@"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "respostes de %@"; "Common.Controls.Timeline.Filtered" = "Filtrat"; "Common.Controls.Timeline.Header.BlockedWarning" = "No pots veure el perfil d'aquest usuari fins que et desbloquegi."; @@ -137,14 +133,11 @@ El teu perfil els sembla així."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Carregant les publicacions que falten..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostra més respostes"; "Common.Controls.Timeline.Timestamp.Now" = "Ara"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "fa %@"; "Scene.Compose.Accessibility.AppendAttachment" = "Afegeix Adjunt"; "Scene.Compose.Accessibility.AppendPoll" = "Afegir enquesta"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector d'Emoji Personalitzat"; "Scene.Compose.Accessibility.DisableContentWarning" = "Desactiva l'Avís de Contingut"; "Scene.Compose.Accessibility.EnableContentWarning" = "Activa l'Avís de Contingut"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "El límit d’entrada supera a %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "El límit d’entrada continua sent %ld"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "Menú de Visibilitat de Publicació"; "Scene.Compose.Accessibility.RemovePoll" = "Eliminar Enquesta"; "Scene.Compose.Attachment.AttachmentBroken" = "Aquest %@ està trencat i no pot ser @@ -175,7 +168,7 @@ carregat a Mastodon."; "Scene.Compose.Poll.ThirtyMinutes" = "30 minuts"; "Scene.Compose.Poll.ThreeDays" = "3 Dies"; "Scene.Compose.ReplyingToUser" = "responent a %@"; -"Scene.Compose.Title.NewPost" = "Nueva publicació"; +"Scene.Compose.Title.NewPost" = "Nova publicació"; "Scene.Compose.Title.NewReply" = "Nova Resposta"; "Scene.Compose.Visibility.Direct" = "Només les persones que menciono"; "Scene.Compose.Visibility.Private" = "Només seguidors"; @@ -194,7 +187,6 @@ carregat a Mastodon."; toca l'enllaç per a confirmar el teu compte."; "Scene.ConfirmEmail.Title" = "Una última cosa."; "Scene.Favorite.Title" = "Els teus Favorits"; -"Scene.Hashtag.Prompt" = "%@ persones hi estan parlant"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Veure noves publicacions"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Fora de línia"; "Scene.HomeTimeline.NavigationBarState.Published" = "Publicat!"; @@ -213,9 +205,6 @@ toca l'enllaç per a confirmar el teu compte."; "Scene.Preview.Keyboard.ClosePreview" = "Tanca la Vista Prèvia"; "Scene.Preview.Keyboard.ShowNext" = "Mostrar Següent"; "Scene.Preview.Keyboard.ShowPrevious" = "Mostrar Anterior"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld seguidors"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "seguint a %ld"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld publicacions"; "Scene.Profile.Dashboard.Followers" = "seguidors"; "Scene.Profile.Dashboard.Following" = "seguint"; "Scene.Profile.Dashboard.Posts" = "publicacions"; @@ -229,7 +218,6 @@ toca l'enllaç per a confirmar el teu compte."; "Scene.Profile.SegmentedControl.Media" = "Mèdia"; "Scene.Profile.SegmentedControl.Posts" = "Publicacions"; "Scene.Profile.SegmentedControl.Replies" = "Respostes"; -"Scene.PublicTimeline.Title" = "Públic"; "Scene.Register.Error.Item.Agreement" = "Acord"; "Scene.Register.Error.Item.Email" = "Correu electrònic"; "Scene.Register.Error.Item.Locale" = "Idioma"; @@ -330,15 +318,15 @@ qualsevol servidor."; "Scene.Settings.Section.Notifications.Follows" = "Em segueix"; "Scene.Settings.Section.Notifications.Mentions" = "M'ha mencionat"; "Scene.Settings.Section.Notifications.Title" = "Notificacions"; -"Scene.Settings.Section.Notifications.Trigger.Anyone" = "ningú"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "algú"; "Scene.Settings.Section.Notifications.Trigger.Follow" = "a qualsevol que segueixi"; "Scene.Settings.Section.Notifications.Trigger.Follower" = "un seguidor"; -"Scene.Settings.Section.Notifications.Trigger.Noone" = "ningú"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "algú"; "Scene.Settings.Section.Notifications.Trigger.Title" = "Notifica'm quan"; "Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desactiva avatars animats"; "Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desactiva emojis animats"; "Scene.Settings.Section.Preference.Title" = "Preferències"; -"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Mode autèntic negre fosc"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Mode negre fosc autèntic"; "Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Utilitza el navegador predeterminat per a obrir enllaços"; "Scene.Settings.Section.SpicyZone.Clear" = "Esborra la memòria cau de Mèdia"; "Scene.Settings.Section.SpicyZone.Signout" = "Tancar Sessió"; diff --git a/Mastodon/Resources/ca.lproj/Localizable.stringsdict b/Mastodon/Resources/ca.lproj/Localizable.stringsdict index 76ff3b6f2..012a0d4c8 100644 --- a/Mastodon/Resources/ca.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/ca.lproj/Localizable.stringsdict @@ -2,6 +2,38 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + El límit d’entrada supera a %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 caràcter + other + %ld caràcters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + El límit d’entrada continua sent %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 caràcter + other + %ld caràcters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -18,6 +50,22 @@ publicacions + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 publicació + other + %ld publicacions + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld persones en parlen + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 seguit + other + %ld seguits + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 seguidor + other + %ld seguidors + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 any restant + other + %ld anys restants + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 mes restant + other + %ld mesos restants + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dia restant + other + %ld dies restants + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hora restant + other + %ld hores restants + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minut restant + other + %ld minuts restants + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 segon restant + other + %ld segons restants + + diff --git a/Mastodon/Resources/de.lproj/Localizable.strings b/Mastodon/Resources/de.lproj/Localizable.strings index b7606dc58..179c19f88 100644 --- a/Mastodon/Resources/de.lproj/Localizable.strings +++ b/Mastodon/Resources/de.lproj/Localizable.strings @@ -1,28 +1,28 @@ -"Common.Alerts.BlockDomain.BlockEntireDomain" = "Block Domain"; +"Common.Alerts.BlockDomain.BlockEntireDomain" = "Domain blockieren"; "Common.Alerts.BlockDomain.Title" = "Bist du dir wirklich sicher, dass du die ganze Domain %@ blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus und werden bevorzugt. Du wirst den Inhalt von dieser Domain nicht mehr sehen. Deine Folgenden von dieser Domain werden entfernt."; -"Common.Alerts.CleanCache.Message" = "Successfully cleaned %@ cache."; +"Common.Alerts.CleanCache.Message" = "%@ erfolgreich aus dem Cache gelöscht."; "Common.Alerts.CleanCache.Title" = "Zwischenspeicher leeren"; -"Common.Alerts.Common.PleaseTryAgain" = "Bitte versuchen Sie es erneut."; -"Common.Alerts.Common.PleaseTryAgainLater" = "Bitte versuchen Sie es später nochmal."; +"Common.Alerts.Common.PleaseTryAgain" = "Bitte versuche es erneut."; +"Common.Alerts.Common.PleaseTryAgainLater" = "Bitte versuche es später nochmal."; "Common.Alerts.DeletePost.Delete" = "Löschen"; -"Common.Alerts.DeletePost.Title" = "Sind Sie sicher, dass Sie diesen Beitrag löschen möchten?"; -"Common.Alerts.DiscardPostContent.Message" = "Bestätigen Sie um den Beitrag zu verwerfen."; +"Common.Alerts.DeletePost.Title" = "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?"; +"Common.Alerts.DiscardPostContent.Message" = "Bestätige um den Beitrag zu verwerfen."; "Common.Alerts.DiscardPostContent.Title" = "Entwurf Verwerfen"; -"Common.Alerts.EditProfileFailure.Message" = "Profil kann nicht bearbeitet werden. Bitte versuchen Sie es erneut."; +"Common.Alerts.EditProfileFailure.Message" = "Profil kann nicht bearbeitet werden. Bitte versuche es erneut."; "Common.Alerts.EditProfileFailure.Title" = "Fehler beim Bearbeiten des Profils"; "Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Es kann nicht mehr als ein Video hinzugefügt werden."; "Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden."; "Common.Alerts.PublishPostFailure.Message" = "Fehler beim Veröffentlichen des Beitrags. -Bitte überprüfen Sie Ihre Internetverbindung."; +Bitte überprüfe deine Internetverbindung."; "Common.Alerts.PublishPostFailure.Title" = "Fehler bei Veröffentlichung"; "Common.Alerts.SavePhotoFailure.Message" = "Bitte aktiviere den Zugriff auf die Fotobibliothek, um das Foto zu speichern."; "Common.Alerts.SavePhotoFailure.Title" = "Foto konnte nicht gespeichert werden"; "Common.Alerts.ServerError.Title" = "Serverfehler"; "Common.Alerts.SignOut.Confirm" = "Abmelden"; -"Common.Alerts.SignOut.Message" = "Sind Sie sicher, dass Sie sich abmelden möchten?"; +"Common.Alerts.SignOut.Message" = "Bist du sicher, dass du dich abmelden möchten?"; "Common.Alerts.SignOut.Title" = "Abmelden"; "Common.Alerts.SignUpFailure.Title" = "Anmeldefehler"; -"Common.Alerts.VoteFailure.PollExpired" = "Diese Umfrage ist abgelaufen"; +"Common.Alerts.VoteFailure.PollEnded" = "Die Umfrage ist beendet"; "Common.Alerts.VoteFailure.Title" = "Fehler bei Abstimmung"; "Common.Controls.Actions.Add" = "Hinzufügen"; "Common.Controls.Actions.Back" = "Zurück"; @@ -62,10 +62,10 @@ Bitte überprüfen Sie Ihre Internetverbindung."; "Common.Controls.Friendship.Block" = "Blockieren"; "Common.Controls.Friendship.BlockDomain" = "%@ blockieren"; "Common.Controls.Friendship.BlockUser" = "%@ blockieren"; -"Common.Controls.Friendship.Blocked" = "Blocked"; +"Common.Controls.Friendship.Blocked" = "Blockiert"; "Common.Controls.Friendship.EditInfo" = "Information bearbeiten"; "Common.Controls.Friendship.Follow" = "Folgen"; -"Common.Controls.Friendship.Following" = "Following"; +"Common.Controls.Friendship.Following" = "Folge Ich"; "Common.Controls.Friendship.Mute" = "Stummschalten"; "Common.Controls.Friendship.MuteUser" = "%@ stummschalten"; "Common.Controls.Friendship.Muted" = "Stummgeschaltet"; @@ -73,8 +73,8 @@ Bitte überprüfen Sie Ihre Internetverbindung."; "Common.Controls.Friendship.Request" = "Anfragen"; "Common.Controls.Friendship.Unblock" = "Blockierung aufheben"; "Common.Controls.Friendship.UnblockUser" = "@%@ entblocken"; -"Common.Controls.Friendship.Unmute" = "Unmute"; -"Common.Controls.Friendship.UnmuteUser" = "Unmute %@"; +"Common.Controls.Friendship.Unmute" = "Nicht mehr stummschalten"; +"Common.Controls.Friendship.UnmuteUser" = "%@ nicht mehr stummschalten"; "Common.Controls.Keyboard.Common.ComposeNewPost" = "Neuen Beitrag verfassen"; "Common.Controls.Keyboard.Common.OpenSettings" = "Einstellungen öffnen"; "Common.Controls.Keyboard.Common.ShowFavorites" = "Favoriten anzeigen"; @@ -83,84 +83,77 @@ Bitte überprüfen Sie Ihre Internetverbindung."; "Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Vorheriger Abschnitt"; "Common.Controls.Keyboard.Timeline.NextStatus" = "Nächster Beitrag"; "Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Profil des Verfassers ansehen"; -"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Open Reblogger's Profile"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Profil des teilenden Nutzers öffnen"; "Common.Controls.Keyboard.Timeline.OpenStatus" = "Beitrag öffnen"; "Common.Controls.Keyboard.Timeline.PreviewImage" = "Bildvorschau"; "Common.Controls.Keyboard.Timeline.PreviousStatus" = "Vorheriger Beitrag"; "Common.Controls.Keyboard.Timeline.ReplyStatus" = "Auf Beitrag antworten"; -"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Toggle Content Warning"; -"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toggle Favorite on Post"; -"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toggle Reblog on Post"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Inhaltswarnung umschalten"; +"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favorit vom Beitrag umschalten"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Teilen vom Beitrag umschalten"; "Common.Controls.Status.Actions.Favorite" = "Favorit"; -"Common.Controls.Status.Actions.Menu" = "Menu"; -"Common.Controls.Status.Actions.Reblog" = "Reblog"; +"Common.Controls.Status.Actions.Menu" = "Menü"; +"Common.Controls.Status.Actions.Reblog" = "Teilen"; "Common.Controls.Status.Actions.Reply" = "Antworten"; "Common.Controls.Status.Actions.Unfavorite" = "Aus Favoriten entfernen"; -"Common.Controls.Status.Actions.Unreblog" = "Undo reblog"; +"Common.Controls.Status.Actions.Unreblog" = "Nicht mehr teilen"; "Common.Controls.Status.ContentWarning" = "Inhaltswarnung"; "Common.Controls.Status.MediaContentWarning" = "Tippe irgendwo zum Anzeigen"; "Common.Controls.Status.Poll.Closed" = "Beendet"; -"Common.Controls.Status.Poll.TimeLeft" = "%@ verbleiben"; "Common.Controls.Status.Poll.Vote" = "Abstimmen"; -"Common.Controls.Status.ShowPost" = "Show Post"; +"Common.Controls.Status.ShowPost" = "Beitrag anzeigen"; "Common.Controls.Status.ShowUserProfile" = "Benutzerprofil anzeigen"; "Common.Controls.Status.Tag.Email" = "E-Mail"; "Common.Controls.Status.Tag.Emoji" = "Emoji"; "Common.Controls.Status.Tag.Hashtag" = "Hashtag"; "Common.Controls.Status.Tag.Link" = "Link"; -"Common.Controls.Status.Tag.Mention" = "Mention"; +"Common.Controls.Status.Tag.Mention" = "Erwähnung"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.UserReblogged" = "%@ reblogged"; -"Common.Controls.Status.UserRepliedTo" = "Replied to %@"; +"Common.Controls.Status.UserReblogged" = "%@ teilte"; +"Common.Controls.Status.UserRepliedTo" = "Antwortet auf %@"; "Common.Controls.Tabs.Home" = "Startseite"; "Common.Controls.Tabs.Notification" = "Benachrichtigungen"; "Common.Controls.Tabs.Profile" = "Profil"; "Common.Controls.Tabs.Search" = "Suche"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ favorites"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ reblogs"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ replies"; "Common.Controls.Timeline.Filtered" = "Gefiltert"; "Common.Controls.Timeline.Header.BlockedWarning" = "Das Profil dieses Benutzers kann nicht angezeigt werden, bis er dich entsperrt."; -"Common.Controls.Timeline.Header.BlockingWarning" = "Du kannst das Profil dieses Benutzers nicht anzeigen - solange du es nicht entsperrst. -Dein Profil sieht für diesen Benutzer so aus."; +"Common.Controls.Timeline.Header.BlockingWarning" = "Du kannst das Profil dieses Benutzers nicht sehen + solange du den Benutzer nicht entsperrst. +Dein Profil sieht für diesen Benutzer auch so aus."; "Common.Controls.Timeline.Header.NoStatusFound" = "Kein Beitrag gefunden"; -"Common.Controls.Timeline.Header.SuspendedWarning" = "This user has been suspended."; -"Common.Controls.Timeline.Header.UserBlockedWarning" = "You can’t view %@’s profile - until they unblock you."; -"Common.Controls.Timeline.Header.UserBlockingWarning" = "Du kannst %@'s Profil nicht anzeigen - solange du es nicht entsperrst. -Dein Profil sieht für diesen Benutzer so aus."; -"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@’s account has been suspended."; +"Common.Controls.Timeline.Header.SuspendedWarning" = "Dieser Nutzer wurde gesperrt."; +"Common.Controls.Timeline.Header.UserBlockedWarning" = "Du kannst das Profil von %@ nicht sehen + bis der Benutzer dich entsperrt."; +"Common.Controls.Timeline.Header.UserBlockingWarning" = "Du kannst %@s Profil nicht sehen + solange du diesen Benutzer nicht entsperrst. +Dein Profil sieht für diesen Benutzer auch so aus."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "Das Konto von %@ wurde gesperrt."; "Common.Controls.Timeline.Loader.LoadMissingPosts" = "Fehlende Beiträge laden"; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Lade fehlende Beiträge..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Weitere Antworten anzeigen"; "Common.Controls.Timeline.Timestamp.Now" = "Gerade"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "vor %@"; "Scene.Compose.Accessibility.AppendAttachment" = "Anhang hinzufügen"; "Scene.Compose.Accessibility.AppendPoll" = "Umfrage hinzufügen"; -"Scene.Compose.Accessibility.CustomEmojiPicker" = "Custom Emoji Picker"; -"Scene.Compose.Accessibility.DisableContentWarning" = "Disable Content Warning"; -"Scene.Compose.Accessibility.EnableContentWarning" = "Enable Content Warning"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "Input limit exceeds %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "Input limit remains %ld"; -"Scene.Compose.Accessibility.PostVisibilityMenu" = "Post Visibility Menu"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "Benutzerdefinierter Emojiwähler"; +"Scene.Compose.Accessibility.DisableContentWarning" = "Inhaltswarnung ausschalten"; +"Scene.Compose.Accessibility.EnableContentWarning" = "Inhaltswarnung einschalten"; +"Scene.Compose.Accessibility.PostVisibilityMenu" = "Sichtbarkeitsmenü"; "Scene.Compose.Accessibility.RemovePoll" = "Umfrage entfernen"; -"Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be -uploaded to Mastodon."; +"Scene.Compose.Attachment.AttachmentBroken" = "Dieses %@ scheint defekt zu sein und +kann nicht auf Mastodon hochgeladen werden."; "Scene.Compose.Attachment.DescriptionPhoto" = "Für Menschen mit Sehbehinderung beschreiben..."; "Scene.Compose.Attachment.DescriptionVideo" = "Für Menschen mit Sehbehinderung beschreiben..."; "Scene.Compose.Attachment.Photo" = "Foto"; "Scene.Compose.Attachment.Video" = "Video"; -"Scene.Compose.AutoComplete.SpaceToAdd" = "Space to add"; +"Scene.Compose.AutoComplete.SpaceToAdd" = "Leerzeichen um hinzuzufügen"; "Scene.Compose.ComposeAction" = "Veröffentlichen"; "Scene.Compose.ContentInputPlaceholder" = "Tippe oder füge ein, was dir am Herzen liegt"; "Scene.Compose.ContentWarning.Placeholder" = "Schreibe eine Inhaltswarnung hier..."; -"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Add Attachment - %@"; +"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Anhang hinzufügen - %@"; "Scene.Compose.Keyboard.DiscardPost" = "Beitrag verwerfen"; "Scene.Compose.Keyboard.PublishPost" = "Beitrag veröffentlichen"; -"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Select Visibility - %@"; +"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Sichtbarkeit auswählen - %@"; "Scene.Compose.Keyboard.ToggleContentWarning" = "Inhaltswarnung umschalten"; "Scene.Compose.Keyboard.TogglePoll" = "Umfrage umschalten"; "Scene.Compose.MediaSelection.Browse" = "Durchsuchen"; @@ -169,7 +162,7 @@ uploaded to Mastodon."; "Scene.Compose.Poll.DurationTime" = "Dauer: %@"; "Scene.Compose.Poll.OneDay" = "1 Tag"; "Scene.Compose.Poll.OneHour" = "1 Stunde"; -"Scene.Compose.Poll.OptionNumber" = "Option %ld"; +"Scene.Compose.Poll.OptionNumber" = "Auswahlmöglichkeit %ld"; "Scene.Compose.Poll.SevenDays" = "7 Tage"; "Scene.Compose.Poll.SixHours" = "6 Stunden"; "Scene.Compose.Poll.ThirtyMinutes" = "30 Minuten"; @@ -181,24 +174,23 @@ uploaded to Mastodon."; "Scene.Compose.Visibility.Private" = "Nur für Folgende"; "Scene.Compose.Visibility.Public" = "Öffentlich"; "Scene.Compose.Visibility.Unlisted" = "Nicht gelistet"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "I never got an email"; +"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Ich habe keine E-Mail erhalten."; "Scene.ConfirmEmail.Button.OpenEmailApp" = "E-Mail-App öffnen"; -"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t."; -"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email"; -"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email"; -"Scene.ConfirmEmail.OpenEmailApp.Description" = "We just sent you an email. Check your junk folder if you haven’t."; +"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Überprüfe, ob deine E-Mail-Adresse korrekt ist und sieh im Spam-Ordner nach, falls du es noch nicht getan hast."; +"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "E-Mail erneut versenden"; +"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Bitte überprüfe deine E-Mails"; +"Scene.ConfirmEmail.OpenEmailApp.Description" = "Wir haben dir gerade eine E-Mail geschickt. Überprüfe deinen Spam-Ordner, falls du es noch nicht getan hast."; "Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail"; -"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client"; -"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox."; +"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "E-Mail-Client öffnen"; +"Scene.ConfirmEmail.OpenEmailApp.Title" = "Überprüfe deinen Posteingang."; "Scene.ConfirmEmail.Subtitle" = "Wir haben gerade eine E-Mail an %@ gesendet, tippe auf den Link, um Dein Konto zu bestätigen."; "Scene.ConfirmEmail.Title" = "Noch eine letzte Sache."; "Scene.Favorite.Title" = "Deine Favoriten"; -"Scene.Hashtag.Prompt" = "%@ Leute reden"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Neue Beiträge anzeigen"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; "Scene.HomeTimeline.NavigationBarState.Published" = "Veröffentlicht!"; -"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post..."; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "Beitrag wird veröffentlicht..."; "Scene.HomeTimeline.Title" = "Startseite"; "Scene.Notification.Action.Favourite" = "hat deinen Beitrag favorisiert"; "Scene.Notification.Action.Follow" = "folgt dir"; @@ -213,9 +205,6 @@ tippe auf den Link, um Dein Konto zu bestätigen."; "Scene.Preview.Keyboard.ClosePreview" = "Vorschau schließen"; "Scene.Preview.Keyboard.ShowNext" = "Nächstes anzeigen"; "Scene.Preview.Keyboard.ShowPrevious" = "Vorheriges anzeigen"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld Folger"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld Gefolgte"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld Beiträge"; "Scene.Profile.Dashboard.Followers" = "Folger"; "Scene.Profile.Dashboard.Following" = "Gefolgte"; "Scene.Profile.Dashboard.Posts" = "Beiträge"; @@ -224,32 +213,31 @@ tippe auf den Link, um Dein Konto zu bestätigen."; "Scene.Profile.Fields.Placeholder.Label" = "Bezeichnung"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Bestätigen zum Entsperren von %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Konto entsperren"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bestätige um %@ nicht mehr stummzuschalten"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ton einschalten"; "Scene.Profile.SegmentedControl.Media" = "Medien"; "Scene.Profile.SegmentedControl.Posts" = "Beiträge"; "Scene.Profile.SegmentedControl.Replies" = "Antworten"; -"Scene.PublicTimeline.Title" = "Öffentlich"; "Scene.Register.Error.Item.Agreement" = "Vereinbarung"; "Scene.Register.Error.Item.Email" = "E-Mail"; "Scene.Register.Error.Item.Locale" = "Sprache"; "Scene.Register.Error.Item.Password" = "Passwort"; "Scene.Register.Error.Item.Reason" = "Begründung"; "Scene.Register.Error.Item.Username" = "Benutzername"; -"Scene.Register.Error.Reason.Accepted" = "%@ must be accepted"; -"Scene.Register.Error.Reason.Blank" = "%@ is required"; -"Scene.Register.Error.Reason.Blocked" = "%@ contains a disallowed email provider"; -"Scene.Register.Error.Reason.Inclusion" = "%@ is not a supported value"; -"Scene.Register.Error.Reason.Invalid" = "%@ is invalid"; -"Scene.Register.Error.Reason.Reserved" = "%@ is a reserved keyword"; -"Scene.Register.Error.Reason.Taken" = "%@ is already in use"; -"Scene.Register.Error.Reason.TooLong" = "%@ is too long"; -"Scene.Register.Error.Reason.TooShort" = "%@ is too short"; -"Scene.Register.Error.Reason.Unreachable" = "%@ does not seem to exist"; -"Scene.Register.Error.Special.EmailInvalid" = "This is not a valid email address"; -"Scene.Register.Error.Special.PasswordTooShort" = "Password is too short (must be at least 8 characters)"; -"Scene.Register.Error.Special.UsernameInvalid" = "Username must only contain alphanumeric characters and underscores"; -"Scene.Register.Error.Special.UsernameTooLong" = "Username is too long (can’t be longer than 30 characters)"; +"Scene.Register.Error.Reason.Accepted" = "%@ muss akzeptiert werden"; +"Scene.Register.Error.Reason.Blank" = "%@ ist erforderlich"; +"Scene.Register.Error.Reason.Blocked" = "%@ verwendet einen nicht erlaubten E-Mail-Anbieter"; +"Scene.Register.Error.Reason.Inclusion" = "%@ ist kein unterstützter Wert"; +"Scene.Register.Error.Reason.Invalid" = "%@ ist ungültig"; +"Scene.Register.Error.Reason.Reserved" = "%@ ist ein reserviertes Schlüsselwort"; +"Scene.Register.Error.Reason.Taken" = "%@ wird bereits verwendet"; +"Scene.Register.Error.Reason.TooLong" = "%@ ist zu lang"; +"Scene.Register.Error.Reason.TooShort" = "%@ ist zu kurz"; +"Scene.Register.Error.Reason.Unreachable" = "%@ scheint nicht zu existieren"; +"Scene.Register.Error.Special.EmailInvalid" = "Dies ist keine gültige E-Mail Adresse"; +"Scene.Register.Error.Special.PasswordTooShort" = "Passwort ist zu kurz (mindestens 8 Zeichen erforderlich)"; +"Scene.Register.Error.Special.UsernameInvalid" = "Benutzername kann nur alphanumerische Zeichen und Unterstriche enthalten"; +"Scene.Register.Error.Special.UsernameTooLong" = "Benutzername ist zu lang (darf nicht länger als 30 Zeichen sein)"; "Scene.Register.Input.Avatar.Delete" = "Löschen"; "Scene.Register.Input.DisplayName.Placeholder" = "Anzeigename"; "Scene.Register.Input.Email.Placeholder" = "E-Mail"; @@ -267,13 +255,13 @@ tippe auf den Link, um Dein Konto zu bestätigen."; "Scene.Report.Step2" = "Schritt 2 von 2"; "Scene.Report.TextPlaceholder" = "Zusätzliche Kommentare eingeben oder einfügen"; "Scene.Report.Title" = "%@ melden"; -"Scene.Search.Recommend.Accounts.Description" = "You may like to follow these accounts"; +"Scene.Search.Recommend.Accounts.Description" = "Vielleicht gefallen dir diese Benutzer"; "Scene.Search.Recommend.Accounts.Follow" = "Folgen"; -"Scene.Search.Recommend.Accounts.Title" = "Accounts you might like"; +"Scene.Search.Recommend.Accounts.Title" = "Konten, die dir gefallen könnten"; "Scene.Search.Recommend.ButtonText" = "Alle anzeigen"; -"Scene.Search.Recommend.HashTag.Description" = "Hashtags that are getting quite a bit of attention"; +"Scene.Search.Recommend.HashTag.Description" = "Hashtags die an Aufmerksamkeit zunehmen"; "Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ Leute reden"; -"Scene.Search.Recommend.HashTag.Title" = "Trending on Mastodon"; +"Scene.Search.Recommend.HashTag.Title" = "Angesagt auf Mastodon"; "Scene.Search.SearchBar.Cancel" = "Abbrechen"; "Scene.Search.SearchBar.Placeholder" = "Hashtags und Benutzer suchen"; "Scene.Search.Searching.Clear" = "Zurücksetzen"; @@ -300,21 +288,21 @@ tippe auf den Link, um Dein Konto zu bestätigen."; "Scene.ServerPicker.Button.Category.Tech" = "Technologie"; "Scene.ServerPicker.Button.SeeLess" = "Weniger anzeigen"; "Scene.ServerPicker.Button.SeeMore" = "Mehr anzeigen"; -"Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection."; +"Scene.ServerPicker.EmptyState.BadNetwork" = "Da ist etwas schief gelaufen. Bitte versuche es erneut oder überprüfe deine Internetverbindung."; "Scene.ServerPicker.EmptyState.FindingServers" = "Verfügbare Server werden gesucht..."; "Scene.ServerPicker.EmptyState.NoResults" = "Keine Ergebnisse"; "Scene.ServerPicker.Input.Placeholder" = "Finde einen Server oder trete deinem eigenen bei..."; "Scene.ServerPicker.Label.Category" = "KATEGORIE"; "Scene.ServerPicker.Label.Language" = "SPRACHE"; "Scene.ServerPicker.Label.Users" = "BENUTZER"; -"Scene.ServerPicker.Title" = "Pick a server, -any server."; +"Scene.ServerPicker.Title" = "Wähle einen Server, +beliebigen Server."; "Scene.ServerRules.Button.Confirm" = "Ich stimme zu"; "Scene.ServerRules.PrivacyPolicy" = "Datenschutzerklärung"; -"Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@."; -"Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@."; -"Scene.ServerRules.TermsOfService" = "terms of service"; -"Scene.ServerRules.Title" = "Some ground rules."; +"Scene.ServerRules.Prompt" = "Wenn du fortfährst, unterliegst du den Nutzungsbedingungen und den Datenschutzrichtlinien für %@."; +"Scene.ServerRules.Subtitle" = "Diese Regeln werden von den Administratoren von %@ festgelegt."; +"Scene.ServerRules.TermsOfService" = "Nutzungsbedingungen"; +"Scene.ServerRules.Title" = "Einige Grundregeln."; "Scene.Settings.Footer.MastodonDescription" = "Mastodon ist quelloffene Software. Du kannst auf GitHub unter %@ (%@) Probleme melden"; "Scene.Settings.Keyboard.CloseSettingsWindow" = "Einstellungsfenster schließen"; "Scene.Settings.Section.Appearance.Automatic" = "Automatisch"; @@ -344,9 +332,8 @@ any server."; "Scene.Settings.Section.SpicyZone.Signout" = "Abmelden"; "Scene.Settings.Section.SpicyZone.Title" = "Der Gefährliche Bereich"; "Scene.Settings.Title" = "Einstellungen"; -"Scene.SuggestionAccount.FollowExplain" = "When you follow someone, you’ll see their posts in your home feed."; -"Scene.SuggestionAccount.Title" = "Find People to Follow"; +"Scene.SuggestionAccount.FollowExplain" = "Wenn du jemandem folgst, siehst du deren Beiträge dann in deinem Home-Feed."; +"Scene.SuggestionAccount.Title" = "Entdecke Benutzer zum Folgen"; "Scene.Thread.BackTitle" = "Beitrag"; "Scene.Thread.Title" = "Beitrag von %@"; -"Scene.Welcome.Slogan" = "Social networking -back in your hands."; \ No newline at end of file +"Scene.Welcome.Slogan" = "Soziale Netzwerke wieder in deinen Händen."; \ No newline at end of file diff --git a/Mastodon/Resources/de.lproj/Localizable.stringsdict b/Mastodon/Resources/de.lproj/Localizable.stringsdict index 646920f42..e0e798625 100644 --- a/Mastodon/Resources/de.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/de.lproj/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ Beiträge + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -47,7 +95,7 @@ one 1 Reblog other - %ld reblogs + %ld Reblogs plural.count.vote @@ -61,7 +109,7 @@ NSStringFormatValueTypeKey ld one - 1 vote + 1 Stimme other %ld Stimmen @@ -77,7 +125,7 @@ NSStringFormatValueTypeKey ld one - 1 voter + 1 Wähler other %ld Wähler @@ -98,5 +146,133 @@ %ld Leute reden + 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 + + diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index 39affaf2a..be3e63ad5 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -22,7 +22,7 @@ Please check your internet connection."; "Common.Alerts.SignOut.Message" = "Are you sure you want to sign out?"; "Common.Alerts.SignOut.Title" = "Sign Out"; "Common.Alerts.SignUpFailure.Title" = "Sign Up Failure"; -"Common.Alerts.VoteFailure.PollExpired" = "The poll has expired"; +"Common.Alerts.VoteFailure.PollEnded" = "The poll has ended"; "Common.Alerts.VoteFailure.Title" = "Vote Failure"; "Common.Controls.Actions.Add" = "Add"; "Common.Controls.Actions.Back" = "Back"; @@ -100,7 +100,6 @@ Please check your internet connection."; "Common.Controls.Status.ContentWarning" = "Content Warning"; "Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal"; "Common.Controls.Status.Poll.Closed" = "Closed"; -"Common.Controls.Status.Poll.TimeLeft" = "%@ left"; "Common.Controls.Status.Poll.Vote" = "Vote"; "Common.Controls.Status.ShowPost" = "Show Post"; "Common.Controls.Status.ShowUserProfile" = "Show user profile"; @@ -116,9 +115,6 @@ Please check your internet connection."; "Common.Controls.Tabs.Notification" = "Notification"; "Common.Controls.Tabs.Profile" = "Profile"; "Common.Controls.Tabs.Search" = "Search"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ favorites"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ reblogs"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ replies"; "Common.Controls.Timeline.Filtered" = "Filtered"; "Common.Controls.Timeline.Header.BlockedWarning" = "You can’t view this user’s profile until they unblock you."; @@ -137,14 +133,11 @@ Your profile looks like this to them."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Loading missing posts..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Show more replies"; "Common.Controls.Timeline.Timestamp.Now" = "Now"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "%@ ago"; "Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment"; "Scene.Compose.Accessibility.AppendPoll" = "Add Poll"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Custom Emoji Picker"; "Scene.Compose.Accessibility.DisableContentWarning" = "Disable Content Warning"; "Scene.Compose.Accessibility.EnableContentWarning" = "Enable Content Warning"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "Input limit exceeds %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "Input limit remains %ld"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "Post Visibility Menu"; "Scene.Compose.Accessibility.RemovePoll" = "Remove Poll"; "Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be @@ -194,7 +187,6 @@ uploaded to Mastodon."; tap the link to confirm your account."; "Scene.ConfirmEmail.Title" = "One last thing."; "Scene.Favorite.Title" = "Your Favorites"; -"Scene.Hashtag.Prompt" = "%@ people talking"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; "Scene.HomeTimeline.NavigationBarState.Published" = "Published!"; @@ -213,9 +205,6 @@ tap the link to confirm your account."; "Scene.Preview.Keyboard.ClosePreview" = "Close Preview"; "Scene.Preview.Keyboard.ShowNext" = "Show Next"; "Scene.Preview.Keyboard.ShowPrevious" = "Show Previous"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld followers"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld following"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld posts"; "Scene.Profile.Dashboard.Followers" = "followers"; "Scene.Profile.Dashboard.Following" = "following"; "Scene.Profile.Dashboard.Posts" = "posts"; @@ -229,7 +218,6 @@ tap the link to confirm your account."; "Scene.Profile.SegmentedControl.Media" = "Media"; "Scene.Profile.SegmentedControl.Posts" = "Posts"; "Scene.Profile.SegmentedControl.Replies" = "Replies"; -"Scene.PublicTimeline.Title" = "Public"; "Scene.Register.Error.Item.Agreement" = "Agreement"; "Scene.Register.Error.Item.Email" = "Email"; "Scene.Register.Error.Item.Locale" = "Locale"; diff --git a/Mastodon/Resources/en.lproj/Localizable.stringsdict b/Mastodon/Resources/en.lproj/Localizable.stringsdict index 33e100fae..42c07cec9 100644 --- a/Mastodon/Resources/en.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/en.lproj/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %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 + + diff --git a/Mastodon/Resources/es-419.lproj/Localizable.strings b/Mastodon/Resources/es-419.lproj/Localizable.strings index de6a524b5..a5a12a4f2 100644 --- a/Mastodon/Resources/es-419.lproj/Localizable.strings +++ b/Mastodon/Resources/es-419.lproj/Localizable.strings @@ -22,7 +22,7 @@ Por favor, revisá tu conexión a Internet."; "Common.Alerts.SignOut.Message" = "¿Estás seguro que querés cerrar la sesión?"; "Common.Alerts.SignOut.Title" = "Cerrar sesión"; "Common.Alerts.SignUpFailure.Title" = "Error al registrarse"; -"Common.Alerts.VoteFailure.PollExpired" = "La encuesta finalizó"; +"Common.Alerts.VoteFailure.PollEnded" = "La encuesta ha terminado"; "Common.Alerts.VoteFailure.Title" = "Error al votar"; "Common.Controls.Actions.Add" = "Agregar"; "Common.Controls.Actions.Back" = "Volver"; @@ -100,7 +100,6 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Status.ContentWarning" = "Advertencia de contenido"; "Common.Controls.Status.MediaContentWarning" = "Toca en cualquier lugar para mostrar"; "Common.Controls.Status.Poll.Closed" = "Cerrada"; -"Common.Controls.Status.Poll.TimeLeft" = "Quedan %@"; "Common.Controls.Status.Poll.Vote" = "Votar"; "Common.Controls.Status.ShowPost" = "Mostrar mensaje"; "Common.Controls.Status.ShowUserProfile" = "Mostrar perfil de usuario"; @@ -116,9 +115,6 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Tabs.Notification" = "Notificación"; "Common.Controls.Tabs.Profile" = "Perfil"; "Common.Controls.Tabs.Search" = "Buscar"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ veces marcado como favorito"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ adhesiones"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ respuestas"; "Common.Controls.Timeline.Filtered" = "Filtrado"; "Common.Controls.Timeline.Header.BlockedWarning" = "No podés ver el perfil de este usuario hasta que dicho usuario te desbloquee."; @@ -137,14 +133,11 @@ Tu perfil le aparece así a este usuario."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Cargando mensajes faltantes…"; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostrar más respuestas"; "Common.Controls.Timeline.Timestamp.Now" = "Ahora"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "hace %@"; "Scene.Compose.Accessibility.AppendAttachment" = "Agregar archivo adjunto"; "Scene.Compose.Accessibility.AppendPoll" = "Agregar encuesta"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector de emoji personalizado"; "Scene.Compose.Accessibility.DisableContentWarning" = "Deshabilitar advertencia de contenido"; "Scene.Compose.Accessibility.EnableContentWarning" = "Habilitar advertencia de contenido"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "El límite de entrada excede %ld caracteres"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "El límite de entrada permite %ld caracteres"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "Menú de visibilidad del mensaje"; "Scene.Compose.Accessibility.RemovePoll" = "Quitar encuesta"; "Scene.Compose.Attachment.AttachmentBroken" = "Este archivo de %@ está roto @@ -194,7 +187,6 @@ y no se puede subir a Mastodon."; pulsá en el enlace para confirmar tu cuenta."; "Scene.ConfirmEmail.Title" = "Una última cosa."; "Scene.Favorite.Title" = "Tus favoritos"; -"Scene.Hashtag.Prompt" = "%@ cuentas hablando"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Ver nuevos mensajes"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Desconectado"; "Scene.HomeTimeline.NavigationBarState.Published" = "¡Enviado!"; @@ -213,9 +205,6 @@ pulsá 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.Dashboard.Accessibility.CountFollowers" = "%ld seguidores"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "siguiendo a %ld"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld mensajes"; "Scene.Profile.Dashboard.Followers" = "seguidores"; "Scene.Profile.Dashboard.Following" = "siguiendo"; "Scene.Profile.Dashboard.Posts" = "mensajes"; @@ -229,7 +218,6 @@ pulsá en el enlace para confirmar tu cuenta."; "Scene.Profile.SegmentedControl.Media" = "Medios"; "Scene.Profile.SegmentedControl.Posts" = "Mensajes"; "Scene.Profile.SegmentedControl.Replies" = "Respuestas"; -"Scene.PublicTimeline.Title" = "Pública"; "Scene.Register.Error.Item.Agreement" = "Acuerdo"; "Scene.Register.Error.Item.Email" = "Correo electrónico"; "Scene.Register.Error.Item.Locale" = "Idioma de la interface"; @@ -331,7 +319,7 @@ el que quieras."; "Scene.Settings.Section.Notifications.Mentions" = "Me mencionó"; "Scene.Settings.Section.Notifications.Title" = "Notificaciones"; "Scene.Settings.Section.Notifications.Trigger.Anyone" = "cualquiera"; -"Scene.Settings.Section.Notifications.Trigger.Follow" = "cualquiera que sigo"; +"Scene.Settings.Section.Notifications.Trigger.Follow" = "alguien a quien sigo"; "Scene.Settings.Section.Notifications.Trigger.Follower" = "un seguidor"; "Scene.Settings.Section.Notifications.Trigger.Noone" = "nadie"; "Scene.Settings.Section.Notifications.Trigger.Title" = "Notificarme cuando"; diff --git a/Mastodon/Resources/es-419.lproj/Localizable.stringsdict b/Mastodon/Resources/es-419.lproj/Localizable.stringsdict index 9af995567..d1c258f4b 100644 --- a/Mastodon/Resources/es-419.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/es-419.lproj/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ mensajes + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld cuentas hablando + 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 + + diff --git a/Mastodon/Resources/es.lproj/Localizable.strings b/Mastodon/Resources/es.lproj/Localizable.strings index 8a906ea91..63fb420df 100644 --- a/Mastodon/Resources/es.lproj/Localizable.strings +++ b/Mastodon/Resources/es.lproj/Localizable.strings @@ -22,7 +22,7 @@ Por favor, revise su conexión a internet."; "Common.Alerts.SignOut.Message" = "¿Estás seguro de que deseas cerrar la sesión?"; "Common.Alerts.SignOut.Title" = "Cerrar Sesión"; "Common.Alerts.SignUpFailure.Title" = "Error al registrarse"; -"Common.Alerts.VoteFailure.PollExpired" = "La encuesta ha caducado"; +"Common.Alerts.VoteFailure.PollEnded" = "La encuesta ha terminado"; "Common.Alerts.VoteFailure.Title" = "Voto fallido"; "Common.Controls.Actions.Add" = "Añadir"; "Common.Controls.Actions.Back" = "Atrás"; @@ -100,7 +100,6 @@ Por favor, revise su conexión a internet."; "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.TimeLeft" = "Quedan %@"; "Common.Controls.Status.Poll.Vote" = "Vota"; "Common.Controls.Status.ShowPost" = "Mostrar Publicación"; "Common.Controls.Status.ShowUserProfile" = "Mostrar perfil del usuario"; @@ -116,9 +115,6 @@ Por favor, revise su conexión a internet."; "Common.Controls.Tabs.Notification" = "Notificación"; "Common.Controls.Tabs.Profile" = "Perfil"; "Common.Controls.Tabs.Search" = "Buscar"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ favoritos"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ redifusiones"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ respuestas"; "Common.Controls.Timeline.Filtered" = "Filtrado"; "Common.Controls.Timeline.Header.BlockedWarning" = "No puedes ver el perfil de este usuario hasta que te desbloquee."; @@ -137,14 +133,11 @@ Tu perfil se ve así para él."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Cargando publicaciones faltantes..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostrar más respuestas"; "Common.Controls.Timeline.Timestamp.Now" = "Ahora"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "Hace %@"; "Scene.Compose.Accessibility.AppendAttachment" = "Añadir Adjunto"; "Scene.Compose.Accessibility.AppendPoll" = "Añadir Encuesta"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector de Emojis Personalizados"; "Scene.Compose.Accessibility.DisableContentWarning" = "Desactivar Advertencia de Contenido"; "Scene.Compose.Accessibility.EnableContentWarning" = "Activar Advertencia de Contenido"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "%ld en exceso sobre el límite de entrada"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "%ld restante hasta el límite de entrada"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "Menú de Visibilidad de la Publicación"; "Scene.Compose.Accessibility.RemovePoll" = "Eliminar Encuesta"; "Scene.Compose.Attachment.AttachmentBroken" = "Este %@ está roto y no puede @@ -194,7 +187,6 @@ subirse a Mastodon."; pulsa en el enlace para confirmar tu cuenta."; "Scene.ConfirmEmail.Title" = "Una última cosa."; "Scene.Favorite.Title" = "Tus Favoritos"; -"Scene.Hashtag.Prompt" = "%@ personas están hablando de esto"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Ver nuevas publicaciones"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Sin Conexión"; "Scene.HomeTimeline.NavigationBarState.Published" = "¡Publicado!"; @@ -213,9 +205,6 @@ 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.Dashboard.Accessibility.CountFollowers" = "%ld seguidores"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld siguiendo"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld publicaciones"; "Scene.Profile.Dashboard.Followers" = "seguidores"; "Scene.Profile.Dashboard.Following" = "siguiendo"; "Scene.Profile.Dashboard.Posts" = "publicaciones"; @@ -229,7 +218,6 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.Profile.SegmentedControl.Media" = "Multimedia"; "Scene.Profile.SegmentedControl.Posts" = "Publicaciones"; "Scene.Profile.SegmentedControl.Replies" = "Respuestas"; -"Scene.PublicTimeline.Title" = "Pública"; "Scene.Register.Error.Item.Agreement" = "Aceptación"; "Scene.Register.Error.Item.Email" = "Correo electrónico"; "Scene.Register.Error.Item.Locale" = "Idioma"; diff --git a/Mastodon/Resources/es.lproj/Localizable.stringsdict b/Mastodon/Resources/es.lproj/Localizable.stringsdict index 77bb9668e..9097a22c4 100644 --- a/Mastodon/Resources/es.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/es.lproj/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ publicaciones + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld personas están hablando de esto + 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 + + diff --git a/Mastodon/Resources/fr.lproj/Localizable.strings b/Mastodon/Resources/fr.lproj/Localizable.strings index fa1557021..e2a18359f 100644 --- a/Mastodon/Resources/fr.lproj/Localizable.strings +++ b/Mastodon/Resources/fr.lproj/Localizable.strings @@ -22,7 +22,7 @@ Veuillez vérifier votre accès à Internet."; "Common.Alerts.SignOut.Message" = "Voulez-vous vraiment vous déconnecter ?"; "Common.Alerts.SignOut.Title" = "Se déconnecter"; "Common.Alerts.SignUpFailure.Title" = "Échec de l'inscription"; -"Common.Alerts.VoteFailure.PollExpired" = "Le sondage a expiré"; +"Common.Alerts.VoteFailure.PollEnded" = "Le sondage est terminé"; "Common.Alerts.VoteFailure.Title" = "Le vote n’a pas pu être enregistré"; "Common.Controls.Actions.Add" = "Ajouter"; "Common.Controls.Actions.Back" = "Retour"; @@ -100,7 +100,6 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Status.ContentWarning" = "Avertissement de contenu"; "Common.Controls.Status.MediaContentWarning" = "Tapotez n’importe où pour révéler la publication"; "Common.Controls.Status.Poll.Closed" = "Fermé"; -"Common.Controls.Status.Poll.TimeLeft" = "%@ restantes"; "Common.Controls.Status.Poll.Vote" = "Voter"; "Common.Controls.Status.ShowPost" = "Montrer la publication"; "Common.Controls.Status.ShowUserProfile" = "Montrer le profil de l’utilisateur"; @@ -116,9 +115,6 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Tabs.Notification" = "Notification"; "Common.Controls.Tabs.Profile" = "Profil"; "Common.Controls.Tabs.Search" = "Rechercher"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ favoris"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ reblogs"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ réponses"; "Common.Controls.Timeline.Filtered" = "Filtré"; "Common.Controls.Timeline.Header.BlockedWarning" = "Vous ne pouvez pas voir le profil de cet utilisateur tant qu'il ne vous aura pas débloqué."; @@ -136,14 +132,11 @@ Votre profil ressemble à ça pour lui."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Chargement des publications manquantes..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Charger plus de réponses"; "Common.Controls.Timeline.Timestamp.Now" = "À l’instant"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "il y a %@"; "Scene.Compose.Accessibility.AppendAttachment" = "Joindre un document"; "Scene.Compose.Accessibility.AppendPoll" = "Ajouter un Sondage"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Sélecteur d’émojis personnalisé"; "Scene.Compose.Accessibility.DisableContentWarning" = "Désactiver l'avertissement de contenu"; "Scene.Compose.Accessibility.EnableContentWarning" = "Basculer l’avertissement de contenu"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "La limite d'entrée dépasse %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "La limite d'entrée reste %ld"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "Menu de Visibilité de la publication"; "Scene.Compose.Accessibility.RemovePoll" = "Retirer le sondage"; "Scene.Compose.Attachment.AttachmentBroken" = "Ce %@ est brisé et ne peut pas être @@ -193,7 +186,6 @@ téléversé sur Mastodon."; tapotez le lien pour confirmer votre compte."; "Scene.ConfirmEmail.Title" = "Une dernière chose."; "Scene.Favorite.Title" = "Vos favoris"; -"Scene.Hashtag.Prompt" = "%@ personnes parlent"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Voir les nouvelles publications"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Hors ligne"; "Scene.HomeTimeline.NavigationBarState.Published" = "Publié!"; @@ -212,9 +204,6 @@ tapotez le lien pour confirmer votre compte."; "Scene.Preview.Keyboard.ClosePreview" = "Fermer l'aperçu"; "Scene.Preview.Keyboard.ShowNext" = "Afficher le suivant"; "Scene.Preview.Keyboard.ShowPrevious" = "Afficher le précédent"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld abonnés"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld abonnés"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld publications"; "Scene.Profile.Dashboard.Followers" = "abonnés"; "Scene.Profile.Dashboard.Following" = "abonnements"; "Scene.Profile.Dashboard.Posts" = "publications"; @@ -228,7 +217,6 @@ tapotez le lien pour confirmer votre compte."; "Scene.Profile.SegmentedControl.Media" = "Média"; "Scene.Profile.SegmentedControl.Posts" = "Publications"; "Scene.Profile.SegmentedControl.Replies" = "Réponses"; -"Scene.PublicTimeline.Title" = "Public"; "Scene.Register.Error.Item.Agreement" = "Accord"; "Scene.Register.Error.Item.Email" = "Courriel"; "Scene.Register.Error.Item.Locale" = "Lieu"; diff --git a/Mastodon/Resources/fr.lproj/Localizable.stringsdict b/Mastodon/Resources/fr.lproj/Localizable.stringsdict index d31559e32..56e176d1e 100644 --- a/Mastodon/Resources/fr.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/fr.lproj/Localizable.stringsdict @@ -2,6 +2,38 @@ + 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 @@ -18,6 +50,22 @@ publications + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -98,5 +146,133 @@ %ld personnes en parlent + 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 + + diff --git a/Mastodon/Resources/ja.lproj/Localizable.strings b/Mastodon/Resources/ja.lproj/Localizable.strings index f22c539a1..cee195ced 100644 --- a/Mastodon/Resources/ja.lproj/Localizable.strings +++ b/Mastodon/Resources/ja.lproj/Localizable.strings @@ -22,7 +22,7 @@ "Common.Alerts.SignOut.Message" = "本当にサインアウトしますか?"; "Common.Alerts.SignOut.Title" = "サインアウト"; "Common.Alerts.SignUpFailure.Title" = "サインアップに失敗しました"; -"Common.Alerts.VoteFailure.PollExpired" = "投票は終了しました"; +"Common.Alerts.VoteFailure.PollEnded" = "投票は終了しました"; "Common.Alerts.VoteFailure.Title" = "投票の失敗"; "Common.Controls.Actions.Add" = "追加"; "Common.Controls.Actions.Back" = "戻る"; @@ -63,7 +63,7 @@ "Common.Controls.Friendship.BlockDomain" = "%@をブロック"; "Common.Controls.Friendship.BlockUser" = "%@をブロック"; "Common.Controls.Friendship.Blocked" = "ブロック済み"; -"Common.Controls.Friendship.EditInfo" = "Edit Info"; +"Common.Controls.Friendship.EditInfo" = "編集"; "Common.Controls.Friendship.Follow" = "フォロー"; "Common.Controls.Friendship.Following" = "フォロー中"; "Common.Controls.Friendship.Mute" = "ミュート"; @@ -100,7 +100,6 @@ "Common.Controls.Status.ContentWarning" = "コンテンツ警告"; "Common.Controls.Status.MediaContentWarning" = "どこかをタップして表示"; "Common.Controls.Status.Poll.Closed" = "クローズド"; -"Common.Controls.Status.Poll.TimeLeft" = "残り%@"; "Common.Controls.Status.Poll.Vote" = "投票"; "Common.Controls.Status.ShowPost" = "トゥートを見る"; "Common.Controls.Status.ShowUserProfile" = "プロフィールを見る"; @@ -116,9 +115,6 @@ "Common.Controls.Tabs.Notification" = "通知"; "Common.Controls.Tabs.Profile" = "プロフィール"; "Common.Controls.Tabs.Search" = "検索"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ いいね"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ ブースト"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ リプライ"; "Common.Controls.Timeline.Filtered" = "フィルター済み"; "Common.Controls.Timeline.Header.BlockedWarning" = "ブロックされているようです..."; "Common.Controls.Timeline.Header.BlockingWarning" = "ブロックを解除するまでこのユーザーをみることはできません。 @@ -133,14 +129,11 @@ "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "読込中..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "リプライをもっとみる"; "Common.Controls.Timeline.Timestamp.Now" = "今"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "%@前"; "Scene.Compose.Accessibility.AppendAttachment" = "アタッチメントの追加"; "Scene.Compose.Accessibility.AppendPoll" = "投票を追加"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "カスタム絵文字ピッカー"; "Scene.Compose.Accessibility.DisableContentWarning" = "コンテンツ警告を無効にする"; "Scene.Compose.Accessibility.EnableContentWarning" = "コンテンツ警告を有効にする"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "最大文字数を超えました。 %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "入力制限は残り %ld"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "投稿の表示メニュー"; "Scene.Compose.Accessibility.RemovePoll" = "投票を消去"; "Scene.Compose.Attachment.AttachmentBroken" = "%@は壊れていてMastodonにアップロードできません。"; @@ -188,7 +181,6 @@ "Scene.ConfirmEmail.Subtitle" = "先程 %@ にメールを送信しました。リンクをタップしてアカウントを確認してください。"; "Scene.ConfirmEmail.Title" = "さいごにもうひとつ。"; "Scene.Favorite.Title" = "あなたのいいね"; -"Scene.Hashtag.Prompt" = "%@人がこの話題について話しています"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "新しいトゥートを見る"; "Scene.HomeTimeline.NavigationBarState.Offline" = "オフライン"; "Scene.HomeTimeline.NavigationBarState.Published" = "トゥートしました!"; @@ -207,9 +199,6 @@ "Scene.Preview.Keyboard.ClosePreview" = "プレビューを閉じる"; "Scene.Preview.Keyboard.ShowNext" = "次を見る"; "Scene.Preview.Keyboard.ShowPrevious" = "前を見る"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld フォロワー"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld フォロー中"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld トゥート"; "Scene.Profile.Dashboard.Followers" = "フォロワー"; "Scene.Profile.Dashboard.Following" = "フォロー中"; "Scene.Profile.Dashboard.Posts" = "トゥート"; @@ -223,7 +212,6 @@ "Scene.Profile.SegmentedControl.Media" = "メディア"; "Scene.Profile.SegmentedControl.Posts" = "トゥート"; "Scene.Profile.SegmentedControl.Replies" = "リプライ"; -"Scene.PublicTimeline.Title" = "公開"; "Scene.Register.Error.Item.Agreement" = "契約"; "Scene.Register.Error.Item.Email" = "メール"; "Scene.Register.Error.Item.Locale" = "地域"; diff --git a/Mastodon/Resources/ja.lproj/Localizable.stringsdict b/Mastodon/Resources/ja.lproj/Localizable.stringsdict index caa81fb6a..82230ebcd 100644 --- a/Mastodon/Resources/ja.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/ja.lproj/Localizable.stringsdict @@ -2,6 +2,34 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld characters + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -16,6 +44,20 @@ posts + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld posts + + plural.count.favorite NSStringLocalizedFormatKey @@ -86,5 +128,117 @@ %ld people talking + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld seconds left + + diff --git a/Mastodon/Resources/nl.lproj/InfoPlist.strings b/Mastodon/Resources/nl.lproj/InfoPlist.strings new file mode 100644 index 000000000..a45991068 --- /dev/null +++ b/Mastodon/Resources/nl.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +"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"; \ No newline at end of file diff --git a/Mastodon/Resources/nl.lproj/Localizable.strings b/Mastodon/Resources/nl.lproj/Localizable.strings new file mode 100644 index 000000000..0ff60b4c0 --- /dev/null +++ b/Mastodon/Resources/nl.lproj/Localizable.strings @@ -0,0 +1,332 @@ +"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.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.Delete" = "Verwijderen"; +"Common.Alerts.DeletePost.Title" = "Weet u zeker dat u dit bericht wilt verwijderen?"; +"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.EditProfileFailure.Title" = "Profiel bewerken mislukt"; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Slechts één video kan aan een bericht worden gekoppeld."; +"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.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.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.Back" = "Terug"; +"Common.Controls.Actions.BlockDomain" = "Blokkeer %@"; +"Common.Controls.Actions.Cancel" = "Annuleren"; +"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.Discard" = "Weggooien"; +"Common.Controls.Actions.Done" = "Klaar"; +"Common.Controls.Actions.Edit" = "Bewerken"; +"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.Open" = "Open"; +"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.ReportUser" = "Rapporteer %@"; +"Common.Controls.Actions.Save" = "Opslaan"; +"Common.Controls.Actions.SavePhoto" = "Foto Opslaan"; +"Common.Controls.Actions.SeeMore" = "Meer"; +"Common.Controls.Actions.Settings" = "Instellingen"; +"Common.Controls.Actions.Share" = "Delen"; +"Common.Controls.Actions.SharePost" = "Bericht Delen"; +"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.TryAgain" = "Probeer Opnieuw"; +"Common.Controls.Actions.UnblockDomain" = "Deblokkeer %@"; +"Common.Controls.Friendship.Block" = "Blokkeren"; +"Common.Controls.Friendship.BlockDomain" = "Blokkeer %@"; +"Common.Controls.Friendship.BlockUser" = "Blokkeer %@"; +"Common.Controls.Friendship.Blocked" = "Geblokkeerd"; +"Common.Controls.Friendship.EditInfo" = "Bewerken"; +"Common.Controls.Friendship.Follow" = "Volgen"; +"Common.Controls.Friendship.Following" = "Gevolgd"; +"Common.Controls.Friendship.Mute" = "Negeren"; +"Common.Controls.Friendship.MuteUser" = "Negeer %@"; +"Common.Controls.Friendship.Muted" = "Genegeerd"; +"Common.Controls.Friendship.Pending" = "In afwachting"; +"Common.Controls.Friendship.Request" = "Verzoeken"; +"Common.Controls.Friendship.Unblock" = "Deblokkeer"; +"Common.Controls.Friendship.UnblockUser" = "Deblokkeer %@"; +"Common.Controls.Friendship.Unmute" = "Niet langer negeren"; +"Common.Controls.Friendship.UnmuteUser" = "%@ niet langer negeren"; +"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.SegmentedControl.NextSection" = "Volgende Sectie"; +"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Vorige Sectie"; +"Common.Controls.Keyboard.Timeline.NextStatus" = "Volgend Bericht"; +"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Open Auteursprofiel"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Open Delersprofiel"; +"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.ToggleReblog" = "Delen bij berichten omschakelen"; +"Common.Controls.Status.Actions.Favorite" = "Toevoegen aan Favorieten"; +"Common.Controls.Status.Actions.Menu" = "Menu"; +"Common.Controls.Status.Actions.Reblog" = "Delen"; +"Common.Controls.Status.Actions.Reply" = "Reageren"; +"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.ShowPost" = "Toon Bericht"; +"Common.Controls.Status.ShowUserProfile" = "Toon Gebruikersprofiel"; +"Common.Controls.Status.Tag.Email" = "Email"; +"Common.Controls.Status.Tag.Emoji" = "Emoji"; +"Common.Controls.Status.Tag.Hashtag" = "Hashtag"; +"Common.Controls.Status.Tag.Link" = "Link"; +"Common.Controls.Status.Tag.Mention" = "Vermelden"; +"Common.Controls.Status.Tag.Url" = "URL"; +"Common.Controls.Status.UserReblogged" = "%@ gedeeld"; +"Common.Controls.Status.UserRepliedTo" = "Reactie op %@"; +"Common.Controls.Tabs.Home" = "Start"; +"Common.Controls.Tabs.Notification" = "Melding"; +"Common.Controls.Tabs.Profile" = "Profiel"; +"Common.Controls.Tabs.Search" = "Zoeken"; +"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. +Uw profiel ziet er zo uit voor hen."; +"Common.Controls.Timeline.Header.NoStatusFound" = "Geen Berichten Gevonden"; +"Common.Controls.Timeline.Header.SuspendedWarning" = "Deze gebruiker is geschorst."; +"Common.Controls.Timeline.Header.UserBlockedWarning" = "U kunt het profiel van %@ niet bekijken zolang u geblokkeerd bent."; +"Common.Controls.Timeline.Header.UserBlockingWarning" = "U kunt het profiel van %@ niet bekijken zolang deze gebruiker geblokkeerd is. +Uw profiel ziet er zo uit voor hen."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@'s account is geschorst."; +"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Resterende berichten laden"; +"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Resterende berichten laden..."; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Toon meer reacties"; +"Common.Controls.Timeline.Timestamp.Now" = "Nu"; +"Scene.Compose.Accessibility.AppendAttachment" = "Bijlage Toevoegen"; +"Scene.Compose.Accessibility.AppendPoll" = "Peiling Toevoegen"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "Eigen Emojikiezer"; +"Scene.Compose.Accessibility.DisableContentWarning" = "Inhoudswaarschuwing Uitschakelen"; +"Scene.Compose.Accessibility.EnableContentWarning" = "Inhoudswaarschuwing inschakelen"; +"Scene.Compose.Accessibility.PostVisibilityMenu" = "Berichtzichtbaarheidsmenu"; +"Scene.Compose.Accessibility.RemovePoll" = "Peiling verwijderen"; +"Scene.Compose.Attachment.AttachmentBroken" = "Deze %@ is corrupt en kan niet geüpload worden naar Mastodon."; +"Scene.Compose.Attachment.DescriptionPhoto" = "Omschrijf de foto voor mensen met een visuele beperking..."; +"Scene.Compose.Attachment.DescriptionVideo" = "Omschrijf de video voor mensen met een visuele beperking..."; +"Scene.Compose.Attachment.Photo" = "foto"; +"Scene.Compose.Attachment.Video" = "video"; +"Scene.Compose.AutoComplete.SpaceToAdd" = "Spaties toe te voegen"; +"Scene.Compose.ComposeAction" = "Publiceren"; +"Scene.Compose.ContentInputPlaceholder" = "Schrijf of plak wat in je hoofd rondzweeft"; +"Scene.Compose.ContentWarning.Placeholder" = "Schrijf hier een nauwkeurige waarschuwing..."; +"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Bijlage Toevoegen - %@"; +"Scene.Compose.Keyboard.DiscardPost" = "Bericht Verwijderen"; +"Scene.Compose.Keyboard.PublishPost" = "Bericht Publiceren"; +"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Zichtbaarheid Selecteren - %@"; +"Scene.Compose.Keyboard.ToggleContentWarning" = "Inhoudswaarschuwing Omschakelen"; +"Scene.Compose.Keyboard.TogglePoll" = "Peiling omschakelen"; +"Scene.Compose.MediaSelection.Browse" = "Bladeren"; +"Scene.Compose.MediaSelection.Camera" = "Foto Maken"; +"Scene.Compose.MediaSelection.PhotoLibrary" = "Fotobibliotheek"; +"Scene.Compose.Poll.DurationTime" = "Duur: %@"; +"Scene.Compose.Poll.OneDay" = "1 Dag"; +"Scene.Compose.Poll.OneHour" = "1 Uur"; +"Scene.Compose.Poll.OptionNumber" = "Optie %ld"; +"Scene.Compose.Poll.SevenDays" = "7 Dagen"; +"Scene.Compose.Poll.SixHours" = "6 Uur"; +"Scene.Compose.Poll.ThirtyMinutes" = "30 minuten"; +"Scene.Compose.Poll.ThreeDays" = "3 Dagen"; +"Scene.Compose.ReplyingToUser" = "reageren op %@"; +"Scene.Compose.Title.NewPost" = "Nieuw Bericht"; +"Scene.Compose.Title.NewReply" = "Nieuwe Reactie"; +"Scene.Compose.Visibility.Direct" = "Alleen vermelde gebruikers"; +"Scene.Compose.Visibility.Private" = "Alleen volgers"; +"Scene.Compose.Visibility.Public" = "Openbaar"; +"Scene.Compose.Visibility.Unlisted" = "Niet-vermeld"; +"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Ik heb geen email ontvangen"; +"Scene.ConfirmEmail.Button.OpenEmailApp" = "Email Openen"; +"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"; +"Scene.ConfirmEmail.OpenEmailApp.Description" = "We hebben u een e-mail gestuurd. Controleer ook uw de ongewenste email filter."; +"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail"; +"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Applicatie"; +"Scene.ConfirmEmail.OpenEmailApp.Title" = "Ga naar uw inbox."; +"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.Favorite.Title" = "Uw favorieten"; +"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Bekijk nieuwe berichten"; +"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; +"Scene.HomeTimeline.NavigationBarState.Published" = "Gepubliceerd!"; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "Bericht publiceren..."; +"Scene.HomeTimeline.Title" = "Start"; +"Scene.Notification.Action.Favourite" = "heeft uw bericht als favoriet toegevoegd"; +"Scene.Notification.Action.Follow" = "volgt u"; +"Scene.Notification.Action.FollowRequest" = "heeft gevraagd om u te volgen"; +"Scene.Notification.Action.Mention" = "vermeldde u"; +"Scene.Notification.Action.Poll" = "Uw poll is geëindigd"; +"Scene.Notification.Action.Reblog" = "deelde uw bericht"; +"Scene.Notification.Keyobard.ShowEverything" = "Alles weergeven"; +"Scene.Notification.Keyobard.ShowMentions" = "Vermeldingen weergeven"; +"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.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.ConfirmUnblockUsre.Message" = "Bevestig om %@ te deblokkeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Account niet langer negeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bevestig om %@ te negeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Account Negeren"; +"Scene.Profile.SegmentedControl.Media" = "Media"; +"Scene.Profile.SegmentedControl.Posts" = "Berichten"; +"Scene.Profile.SegmentedControl.Replies" = "Reacties"; +"Scene.Register.Error.Item.Agreement" = "Overeenkomst"; +"Scene.Register.Error.Item.Email" = "Email"; +"Scene.Register.Error.Item.Locale" = "Taal"; +"Scene.Register.Error.Item.Password" = "Wachtwoord"; +"Scene.Register.Error.Item.Reason" = "Reden"; +"Scene.Register.Error.Item.Username" = "Gebruikersnaam"; +"Scene.Register.Error.Reason.Accepted" = "%@ moet geaccepteerd worden"; +"Scene.Register.Error.Reason.Blank" = "%@ is vereist"; +"Scene.Register.Error.Reason.Blocked" = "%@ gebruikt een niet-toegestane emailprovider"; +"Scene.Register.Error.Reason.Inclusion" = "%@ is een niet-ondersteunde waarde"; +"Scene.Register.Error.Reason.Invalid" = "%@ is ongeldig"; +"Scene.Register.Error.Reason.Reserved" = "%@ is een gereserveerd woord"; +"Scene.Register.Error.Reason.Taken" = "%@ is reeds in gebruik"; +"Scene.Register.Error.Reason.TooLong" = "%@ is te lang"; +"Scene.Register.Error.Reason.TooShort" = "%@ is te kort"; +"Scene.Register.Error.Reason.Unreachable" = "%@ lijkt niet te bestaan"; +"Scene.Register.Error.Special.EmailInvalid" = "Dit is geen geldig emailadres"; +"Scene.Register.Error.Special.PasswordTooShort" = "Het wachtwoord is te kort (het moet ten minste 8 tekens bevatten)"; +"Scene.Register.Error.Special.UsernameInvalid" = "Een gebruikersnaam mag alleen alfanumerieke karakters en lage streepjes bevatten"; +"Scene.Register.Error.Special.UsernameTooLong" = "De gebruikersnaam is te lang (het kan maximaal 30 karakters bevatten)"; +"Scene.Register.Input.Avatar.Delete" = "Verwijderen"; +"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.Hint" = "Uw wachtwoord moet ten minste acht tekens bevatten"; +"Scene.Register.Input.Password.Placeholder" = "wachtwoord"; +"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.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.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"; +"Scene.Search.Recommend.ButtonText" = "Alles weergeven"; +"Scene.Search.Recommend.HashTag.Description" = "Hashtags die behoorlijk wat aandacht krijgen"; +"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ gebruikers praten hierover"; +"Scene.Search.Recommend.HashTag.Title" = "Trending op Mastodon"; +"Scene.Search.SearchBar.Cancel" = "Annuleren"; +"Scene.Search.SearchBar.Placeholder" = "Zoek hashtags en gebruikers"; +"Scene.Search.Searching.Clear" = "Wissen"; +"Scene.Search.Searching.EmptyState.NoResults" = "Geen resultaten"; +"Scene.Search.Searching.RecentSearch" = "Recente zoekopdrachten"; +"Scene.Search.Searching.Segment.All" = "Alles"; +"Scene.Search.Searching.Segment.Hashtags" = "Hashtags"; +"Scene.Search.Searching.Segment.People" = "Gebruikers"; +"Scene.Search.Searching.Segment.Posts" = "Berichten"; +"Scene.Search.Title" = "Zoeken"; +"Scene.ServerPicker.Button.Category.Academia" = "academisch"; +"Scene.ServerPicker.Button.Category.Activism" = "activisme"; +"Scene.ServerPicker.Button.Category.All" = "Alles"; +"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Categorie: Alles"; +"Scene.ServerPicker.Button.Category.Art" = "kunst"; +"Scene.ServerPicker.Button.Category.Food" = "eten"; +"Scene.ServerPicker.Button.Category.Furry" = "furry"; +"Scene.ServerPicker.Button.Category.Games" = "spellen"; +"Scene.ServerPicker.Button.Category.General" = "algemeen"; +"Scene.ServerPicker.Button.Category.Journalism" = "journalistiek"; +"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt"; +"Scene.ServerPicker.Button.Category.Music" = "muziek"; +"Scene.ServerPicker.Button.Category.Regional" = "regionaal"; +"Scene.ServerPicker.Button.Category.Tech" = "technologie"; +"Scene.ServerPicker.Button.SeeLess" = "Minder Weergeven"; +"Scene.ServerPicker.Button.SeeMore" = "Meer Weergeven"; +"Scene.ServerPicker.EmptyState.BadNetwork" = "Er is een fout opgetreden bij het laden van de gegevens. Controleer uw internetverbinding."; +"Scene.ServerPicker.EmptyState.FindingServers" = "Beschikbare servers zoeken..."; +"Scene.ServerPicker.EmptyState.NoResults" = "Geen resultaten"; +"Scene.ServerPicker.Input.Placeholder" = "Zoek uw server of sluit u bij een nieuwe server aan..."; +"Scene.ServerPicker.Label.Category" = "CATEGORIE"; +"Scene.ServerPicker.Label.Language" = "TAAL"; +"Scene.ServerPicker.Label.Users" = "GEBRUIKERS"; +"Scene.ServerPicker.Title" = "Kies een server, welke dan ook."; +"Scene.ServerRules.Button.Confirm" = "Ik Ga Akkoord"; +"Scene.ServerRules.PrivacyPolicy" = "privacybeleid"; +"Scene.ServerRules.Prompt" = "Als u verder gaat dan gaat u akkoord met de servicevoorwaarden en privacybeleid van %@."; +"Scene.ServerRules.Subtitle" = "Deze regels zijn ingesteld door de beheerders van %@."; +"Scene.ServerRules.TermsOfService" = "servicevoorwaarden"; +"Scene.ServerRules.Title" = "Enkele basisregels."; +"Scene.Settings.Footer.MastodonDescription" = "Mastodon is vrije software. Je kunt problemen melden op GitHub via %@ (%@)"; +"Scene.Settings.Keyboard.CloseSettingsWindow" = "Instellingsvenster Sluiten"; +"Scene.Settings.Section.Appearance.Automatic" = "Automatisch"; +"Scene.Settings.Section.Appearance.Dark" = "Altijd Donker"; +"Scene.Settings.Section.Appearance.Light" = "Altijd Licht"; +"Scene.Settings.Section.Appearance.Title" = "Uiterlijk"; +"Scene.Settings.Section.BoringZone.AccountSettings" = "Accountinstellingen"; +"Scene.Settings.Section.BoringZone.Privacy" = "Privacybeleid"; +"Scene.Settings.Section.BoringZone.Terms" = "Servicevoorwaarden"; +"Scene.Settings.Section.BoringZone.Title" = "De Saaie Instellingen"; +"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"; +"Scene.Settings.Section.Notifications.Mentions" = "Mij vermeldt"; +"Scene.Settings.Section.Notifications.Title" = "Meldingen"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "iemand"; +"Scene.Settings.Section.Notifications.Trigger.Follow" = "iemand die ik volg"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "een volger"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "niemand"; +"Scene.Settings.Section.Notifications.Trigger.Title" = "Stuur mij een melding wanneer"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Geanimeerde avatars uitschakelen"; +"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Geanimeerde emojis uitschakelen"; +"Scene.Settings.Section.Preference.Title" = "Instellingen"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Echt zwarte donker uiterlijk"; +"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Gebruik de standaard browser om links te openen"; +"Scene.Settings.Section.SpicyZone.Clear" = "Mediacache wissen"; +"Scene.Settings.Section.SpicyZone.Signout" = "Afmelden"; +"Scene.Settings.Section.SpicyZone.Title" = "De Gevaarlijke Instellingen"; +"Scene.Settings.Title" = "Instellingen"; +"Scene.SuggestionAccount.FollowExplain" = "Wanneer u iemand volgt, ziet u hun berichten op de startpagina."; +"Scene.SuggestionAccount.Title" = "Zoek Mensen om te Volgen"; +"Scene.Thread.BackTitle" = "Bericht"; +"Scene.Thread.Title" = "Bericht van %@"; +"Scene.Welcome.Slogan" = "Sociale media terug in uw handen."; \ No newline at end of file diff --git a/Mastodon/Resources/nl.lproj/Localizable.stringsdict b/Mastodon/Resources/nl.lproj/Localizable.stringsdict new file mode 100644 index 000000000..e69582f04 --- /dev/null +++ b/Mastodon/Resources/nl.lproj/Localizable.stringsdict @@ -0,0 +1,278 @@ + + + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Invoer limiet overschrijdt %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 teken + other + %ld tekens + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Invoerlimiet blijft %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 teken + other + %ld tekens + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + bericht + other + berichten + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 bericht + other + %ld berichten + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favoriet + other + %ld favorieten + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gedeeld bericht + other + %ld gedeelde berichten + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 stem + other + %ld stemmen + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 kiezer + other + %ld kiezers + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 gebruiker die praat + other + %ld gebruikers die praten + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 volgend + other + %ld volgend + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 volger + other + %ld volgers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 jaar resterend + other + %ld jaren resterend + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 maanden resterend + other + %ld maanden resterend + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dag resterend + other + %ld dagen resterend + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 uur resterend + other + %ld uur resterend + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minuut resterend + other + %ld minuten resterend + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 seconde resterend + other + %ld seconden resterend + + + + diff --git a/Mastodon/Resources/zh-Hans.lproj/Localizable.strings b/Mastodon/Resources/zh-Hans.lproj/Localizable.strings index 40c3fe665..d85215d85 100644 --- a/Mastodon/Resources/zh-Hans.lproj/Localizable.strings +++ b/Mastodon/Resources/zh-Hans.lproj/Localizable.strings @@ -22,7 +22,7 @@ "Common.Alerts.SignOut.Message" = "您确定要退出吗?"; "Common.Alerts.SignOut.Title" = "退出"; "Common.Alerts.SignUpFailure.Title" = "注册失败"; -"Common.Alerts.VoteFailure.PollExpired" = "此投票已过期"; +"Common.Alerts.VoteFailure.PollEnded" = "投票已结束"; "Common.Alerts.VoteFailure.Title" = "投票失败"; "Common.Controls.Actions.Add" = "添加"; "Common.Controls.Actions.Back" = "返回"; @@ -63,7 +63,7 @@ "Common.Controls.Friendship.BlockDomain" = "屏蔽 %@"; "Common.Controls.Friendship.BlockUser" = "屏蔽 %@"; "Common.Controls.Friendship.Blocked" = "已屏蔽"; -"Common.Controls.Friendship.EditInfo" = "编辑资料"; +"Common.Controls.Friendship.EditInfo" = "编辑"; "Common.Controls.Friendship.Follow" = "关注"; "Common.Controls.Friendship.Following" = "正在关注"; "Common.Controls.Friendship.Mute" = "静音"; @@ -100,7 +100,6 @@ "Common.Controls.Status.ContentWarning" = "内容警告"; "Common.Controls.Status.MediaContentWarning" = "点击任意位置显示"; "Common.Controls.Status.Poll.Closed" = "已关闭"; -"Common.Controls.Status.Poll.TimeLeft" = "剩余 %@"; "Common.Controls.Status.Poll.Vote" = "投票"; "Common.Controls.Status.ShowPost" = "显示帖子"; "Common.Controls.Status.ShowUserProfile" = "查看用户个人资料"; @@ -116,9 +115,6 @@ "Common.Controls.Tabs.Notification" = "通知"; "Common.Controls.Tabs.Profile" = "个人资料"; "Common.Controls.Tabs.Search" = "搜索"; -"Common.Controls.Timeline.Accessibility.CountFavorites" = "%@ 个喜欢"; -"Common.Controls.Timeline.Accessibility.CountReblogs" = "%@ 条转发"; -"Common.Controls.Timeline.Accessibility.CountReplies" = "%@ 条回复"; "Common.Controls.Timeline.Filtered" = "已过滤"; "Common.Controls.Timeline.Header.BlockedWarning" = "您不能查看此用户的个人资料 直到他们解除屏蔽。"; @@ -137,14 +133,11 @@ "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "正在加载帖子..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "显示更多回复"; "Common.Controls.Timeline.Timestamp.Now" = "现在"; -"Common.Controls.Timeline.Timestamp.TimeAgo" = "%@"; "Scene.Compose.Accessibility.AppendAttachment" = "添加附件"; "Scene.Compose.Accessibility.AppendPoll" = "添加投票"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "自定义表情选择器"; "Scene.Compose.Accessibility.DisableContentWarning" = "关闭内容警告"; "Scene.Compose.Accessibility.EnableContentWarning" = "启用内容警告"; -"Scene.Compose.Accessibility.InputLimitExceedsCount" = "输入字符限制超出 %ld"; -"Scene.Compose.Accessibility.InputLimitRemainsCount" = "输入字符限制剩余 %ld"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "帖子可见性"; "Scene.Compose.Accessibility.RemovePoll" = "移除投票"; "Scene.Compose.Attachment.AttachmentBroken" = "%@已损坏 @@ -194,7 +187,6 @@ 点击链接确认你的帐户。"; "Scene.ConfirmEmail.Title" = "最后一件事。"; "Scene.Favorite.Title" = "你的喜欢"; -"Scene.Hashtag.Prompt" = "%@ 人正在讨论"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "查看新帖子"; "Scene.HomeTimeline.NavigationBarState.Offline" = "离线"; "Scene.HomeTimeline.NavigationBarState.Published" = "已发送"; @@ -213,9 +205,6 @@ "Scene.Preview.Keyboard.ClosePreview" = "关闭预览"; "Scene.Preview.Keyboard.ShowNext" = "显示下一个"; "Scene.Preview.Keyboard.ShowPrevious" = "显示前一个"; -"Scene.Profile.Dashboard.Accessibility.CountFollowers" = "%ld 个关注者"; -"Scene.Profile.Dashboard.Accessibility.CountFollowing" = "%ld 正在关注"; -"Scene.Profile.Dashboard.Accessibility.CountPosts" = "%ld 个帖子"; "Scene.Profile.Dashboard.Followers" = "关注者"; "Scene.Profile.Dashboard.Following" = "正在关注"; "Scene.Profile.Dashboard.Posts" = "帖子"; @@ -229,7 +218,6 @@ "Scene.Profile.SegmentedControl.Media" = "媒体"; "Scene.Profile.SegmentedControl.Posts" = "帖子"; "Scene.Profile.SegmentedControl.Replies" = "回复"; -"Scene.PublicTimeline.Title" = "公开"; "Scene.Register.Error.Item.Agreement" = "协议"; "Scene.Register.Error.Item.Email" = "电子邮箱"; "Scene.Register.Error.Item.Locale" = "地区"; diff --git a/Mastodon/Resources/zh-Hans.lproj/Localizable.stringsdict b/Mastodon/Resources/zh-Hans.lproj/Localizable.stringsdict index e94476863..bb8064914 100644 --- a/Mastodon/Resources/zh-Hans.lproj/Localizable.stringsdict +++ b/Mastodon/Resources/zh-Hans.lproj/Localizable.stringsdict @@ -2,6 +2,34 @@ + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + 输入字符限制超出 %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个字符 + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + 输入字符限制剩余 %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个字符 + + plural.count.metric_formatted.post NSStringLocalizedFormatKey @@ -13,7 +41,21 @@ NSStringFormatValueTypeKey ld other - 帖子 + 个帖子 + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个帖子 plural.count.favorite @@ -86,5 +128,117 @@ %ld 人正在讨论 + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 人正在关注 + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + %ld 个关注者 + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 年 + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 个月 + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 天 + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 小时 + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 分钟 + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + other + 剩余 %ld 秒 + + diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index 156680496..275c8e456 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -397,11 +397,11 @@ extension ComposeViewController { case _ where count < 0: self.composeToolbarView.characterCountLabel.font = .monospacedDigitSystemFont(ofSize: 24, weight: .bold) self.composeToolbarView.characterCountLabel.textColor = Asset.Colors.danger.color - self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.Scene.Compose.Accessibility.inputLimitExceedsCount(abs(count)) + self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.A11y.Plural.Count.inputLimitExceeds(abs(count)) default: self.composeToolbarView.characterCountLabel.font = .monospacedDigitSystemFont(ofSize: 15, weight: .regular) self.composeToolbarView.characterCountLabel.textColor = Asset.Colors.Label.secondary.color - self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.Scene.Compose.Accessibility.inputLimitRemainsCount(count) + self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.A11y.Plural.Count.inputLimitRemains(count) } } .store(in: &disposeBag) diff --git a/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift b/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift index 49406144b..f6e700fbb 100644 --- a/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift +++ b/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift @@ -212,7 +212,7 @@ extension ComposeViewModel: UITableViewDataSource { assertionFailure() } // set date - cell.statusView.dateLabel.text = status.createdAt.slowedTimeAgoSinceNow + cell.statusView.dateLabel.text = status.createdAt.localizedSlowedTimeAgoSinceNow } return cell case .status: diff --git a/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift b/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift index fd3f5bce0..8f739315d 100644 --- a/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift +++ b/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift @@ -107,6 +107,8 @@ extension ComposeViewModel.PublishState { return subscriptions }() + let idempotencyKey = viewModel.idempotencyKey.value + publishingSubscription = Publishers.MergeMany(updateMediaQuerySubscriptions) .collect() .flatMap { attachments -> AnyPublisher, Error> in @@ -122,6 +124,7 @@ extension ComposeViewModel.PublishState { ) return viewModel.context.apiService.publishStatus( domain: domain, + idempotencyKey: idempotencyKey, query: query, mastodonAuthenticationBox: mastodonAuthenticationBox ) diff --git a/Mastodon/Scene/Compose/ComposeViewModel.swift b/Mastodon/Scene/Compose/ComposeViewModel.swift index 601aeae04..f91565d38 100644 --- a/Mastodon/Scene/Compose/ComposeViewModel.swift +++ b/Mastodon/Scene/Compose/ComposeViewModel.swift @@ -58,7 +58,10 @@ final class ComposeViewModel: NSObject { }() private(set) lazy var publishStateMachinePublisher = CurrentValueSubject(nil) private(set) var publishDate = Date() // update it when enter Publishing state - + + // TODO: group post material into Hashable class + var idempotencyKey = CurrentValueSubject(UUID().uuidString) + // UI & UX let title: CurrentValueSubject let shouldDismiss = CurrentValueSubject(true) @@ -338,6 +341,9 @@ final class ComposeViewModel: NSObject { if currentState is MastodonAttachmentService.UploadState.Finish { continue } + if currentState is MastodonAttachmentService.UploadState.Processing { + continue + } if currentState is MastodonAttachmentService.UploadState.Uploading { break } @@ -380,6 +386,56 @@ final class ComposeViewModel: NSObject { self.isPollToolbarButtonEnabled.value = !shouldPollDisable }) .store(in: &disposeBag) + + // calculate `Idempotency-Key` + let content = Publishers.CombineLatest3( + composeStatusAttribute.isContentWarningComposing, + composeStatusAttribute.contentWarningContent, + composeStatusAttribute.composeContent + ) + .map { isContentWarningComposing, contentWarningContent, composeContent -> String in + if isContentWarningComposing { + return contentWarningContent + (composeContent ?? "") + } else { + return composeContent ?? "" + } + } + let attachmentIDs = attachmentServices.map { attachments -> String in + let attachmentIDs = attachments.compactMap { $0.attachment.value?.id } + return attachmentIDs.joined(separator: ",") + } + let pollOptionsAndDuration = Publishers.CombineLatest3( + isPollComposing, + pollOptionAttributes, + pollExpiresOptionAttribute.expiresOption + ) + .map { isPollComposing, pollOptionAttributes, expiresOption -> String in + guard isPollComposing else { + return "" + } + + let pollOptions = pollOptionAttributes.map { $0.option.value }.joined(separator: ",") + return pollOptions + expiresOption.rawValue + } + + Publishers.CombineLatest4( + content, + attachmentIDs, + pollOptionsAndDuration, + selectedStatusVisibility + ) + .map { content, attachmentIDs, pollOptionsAndDuration, selectedStatusVisibility -> String in + var hasher = Hasher() + hasher.combine(content) + hasher.combine(attachmentIDs) + hasher.combine(pollOptionsAndDuration) + hasher.combine(selectedStatusVisibility.visibility.rawValue) + let hashValue = hasher.finalize() + return "\(hashValue)" + } + .assign(to: \.value, on: idempotencyKey) + .store(in: &disposeBag) + } deinit { diff --git a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift index c1cda22a6..99fe88ce7 100644 --- a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift +++ b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift @@ -75,7 +75,7 @@ final class ComposeToolbarView: UIView { label.font = .systemFont(ofSize: 15, weight: .regular) label.text = "500" label.textColor = Asset.Colors.Label.secondary.color - label.accessibilityLabel = L10n.Scene.Compose.Accessibility.inputLimitRemainsCount(500) + label.accessibilityLabel = L10n.A11y.Plural.Count.inputLimitRemains(500) return label }() diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift index 8d4a8b37f..9801d701a 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift @@ -166,7 +166,7 @@ extension HashtagTimelineViewController { .prefix(2) .compactMap({ Int($0.accounts) }) .reduce(0, +) - subtitle = L10n.Scene.Hashtag.prompt("\(peopleTalkingNumber)") + subtitle = L10n.Plural.peopleTalking(peopleTalkingNumber) } } diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index fa54abf7b..f78079d2e 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -522,7 +522,7 @@ extension ProfileViewController { let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.numberLabel.text = text self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.isAccessibilityElement = true - self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.accessibilityLabel = L10n.Scene.Profile.Dashboard.Accessibility.countPosts(count ?? 0) + self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.accessibilityLabel = L10n.Plural.Count.post(count ?? 0) } .store(in: &disposeBag) viewModel.followingCount @@ -531,7 +531,7 @@ extension ProfileViewController { let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.numberLabel.text = text self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.isAccessibilityElement = true - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.accessibilityLabel = L10n.Scene.Profile.Dashboard.Accessibility.countFollowing(count ?? 0) + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.accessibilityLabel = L10n.Plural.Count.following(count ?? 0) } .store(in: &disposeBag) viewModel.followersCount @@ -540,7 +540,7 @@ extension ProfileViewController { let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.numberLabel.text = text self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.isAccessibilityElement = true - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.accessibilityLabel = L10n.Scene.Profile.Dashboard.Accessibility.countFollowers(count ?? 0) + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.accessibilityLabel = L10n.Plural.Count.follower(count ?? 0) } .store(in: &disposeBag) viewModel.needsPagingEnabled diff --git a/Mastodon/Scene/Search/Search/SearchViewModel.swift b/Mastodon/Scene/Search/Search/SearchViewModel.swift index 1c2456091..feae75190 100644 --- a/Mastodon/Scene/Search/Search/SearchViewModel.swift +++ b/Mastodon/Scene/Search/Search/SearchViewModel.swift @@ -63,7 +63,7 @@ final class SearchViewModel: NSObject { snapshot.appendSections([.main]) snapshot.appendItems(response.value, toSection: .main) dataSource.apply(snapshot, animatingDifferences: false, completion: nil) - case .failure(let error): + case .failure: break } } @@ -99,7 +99,7 @@ final class SearchViewModel: NSObject { switch result { case .success(let userIDs): self.receiveAccounts(ids: userIDs) - case .failure(let error): + case .failure: break } } diff --git a/Mastodon/Scene/Share/View/Content/StatusView.swift b/Mastodon/Scene/Share/View/Content/StatusView.swift index 49452e1b4..664939fc4 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView.swift @@ -168,7 +168,7 @@ final class StatusView: UIView { let label = UILabel() label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) label.textColor = Asset.Colors.Label.secondary.color - label.text = L10n.Common.Controls.Status.Poll.timeLeft("6 hours") + label.text = "1 day left" return label }() let pollVoteButton: UIButton = { diff --git a/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift b/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift index 693540473..2f640a140 100644 --- a/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift +++ b/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift @@ -101,7 +101,7 @@ final class StatusNode: ASCellNode { .font: UIFont.systemFont(ofSize: 13, weight: .regular) ]) // set date - dateTextNode.attributedText = NSAttributedString(string: timestamp.slowedTimeAgoSinceNow, attributes: [ + dateTextNode.attributedText = NSAttributedString(string: timestamp.localizedSlowedTimeAgoSinceNow, attributes: [ .foregroundColor: Asset.Colors.Label.secondary.color, .font: UIFont.systemFont(ofSize: 13, weight: .regular) ]) @@ -131,7 +131,7 @@ final class StatusNode: ASCellNode { timestampSubscription = AppContext.shared.timestampUpdatePublisher .sink { [weak self] _ in guard let self = self else { return } - self.dateTextNode.attributedText = NSAttributedString(string: self.timestamp.slowedTimeAgoSinceNow, attributes: [ + self.dateTextNode.attributedText = NSAttributedString(string: self.timestamp.localizedSlowedTimeAgoSinceNow, attributes: [ .foregroundColor: Asset.Colors.Label.secondary.color, .font: UIFont.systemFont(ofSize: 13, weight: .regular) ]) diff --git a/Mastodon/Scene/Thread/ThreadViewController.swift b/Mastodon/Scene/Thread/ThreadViewController.swift index c1d580a71..a0de13477 100644 --- a/Mastodon/Scene/Thread/ThreadViewController.swift +++ b/Mastodon/Scene/Thread/ThreadViewController.swift @@ -97,7 +97,7 @@ extension ThreadViewController { self.titleView.update(title: "", subtitle: nil) return } - let mastodonContent = MastodonContent(content: title, emojis: emojiMeta ?? [:]) + let mastodonContent = MastodonContent(content: title, emojis: emojiMeta) do { let metaContent = try MastodonMetaContent.convert(document: mastodonContent) self.titleView.update(titleMetaContent: metaContent, subtitle: nil) diff --git a/Mastodon/Scene/Thread/ThreadViewModel.swift b/Mastodon/Scene/Thread/ThreadViewModel.swift index 1c4a7071e..7c2f07c31 100644 --- a/Mastodon/Scene/Thread/ThreadViewModel.swift +++ b/Mastodon/Scene/Thread/ThreadViewModel.swift @@ -88,7 +88,7 @@ class ThreadViewModel { } self.rootNode.value = RootNode(domain: status.domain, statusID: status.id, replyToID: status.inReplyToID) self.navigationBarTitle.value = L10n.Scene.Thread.title(status.author.displayNameWithFallback) - self.navigationBarTitleEmojiMeta.value = status.author.emojiMeta ?? [:] + self.navigationBarTitleEmojiMeta.value = status.author.emojiMeta } } .store(in: &disposeBag) diff --git a/Mastodon/Service/APIService/APIService+APIError.swift b/Mastodon/Service/APIService/APIService+APIError.swift index 352be4ff4..181495cf4 100644 --- a/Mastodon/Service/APIService/APIService+APIError.swift +++ b/Mastodon/Service/APIService/APIService+APIError.swift @@ -65,7 +65,7 @@ extension APIService.APIError: LocalizedError { case .badRequest: return "Request invalid." case .badResponse: return "Response invalid." case .requestThrottle: return "Request too frequency." - case .voteExpiredPoll: return L10n.Common.Alerts.VoteFailure.pollExpired + case .voteExpiredPoll: return L10n.Common.Alerts.VoteFailure.pollEnded case .mastodonAPIError(let error): guard let responseError = error.mastodonError else { return nil diff --git a/Mastodon/Service/APIService/APIService+Media.swift b/Mastodon/Service/APIService/APIService+Media.swift index d6b1d6c21..0c7822c9d 100644 --- a/Mastodon/Service/APIService/APIService+Media.swift +++ b/Mastodon/Service/APIService/APIService+Media.swift @@ -57,6 +57,25 @@ extension APIService { } +extension APIService { + + func getMedia( + attachmentID: Mastodon.Entity.Attachment.ID, + mastodonAuthenticationBox: MastodonAuthenticationBox + ) -> AnyPublisher, Error> { + let authorization = mastodonAuthenticationBox.userAuthorization + + return Mastodon.API.Media.getMedia( + session: session, + domain: mastodonAuthenticationBox.domain, + attachmentID: attachmentID, + authorization: authorization + ) + .eraseToAnyPublisher() + } + +} + extension APIService { func updateMedia( diff --git a/Mastodon/Service/APIService/APIService+Status+Publish.swift b/Mastodon/Service/APIService/APIService+Status+Publish.swift index 45964602f..1bd3363cf 100644 --- a/Mastodon/Service/APIService/APIService+Status+Publish.swift +++ b/Mastodon/Service/APIService/APIService+Status+Publish.swift @@ -16,6 +16,7 @@ extension APIService { func publishStatus( domain: String, + idempotencyKey: String?, query: Mastodon.API.Statuses.PublishStatusQuery, mastodonAuthenticationBox: MastodonAuthenticationBox ) -> AnyPublisher, Error> { @@ -24,6 +25,7 @@ extension APIService { return Mastodon.API.Statuses.publishStatus( session: session, domain: domain, + idempotencyKey: idempotencyKey, query: query, authorization: authorization ) diff --git a/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService+UploadState.swift b/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService+UploadState.swift index 8474ac4dd..8ff076dc1 100644 --- a/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService+UploadState.swift +++ b/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService+UploadState.swift @@ -47,7 +47,10 @@ extension MastodonAttachmentService.UploadState { var needsFallback = false override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Fail.self || stateClass == Finish.self || stateClass == Uploading.self + return stateClass == Fail.self + || stateClass == Finish.self + || stateClass == Uploading.self + || stateClass == Processing.self } override func didEnter(from previousState: GKState?) { @@ -96,11 +99,70 @@ extension MastodonAttachmentService.UploadState { } receiveValue: { response in os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: upload attachment %s success: %s", ((#file as NSString).lastPathComponent), #line, #function, response.value.id, response.value.url ?? "") service.attachment.value = response.value + if response.statusCode == 202 { + // check if still processing + stateMachine.enter(Processing.self) + } else { + stateMachine.enter(Finish.self) + } + } + .store(in: &service.disposeBag) + } + } + + class Processing: MastodonAttachmentService.UploadState { + + static let retryLimit = 10 + var retryCount = 0 + + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return stateClass == Fail.self || stateClass == Finish.self || stateClass == Processing.self + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + + guard let service = service, let stateMachine = stateMachine else { return } + guard let authenticationBox = service.authenticationBox else { return } + guard let attachment = service.attachment.value else { return } + + retryCount += 1 + guard retryCount < Processing.retryLimit else { + stateMachine.enter(Fail.self) + return + } + + service.context.apiService.getMedia( + attachmentID: attachment.id, + mastodonAuthenticationBox: authenticationBox + ) + .retry(3) + .receive(on: DispatchQueue.main) + .sink { [weak self] completion in + guard let _ = self else { return } + switch completion { + case .failure(let error): + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: get attachment fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + service.error.send(error) + stateMachine.enter(Fail.self) + case .finished: + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: get attachment success", ((#file as NSString).lastPathComponent), #line, #function) + break + } + } receiveValue: { [weak self] response in + guard let self = self else { return } + guard let _ = response.value.url else { + DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [weak self] in + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: processing, retry in 2s", ((#file as NSString).lastPathComponent), #line, #function) + self?.stateMachine?.enter(Processing.self) + } + return + } + stateMachine.enter(Finish.self) } .store(in: &service.disposeBag) } - } class Fail: MastodonAttachmentService.UploadState { diff --git a/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService.swift b/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService.swift index 2b08b0db0..e42c9bf2e 100644 --- a/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService.swift +++ b/Mastodon/Service/MastodonAttachmentService/MastodonAttachmentService.swift @@ -41,6 +41,7 @@ final class MastodonAttachmentService { let stateMachine = GKStateMachine(states: [ UploadState.Initial(service: self), UploadState.Uploading(service: self), + UploadState.Processing(service: self), UploadState.Fail(service: self), UploadState.Finish(service: self), ]) diff --git a/Mastodon/Service/PlaybackState.swift b/Mastodon/Service/PlaybackState.swift index 8e62fa145..3dfaa4d0d 100644 --- a/Mastodon/Service/PlaybackState.swift +++ b/Mastodon/Service/PlaybackState.swift @@ -35,9 +35,6 @@ extension PlaybackState: CustomStringConvertible { case .paused: return "paused" case .stopped: return "stopped" case .failed: return "failed" - default: - assertionFailure() - return "" } } } diff --git a/MastodonIntent/SendPostIntentHandler.swift b/MastodonIntent/SendPostIntentHandler.swift index 6d5f739fb..75e7049aa 100644 --- a/MastodonIntent/SendPostIntentHandler.swift +++ b/MastodonIntent/SendPostIntentHandler.swift @@ -55,9 +55,12 @@ final class SendPostIntentHandler: NSObject, SendPostIntentHandling { spoilerText: nil, visibility: visibility ) + + let idempotencyKey = UUID().uuidString APIService.shared.publishStatus( domain: box.domain, + idempotencyKey: idempotencyKey, query: query, mastodonAuthenticationBox: box ) diff --git a/MastodonIntent/ca.lproj/Intents.strings b/MastodonIntent/ca.lproj/Intents.strings index 3c3de2574..6b92eb263 100644 --- a/MastodonIntent/ca.lproj/Intents.strings +++ b/MastodonIntent/ca.lproj/Intents.strings @@ -1,4 +1,4 @@ -"16wxgf" = "Publicar a Mastodon"; +"16wxgf" = "Publica a Mastodon"; "751xkl" = "Contingut del Text"; @@ -14,7 +14,7 @@ "RxSqsb" = "Publicació"; -"WCIR3D" = "Publicar ${content} a Mastodon"; +"WCIR3D" = "Publica ${content} a Mastodon"; "ZKJSNu" = "Publicació"; diff --git a/MastodonIntent/de.lproj/Intents.strings b/MastodonIntent/de.lproj/Intents.strings index 3bf4531e2..e19069797 100644 --- a/MastodonIntent/de.lproj/Intents.strings +++ b/MastodonIntent/de.lproj/Intents.strings @@ -1,28 +1,28 @@ "16wxgf" = "Post on Mastodon"; -"751xkl" = "Textinhalt"; +"751xkl" = "Text Content"; -"CsR7G2" = "Beitrag"; +"CsR7G2" = "Post"; "HZSGTr" = "What content to post?"; -"HdGikU" = "Senden fehlgeschlagen"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Fehlerursache"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Beitrag mit Textinhalt senden"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Beitrag"; +"RxSqsb" = "Post"; "WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Beitrag"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Sichtbarkeit"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Sichtbarkeit des Beitrags"; +"Zo4jgJ" = "Post Visibility"; "apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; @@ -32,13 +32,13 @@ "ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Beitrag"; +"dUyuGg" = "Post"; "dYQ5NN" = "Public"; "ehFLjY" = "Followers Only"; -"gfePDu" = "Senden fehlgeschlagen. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; "k7dbKQ" = "Post was sent successfully."; @@ -48,4 +48,4 @@ "rM6dvp" = "URL"; -"ryJLwG" = "Beitrag wurde erfolgreich gesendet. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/MastodonIntent/es-419.lproj/Intents.strings b/MastodonIntent/es-419.lproj/Intents.strings index 6a4ea3acd..e19069797 100644 --- a/MastodonIntent/es-419.lproj/Intents.strings +++ b/MastodonIntent/es-419.lproj/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Enviar a Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "Contenido del texto"; +"751xkl" = "Text Content"; -"CsR7G2" = "Enviar"; +"CsR7G2" = "Post"; -"HZSGTr" = "¿Qué contenido enviar?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "Error al enviar mensaje"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Motivo del error"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Enviar mensaje con contenido de texto"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Enviar"; +"RxSqsb" = "Post"; -"WCIR3D" = "Enviar ${content} a Mastodon"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Enviar"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibilidad"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Visibilidad del mensaje"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "Hay ${count} opciones que coinciden con \"Público\"."; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "Hay ${count} opciones que coinciden con \"Sólo para seguidores\"."; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content}, público"; +"ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content}, sólo para seguidores"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Publicar"; +"dUyuGg" = "Post"; -"dYQ5NN" = "Público"; +"dYQ5NN" = "Public"; -"ehFLjY" = "Sólo para seguidores"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "Error al enviar mensaje. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "El mensaje se envió exitosamente."; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "Sólo para confirmar, ¿querías que este mensaje sea PÚBLICO?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "Sólo para confirmar, ¿querías que este mensaje sea SÓLO PARA SEGUIDORES?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; -"rM6dvp" = "Dirección web"; +"rM6dvp" = "URL"; -"ryJLwG" = "El mensaje se envió exitosamente. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/MastodonIntent/es.lproj/Intents.strings b/MastodonIntent/es.lproj/Intents.strings index b04a39c08..e19069797 100644 --- a/MastodonIntent/es.lproj/Intents.strings +++ b/MastodonIntent/es.lproj/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Publicar en Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "Contenido del Texto"; +"751xkl" = "Text Content"; -"CsR7G2" = "Publicación"; +"CsR7G2" = "Post"; -"HZSGTr" = "¿Qué contenido publicar?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "Publicación fallida"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Motivo del fallo"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Enviar publicación con contenido de texto"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Publicar"; +"RxSqsb" = "Post"; -"WCIR3D" = "Publicar ${content} en Mastodon"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Publicar"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibilidad"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Visibilidad de la Publicación"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "Hay ${count} opciones que coinciden con «Público»."; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "Hay ${count} opciones que coinciden con «Solo seguidores»."; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content}, Público"; +"ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content}, Solo Seguidores"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Publicar"; +"dUyuGg" = "Post"; -"dYQ5NN" = "Público"; +"dYQ5NN" = "Public"; -"ehFLjY" = "Solo Seguidores"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "Error al publicar. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "La publicación se envió correctamente."; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "Solo para confirmar, ¿querías «Público»?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "Solo para confirmar, ¿querías «Solo seguidores»?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; "rM6dvp" = "URL"; -"ryJLwG" = "La publicación se envió con éxito. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/MastodonIntent/fr.lproj/Intents.strings b/MastodonIntent/fr.lproj/Intents.strings index b21e895e3..e19069797 100644 --- a/MastodonIntent/fr.lproj/Intents.strings +++ b/MastodonIntent/fr.lproj/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Publier sur Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "Contenu textuel"; +"751xkl" = "Text Content"; -"CsR7G2" = "Publication"; +"CsR7G2" = "Post"; -"HZSGTr" = "Quel contenu publier?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "L'envoi a échoué"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "Raison de l'échec"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "Envoyer un message avec du contenu textuel"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Publication"; +"RxSqsb" = "Post"; -"WCIR3D" = "Publier ${content} sur Mastodon"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Publication"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibilité"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "Visibilité de la publication"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "Il y a ${count} options correspondant à « Public »."; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "Il y a ${count} options correspondant à « Abonnés uniquement »."; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; "ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content}, abonnés seulement"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Publication"; +"dUyuGg" = "Post"; "dYQ5NN" = "Public"; -"ehFLjY" = "Abonnés seulement"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "L'envoi a échoué. ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "Léa publication a été envoyée avec succès."; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "Juste pour confirmer, vous vouliez bien diffuser en « Public » ?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "Juste pour confirmer, vous vouliez bien diffuser en « abonnés uniquement » ?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; "rM6dvp" = "URL"; -"ryJLwG" = "La publication a été envoyée avec succès. "; +"ryJLwG" = "Post was sent successfully. "; diff --git a/MastodonIntent/nl.lproj/Intents.strings b/MastodonIntent/nl.lproj/Intents.strings new file mode 100644 index 000000000..77d237112 --- /dev/null +++ b/MastodonIntent/nl.lproj/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Berichten op Mastodon"; + +"751xkl" = "Berichtsinhoud"; + +"CsR7G2" = "Plaatsen"; + +"HZSGTr" = "Welke inhoud om bericht te plaatsen?"; + +"HdGikU" = "Bericht plaatsen mislukt"; + +"KDNTJ4" = "Reden van de Fout"; + +"RHxKOw" = "Bericht verzenden met tekstinhoud"; + +"RxSqsb" = "Bericht"; + +"WCIR3D" = "Plaats ${content} op Mastodon"; + +"ZKJSNu" = "Plaatsen"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Zichbaarheid"; + +"Zo4jgJ" = "Berichtszichtbaarheid"; + +"apSxMG-dYQ5NN" = "Er zijn ${count} opties die overeenkomen met ‘Openbaar’."; + +"apSxMG-ehFLjY" = "Er zijn ${count} opties die overeenkomen met ‘Alleen Volgers’."; + +"ayoYEb-dYQ5NN" = "${content}, Openbaar"; + +"ayoYEb-ehFLjY" = "${content}, Alleen Volgers"; + +"dUyuGg" = "Plaatsen"; + +"dYQ5NN" = "Openbaar"; + +"ehFLjY" = "Alleen Volgers"; + +"gfePDu" = "Plaatsen mislukt. ${failureReason}"; + +"k7dbKQ" = "Het bericht is succesvol verzonden."; + +"oGiqmY-dYQ5NN" = "Wilde u ‘Openbaar’?"; + +"oGiqmY-ehFLjY" = "Wilde u ‘Alleen Volgers’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Het bericht is succesvol verzonden. "; diff --git a/MastodonIntent/zh-Hans.lproj/Intents.strings b/MastodonIntent/zh-Hans.lproj/Intents.strings index 41067a523..e19069797 100644 --- a/MastodonIntent/zh-Hans.lproj/Intents.strings +++ b/MastodonIntent/zh-Hans.lproj/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "分享到 Mastodon"; +"16wxgf" = "Post on Mastodon"; -"751xkl" = "文本内容"; +"751xkl" = "Text Content"; -"CsR7G2" = "帖子"; +"CsR7G2" = "Post"; -"HZSGTr" = "要发送的内容是什么?"; +"HZSGTr" = "What content to post?"; -"HdGikU" = "发送失败"; +"HdGikU" = "Posting failed"; -"KDNTJ4" = "失败原因"; +"KDNTJ4" = "Failure Reason"; -"RHxKOw" = "发送带有文本内容的帖子"; +"RHxKOw" = "Send Post with text content"; -"RxSqsb" = "帖子"; +"RxSqsb" = "Post"; -"WCIR3D" = "在 Mastodon 上发送 ${content}"; +"WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "帖子"; +"ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "可见性"; +"ZbSjzC" = "Visibility"; -"Zo4jgJ" = "帖子可见性"; +"Zo4jgJ" = "Post Visibility"; -"apSxMG-dYQ5NN" = "有 ${count} 个选项匹配 “公开”"; +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; -"apSxMG-ehFLjY" = "有 ${count} 个选项匹配 “仅关注者”"; +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content},公开"; +"ayoYEb-dYQ5NN" = "${content}, Public"; -"ayoYEb-ehFLjY" = "${content},仅关注者"; +"ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "帖子"; +"dUyuGg" = "Post"; -"dYQ5NN" = "公开"; +"dYQ5NN" = "Public"; -"ehFLjY" = "仅关注者"; +"ehFLjY" = "Followers Only"; -"gfePDu" = "发送失败。 ${failureReason}"; +"gfePDu" = "Posting failed. ${failureReason}"; -"k7dbKQ" = "帖子发送成功。"; +"k7dbKQ" = "Post was sent successfully."; -"oGiqmY-dYQ5NN" = "确认要选择 “公开”?"; +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; -"oGiqmY-ehFLjY" = "确认要选择 “仅关注者”?"; +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; "rM6dvp" = "URL"; -"ryJLwG" = "帖子发送成功。"; +"ryJLwG" = "Post was sent successfully. "; diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Media.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Media.swift index d05cac01a..da77c65a1 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Media.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Media.swift @@ -113,6 +113,49 @@ extension Mastodon.API.Media { } +extension Mastodon.API.Media { + static func getMediaEndpointURL(domain: String, attachmentID: Mastodon.Entity.Attachment.ID) -> URL { + Mastodon.API.endpointURL(domain: domain).appendingPathComponent("media").appendingPathComponent(attachmentID) + } + + /// Get media attachment + /// + /// Get an Attachment, before it is attached to a status and posted, but after it is accepted for processing. + /// + /// - Since: 0.0.0 + /// - Version: 3.4.1 + /// # Last Update + /// 2021/8/9 + /// # Reference + /// [Document](https://docs.joinmastodon.org/methods/statuses/media/) + /// - Parameters: + /// - session: `URLSession` + /// - domain: Mastodon instance domain. e.g. "example.com" + /// - mediaID: The ID of attachment + /// - authorization: User token + /// - Returns: `AnyPublisher` contains `Attachment` nested in the response + public static func getMedia( + session: URLSession, + domain: String, + attachmentID: Mastodon.Entity.Attachment.ID, + authorization: Mastodon.API.OAuth.Authorization? + ) -> AnyPublisher, Error> { + var request = Mastodon.API.get( + url: getMediaEndpointURL(domain: domain, attachmentID: attachmentID), + query: nil, + authorization: authorization + ) + request.timeoutInterval = 10 // short timeout for quick retry + return session.dataTaskPublisher(for: request) + .tryMap { data, response in + let value = try Mastodon.API.decode(type: Mastodon.Entity.Attachment.self, from: data, response: response) + return Mastodon.Response.Content(value: value, response: response) + } + .eraseToAnyPublisher() + } +} + + extension Mastodon.API.Media { static func updateMediaEndpointURL(domain: String, attachmentID: Mastodon.Entity.Attachment.ID) -> URL { diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Statuses.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Statuses.swift index e6c8b19d3..0fa1a0d61 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Statuses.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Statuses.swift @@ -77,14 +77,18 @@ extension Mastodon.API.Statuses { public static func publishStatus( session: URLSession, domain: String, + idempotencyKey: String?, query: PublishStatusQuery, authorization: Mastodon.API.OAuth.Authorization? ) -> AnyPublisher, Error> { - let request = Mastodon.API.post( + var request = Mastodon.API.post( url: publishNewStatusEndpointURL(domain: domain), query: query, authorization: authorization ) + if let idempotencyKey = idempotencyKey { + request.setValue(idempotencyKey, forHTTPHeaderField: "Idempotency-Key") + } return session.dataTaskPublisher(for: request) .tryMap { data, response in let value = try Mastodon.API.decode(type: Mastodon.Entity.Status.self, from: data, response: response) diff --git a/MastodonSDK/Sources/MastodonSDK/Response/Mastodon+Response+Content.swift b/MastodonSDK/Sources/MastodonSDK/Response/Mastodon+Response+Content.swift index 9c39615f9..db42169d8 100644 --- a/MastodonSDK/Sources/MastodonSDK/Response/Mastodon+Response+Content.swift +++ b/MastodonSDK/Sources/MastodonSDK/Response/Mastodon+Response+Content.swift @@ -14,6 +14,7 @@ extension Mastodon.Response { public let value: T // standard fields + public let statusCode: Int? ///< HTTP Code public let date: Date? // application fields @@ -28,6 +29,8 @@ extension Mastodon.Response { public init(value: T, response: URLResponse) { self.value = value + self.statusCode = (response as? HTTPURLResponse)?.statusCode + self.date = { guard let string = (response as? HTTPURLResponse)?.value(forHTTPHeaderField: "date") else { return nil } return Mastodon.API.httpHeaderDateFormatter.date(from: string) @@ -47,6 +50,7 @@ extension Mastodon.Response { init(value: T, old: Mastodon.Response.Content) { self.value = value + self.statusCode = old.statusCode self.date = old.date self.rateLimit = old.rateLimit self.link = old.link diff --git a/ShareActionExtension/Scene/ShareViewController.swift b/ShareActionExtension/Scene/ShareViewController.swift index e72c46196..765c42d1e 100644 --- a/ShareActionExtension/Scene/ShareViewController.swift +++ b/ShareActionExtension/Scene/ShareViewController.swift @@ -169,11 +169,11 @@ extension ShareViewController { case _ where count < 0: self.composeToolbarView.characterCountLabel.font = .monospacedDigitSystemFont(ofSize: 24, weight: .bold) self.composeToolbarView.characterCountLabel.textColor = Asset.Colors.danger.color - self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.Scene.Compose.Accessibility.inputLimitExceedsCount(abs(count)) + self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.A11y.Plural.Count.inputLimitExceeds(abs(count)) default: self.composeToolbarView.characterCountLabel.font = .monospacedDigitSystemFont(ofSize: 15, weight: .regular) self.composeToolbarView.characterCountLabel.textColor = Asset.Colors.Label.secondary.color - self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.Scene.Compose.Accessibility.inputLimitRemainsCount(count) + self.composeToolbarView.characterCountLabel.accessibilityLabel = L10n.A11y.Plural.Count.inputLimitRemains(count) } } .store(in: &disposeBag) diff --git a/ShareActionExtension/Scene/ShareViewModel.swift b/ShareActionExtension/Scene/ShareViewModel.swift index 62102e660..1aec81bdf 100644 --- a/ShareActionExtension/Scene/ShareViewModel.swift +++ b/ShareActionExtension/Scene/ShareViewModel.swift @@ -346,6 +346,7 @@ extension ShareViewModel { ) return APIService.shared.publishStatus( domain: domain, + idempotencyKey: nil, // FIXME: query: query, mastodonAuthenticationBox: mastodonAuthenticationBox ) diff --git a/ShareActionExtension/Scene/View/ComposeToolbarView.swift b/ShareActionExtension/Scene/View/ComposeToolbarView.swift index d161e96fe..e6842c744 100644 --- a/ShareActionExtension/Scene/View/ComposeToolbarView.swift +++ b/ShareActionExtension/Scene/View/ComposeToolbarView.swift @@ -46,7 +46,7 @@ final class ComposeToolbarView: UIView { label.font = .systemFont(ofSize: 15, weight: .regular) label.text = "500" label.textColor = Asset.Colors.Label.secondary.color - label.accessibilityLabel = L10n.Scene.Compose.Accessibility.inputLimitRemainsCount(500) + label.accessibilityLabel = L10n.A11y.Plural.Count.inputLimitRemains(500) return label }()