Merge pull request #403 from mastodon/release-1.4.0

Release v1.4.0
This commit is contained in:
CMK 2022-04-30 11:02:22 +08:00 committed by GitHub
commit ed30085f87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
130 changed files with 8511 additions and 1029 deletions

View File

@ -10,10 +10,7 @@ import Foundation
import CryptoKit import CryptoKit
import KeychainAccess import KeychainAccess
import Keys import Keys
import MastodonCommon
enum AppName {
public static let groupID = "group.org.joinmastodon.app"
}
public final class AppSecret { public final class AppSecret {

View File

@ -15,8 +15,8 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.3.3</string> <string>1.4.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>117</string> <string>121</string>
</dict> </dict>
</plist> </plist>

View File

@ -0,0 +1,51 @@
"16wxgf" = "پۆستێک بکە";
"751xkl" = "نووسین";
"CsR7G2" = "پۆستێک بکە";
"HZSGTr" = "چی پۆست بکرێت؟";
"HdGikU" = "پۆستکردنەکە سەرکەوتوو نەبوو";
"KDNTJ4" = "هۆکاری سەرنەکەوتن";
"RHxKOw" = "پۆست بە نووسینەوە بکە";
"RxSqsb" = "پۆست";
"WCIR3D" = "${content} لە ماستۆدۆن پۆست بکە";
"ZKJSNu" = "پۆست";
"ZS1XaK" = "${content}";
"ZbSjzC" = "دەرکەوتن";
"Zo4jgJ" = "دەرکەوتنی پۆست";
"apSxMG-dYQ5NN" = "${count} بژاردە بۆ 'گشتی' هەن.";
"apSxMG-ehFLjY" = "${count} بژاردە بۆ 'تەنیا شوێنکەوتووەکان' هەن.";
"ayoYEb-dYQ5NN" = "${content}، گشتی";
"ayoYEb-ehFLjY" = "${content}، تەنیا شوێنکەوتووەکان";
"dUyuGg" = "پۆستێک بکە";
"dYQ5NN" = "گشتی";
"ehFLjY" = "تەنیا شوێنکەوتووەکان";
"gfePDu" = "پۆستکردنەکە سەرکەوتوو نەبوو. ${failureReason}";
"k7dbKQ" = "پۆستەکە کرا.";
"oGiqmY-dYQ5NN" = "دڵنیایت لە هەڵبژاردنی 'گشتی'؟";
"oGiqmY-ehFLjY" = "دڵنیایت لە هەڵبژاردنی 'تەنیا شوێنکەوتووەکان'؟";
"rM6dvp" = "بەستەر";
"ryJLwG" = "پۆستەکە کرا. ";

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_option@ بژاردە بۆ '${content}' هەن.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>%ld بژاردە</string>
<key>other</key>
<string>%ld بژاردە</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_option@ بژاردە بۆ '${visibility}' هەن.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>%ld بژاردە</string>
<key>other</key>
<string>%ld بژاردە</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,51 @@
"16wxgf" = "Post on Mastodon";
"751xkl" = "Text Content";
"CsR7G2" = "Post on Mastodon";
"HZSGTr" = "What content to post?";
"HdGikU" = "Posting failed";
"KDNTJ4" = "Failure Reason";
"RHxKOw" = "Send Post with text content";
"RxSqsb" = "Post";
"WCIR3D" = "Post ${content} on Mastodon";
"ZKJSNu" = "Post";
"ZS1XaK" = "${content}";
"ZbSjzC" = "Visibility";
"Zo4jgJ" = "Post Visibility";
"apSxMG-dYQ5NN" = "There are ${count} options matching Public.";
"apSxMG-ehFLjY" = "There are ${count} options matching Followers Only.";
"ayoYEb-dYQ5NN" = "${content}, Public";
"ayoYEb-ehFLjY" = "${content}, Followers Only";
"dUyuGg" = "Post on Mastodon";
"dYQ5NN" = "Public";
"ehFLjY" = "Followers Only";
"gfePDu" = "Posting failed. ${failureReason}";
"k7dbKQ" = "Post was sent successfully.";
"oGiqmY-dYQ5NN" = "Just to confirm, you wanted Public?";
"oGiqmY-ehFLjY" = "Just to confirm, you wanted Followers Only?";
"rM6dvp" = "URL";
"ryJLwG" = "Post was sent successfully. ";

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>1 option</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>1 option</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -1,51 +1,51 @@
"16wxgf" = "Post on Mastodon"; "16wxgf" = "於 Mastodon 上發嘟文";
"751xkl" = "Text Content"; "751xkl" = "文字內容";
"CsR7G2" = "Post on Mastodon"; "CsR7G2" = "於 Mastodon 上發嘟文";
"HZSGTr" = "What content to post?"; "HZSGTr" = "要發什麼嘟呢?";
"HdGikU" = "Posting failed"; "HdGikU" = "嘟文失敗";
"KDNTJ4" = "Failure Reason"; "KDNTJ4" = "失敗原因";
"RHxKOw" = "Send Post with text content"; "RHxKOw" = "發送文字內容嘟文";
"RxSqsb" = "Post"; "RxSqsb" = "嘟文";
"WCIR3D" = "Post ${content} on Mastodon"; "WCIR3D" = "將 ${content} 於 Mastodon 上發嘟";
"ZKJSNu" = "Post"; "ZKJSNu" = "嘟文";
"ZS1XaK" = "${content}"; "ZS1XaK" = "${content}";
"ZbSjzC" = "Visibility"; "ZbSjzC" = "可見性";
"Zo4jgJ" = "Post Visibility"; "Zo4jgJ" = "嘟文可見性";
"apSxMG-dYQ5NN" = "There are ${count} options matching Public."; "apSxMG-dYQ5NN" = "有 ${count} 個選項符合「公開」。";
"apSxMG-ehFLjY" = "There are ${count} options matching Followers Only."; "apSxMG-ehFLjY" = "有 ${count} 個選項符合「僅限跟隨者」。";
"ayoYEb-dYQ5NN" = "${content}, Public"; "ayoYEb-dYQ5NN" = "${content},公開";
"ayoYEb-ehFLjY" = "${content}, Followers Only"; "ayoYEb-ehFLjY" = "${content},僅限跟隨者";
"dUyuGg" = "Post on Mastodon"; "dUyuGg" = "於 Mastodon 上發嘟文";
"dYQ5NN" = "Public"; "dYQ5NN" = "公開";
"ehFLjY" = "Followers Only"; "ehFLjY" = "僅限跟隨者";
"gfePDu" = "Posting failed. ${failureReason}"; "gfePDu" = "發嘟失敗。${failureReason}";
"k7dbKQ" = "Post was sent successfully."; "k7dbKQ" = "成功發出嘟文。";
"oGiqmY-dYQ5NN" = "Just to confirm, you wanted Public?"; "oGiqmY-dYQ5NN" = "再確認一次,您想要「公開」?";
"oGiqmY-ehFLjY" = "Just to confirm, you wanted Followers Only?"; "oGiqmY-ehFLjY" = "再確認一次,您想要「僅限跟隨者」?";
"rM6dvp" = "URL"; "rM6dvp" = "網址";
"ryJLwG" = "Post was sent successfully. "; "ryJLwG" = "成功發出嘟文。 ";

View File

@ -5,7 +5,7 @@
<key>There are ${count} options matching ${content}. - 2</key> <key>There are ${count} options matching ${content}. - 2</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string> <string>有 %#@count_option@ 符合「 ${content} 」。</string>
<key>count_option</key> <key>count_option</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -13,13 +13,13 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>%ld</string> <string>%ld</string>
<key>other</key> <key>other</key>
<string>%ld options</string> <string>%ld 個選項</string>
</dict> </dict>
</dict> </dict>
<key>There are ${count} options matching ${visibility}.</key> <key>There are ${count} options matching ${visibility}.</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string> <string>有 %#@count_option@ 符合「 ${visibility} 」。</string>
<key>count_option</key> <key>count_option</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -27,7 +27,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>%ld</string> <string>%ld</string>
<key>other</key> <key>other</key>
<string>%ld options</string> <string>%ld 個選項</string>
</dict> </dict>
</dict> </dict>
</dict> </dict>

View File

@ -51,20 +51,25 @@ private func map(language: String) -> String? {
case "eu_ES": return "eu-ES" // Basque case "eu_ES": return "eu-ES" // Basque
case "ca_ES": return "ca" // Catalan case "ca_ES": return "ca" // Catalan
case "zh_CN": return "zh-Hans" // Chinese Simplified case "zh_CN": return "zh-Hans" // Chinese Simplified
case "zh_TW": return "zh-Hant" // Chinese Traditional
case "nl_NL": return "nl" // Dutch case "nl_NL": return "nl" // Dutch
case "en_US": return "en" case "en_US": return "en"
case "fr_FR": return "fr" // French case "fr_FR": return "fr" // French
case "gl_ES": return "gl" // Galician
case "de_DE": return "de" // German case "de_DE": return "de" // German
case "it_IT": return "it" // Italian
case "ja_JP": return "ja" // Japanese case "ja_JP": return "ja" // Japanese
case "kab_KAB": return "kab" // Kabyle case "kab_KAB": return "kab" // Kabyle
case "kmr_TR": return "ku" // Kurmanji (Kurdish) case "kmr_TR": return "ku" // Kurmanji (Kurdish)
case "ru_RU": return "ru" // Russian case "ru_RU": return "ru" // Russian
case "gd_GB": return "gd-GB" // Scottish Gaelic case "gd_GB": return "gd-GB" // Scottish Gaelic
case "ckb_IR": return "ckb" // Sorani (Kurdish)
case "es_ES": return "es" // Spanish case "es_ES": return "es" // Spanish
case "es_AR": return "es-419" // Spanish, Argentina case "es_AR": return "es-419" // Spanish, Argentina
case "sv-SE": return "sv" // Swedish case "sv-SE": return "sv" // Swedish
case "sv_FI": return "sv_FI" // Swedish, Finland case "sv_FI": return "sv_FI" // Swedish, Finland
case "th_TH": return "th" // Thai case "th_TH": return "th" // Thai
case "tr_TR": return "tr" // Turkish
case "vi_VN": return "vi" // Vietnamese case "vi_VN": return "vi" // Vietnamese
default: return nil default: return nil
} }

View File

@ -97,7 +97,7 @@
"home": "الرَّئِيسَة", "home": "الرَّئِيسَة",
"search": "البَحث", "search": "البَحث",
"notification": "الإشعارات", "notification": "الإشعارات",
"profile": "الملف التعريفي" "profile": "المِلَفُّ التَّعريفِيّ"
}, },
"keyboard": { "keyboard": {
"common": { "common": {
@ -495,9 +495,10 @@
}, },
"discovery": { "discovery": {
"tabs": { "tabs": {
"posts": "المنشورات", "posts": "مَنشُورات",
"hashtags": "الوسوم", "hashtags": "وُسُوم",
"news": "الأخبار", "news": "أخبار",
"community": "المُجتَمَع",
"for_you": "لَك" "for_you": "لَك"
}, },
"intro": "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون." "intro": "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون."

View File

@ -498,6 +498,7 @@
"posts": "Publicacions", "posts": "Publicacions",
"hashtags": "Etiquetes", "hashtags": "Etiquetes",
"news": "Notícies", "news": "Notícies",
"community": "Comunitat",
"for_you": "Per a tu" "for_you": "Per a tu"
}, },
"intro": "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon." "intro": "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon."

View File

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>a11y.plural.count.unread.notification</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@notification_count_unread_notification@</string>
<key>notification_count_unread_notification</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ئاگاداریی نەبینراو</string>
<key>other</key>
<string>%ld ئاگاداریی نەبینراو</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_exceeds</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>سنووری نووسین %#@character_count@ دەرباز دەکات</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld نووسە</string>
<key>other</key>
<string>%ld نووسە</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_remains</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>سنووری نووسین %#@character_count@ دەمێنێتەوە</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld نووسە</string>
<key>other</key>
<string>%ld نووسە</string>
</dict>
</dict>
<key>plural.count.metric_formatted.post</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%@%#@post_count@</string>
<key>post_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>پۆست</string>
<key>other</key>
<string>پۆست</string>
</dict>
</dict>
<key>plural.count.post</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@post_count@</string>
<key>post_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld پۆست</string>
<key>other</key>
<string>%ld پۆست</string>
</dict>
</dict>
<key>plural.count.favorite</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@favorite_count@</string>
<key>favorite_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld بەدڵبوو</string>
<key>other</key>
<string>%ld بەدڵبوو</string>
</dict>
</dict>
<key>plural.count.reblog</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@reblog_count@</string>
<key>reblog_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld پۆستکردنەوە</string>
<key>other</key>
<string>%ld پۆستکردنەوە</string>
</dict>
</dict>
<key>plural.count.reply</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@reply_count@</string>
<key>reply_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld وەڵام</string>
<key>other</key>
<string>%ld وەڵام</string>
</dict>
</dict>
<key>plural.count.vote</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@vote_count@</string>
<key>vote_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld دەنگ</string>
<key>other</key>
<string>%ld دەنگ</string>
</dict>
</dict>
<key>plural.count.voter</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@voter_count@</string>
<key>voter_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld دەنگدەر</string>
<key>other</key>
<string>%ld دەنگدەر</string>
</dict>
</dict>
<key>plural.people_talking</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_people_talking@</string>
<key>count_people_talking</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld کەس باسی دەکات</string>
<key>other</key>
<string>%ld کەس باسی دەکەن</string>
</dict>
</dict>
<key>plural.count.following</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_following@</string>
<key>count_following</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld شوێنکەوتن</string>
<key>other</key>
<string>%ld شوێنکەوتن</string>
</dict>
</dict>
<key>plural.count.follower</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_follower@</string>
<key>count_follower</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld شوێنکەوتوو</string>
<key>other</key>
<string>%ld شوێنکەوتوو</string>
</dict>
</dict>
<key>date.year.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_year_left@</string>
<key>count_year_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ساڵی ماوە</string>
<key>other</key>
<string>%ld ساڵی ماوە</string>
</dict>
</dict>
<key>date.month.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_month_left@</string>
<key>count_month_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld مانگی ماوە</string>
<key>other</key>
<string>%ld مانگی ماوە</string>
</dict>
</dict>
<key>date.day.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_day_left@</string>
<key>count_day_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ڕۆژی ماوە</string>
<key>other</key>
<string>%ld ڕۆژی ماوە</string>
</dict>
</dict>
<key>date.hour.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_hour_left@</string>
<key>count_hour_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld کاتژمێری ماوە</string>
<key>other</key>
<string>%ld کاتژمێری ماوە</string>
</dict>
</dict>
<key>date.minute.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_minute_left@</string>
<key>count_minute_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld خولەکی ماوە</string>
<key>other</key>
<string>%ld خولەکی ماوە</string>
</dict>
</dict>
<key>date.second.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_second_left@</string>
<key>count_second_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld چرکەی ماوە</string>
<key>other</key>
<string>%ld چرکەی ماوە</string>
</dict>
</dict>
<key>date.year.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_year_ago_abbr@</string>
<key>count_year_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ساڵ لەمەوبەر</string>
<key>other</key>
<string>%ld ساڵ لەمەوبەر</string>
</dict>
</dict>
<key>date.month.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_month_ago_abbr@</string>
<key>count_month_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld مانگ لەمەوبەر</string>
<key>other</key>
<string>%ld مانگ لەمەوبەر</string>
</dict>
</dict>
<key>date.day.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_day_ago_abbr@</string>
<key>count_day_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ڕۆژ لەمەوبەر</string>
<key>other</key>
<string>%ld ڕۆژ لەمەوبەر</string>
</dict>
</dict>
<key>date.hour.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_hour_ago_abbr@</string>
<key>count_hour_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld کاتژمێر لەمەوبەر</string>
<key>other</key>
<string>%ld کاتژمێر لەمەوبەر</string>
</dict>
</dict>
<key>date.minute.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_minute_ago_abbr@</string>
<key>count_minute_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld خولەک لەمەوبەر</string>
<key>other</key>
<string>%ld خولەک لەمەوبەر</string>
</dict>
</dict>
<key>date.second.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_second_ago_abbr@</string>
<key>count_second_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld چرکە لەمەوبەر</string>
<key>other</key>
<string>%ld چرکە لەمەوبەر</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,619 @@
{
"common": {
"alerts": {
"common": {
"please_try_again": "تکایە دووبارە هەوڵ بدەوە.",
"please_try_again_later": "تکایە دواتر هەوڵ بدەوە."
},
"sign_up_failure": {
"title": "تۆمارکردنەکە سەرکەوتوو نەبوو"
},
"server_error": {
"title": "هەڵەی ڕاژەکار"
},
"vote_failure": {
"title": "نەتوانرا دەنگ بدرێت",
"poll_ended": "دەنگدانەکە کۆتایی هاتووە"
},
"discard_post_content": {
"title": "ڕەشنووس هەڵمەگرە",
"message": "دڵنیا ببەوە بۆ وازهێنان لە ناوەڕۆکەت."
},
"publish_post_failure": {
"title": "نەتوانرا پۆستەکە بکرێت",
"message": "نەتوانرا پۆستەکە بکرێت.\nتکایە لە بەردەستبوونی هێڵی ئینتەرنێت دڵنیا بە.",
"attachments_message": {
"video_attach_with_photo": "ناتوانیت ڤیدیۆ بۆ پۆستێک زیاد بکەیت کە وێنەی تێدایە.",
"more_than_one_video": "ناتوانیت زیاتر لە یەک ڤیدیۆی پێوە بلکێنیت."
}
},
"edit_profile_failure": {
"title": "نەتوانرا دەستکاریی پرۆفایل بکرێت",
"message": "ناتوانرێت دەستکاریی پرۆفایل بکرێت. تکایە دووبارە هەوڵ بدەوە."
},
"sign_out": {
"title": "دەربچۆ",
"message": "دڵنیایت دەتەوێت دەربچیت؟",
"confirm": "دەربچۆ"
},
"block_domain": {
"title": "دڵنیایت دەتەوێت تەواوی %s ئاستەنگ بکەیت؟ لە زۆر بارەکاندا ئاستەنگکردنی بچووک باشترە. ئەگەر وا بکەیت، لەو ڕاژەکارەوە هیچ شتێک نابینیت و هەموو شوێنکەوتووەکانت لەوێوە لادەبرێن.",
"block_entire_domain": "هەموو ڕاژەکارەکە ئاستەنگ بکە"
},
"save_photo_failure": {
"title": "نەتوانرا وێنەکە هەڵبگیرێت",
"message": "تکایە ڕێ بە ماستۆدۆن بدە تاوەکو بتوانێت وێنەکە هەڵبگرێت."
},
"delete_post": {
"title": "بیسڕەوە",
"message": "دڵنیایت دەتەوێت ئەم پۆستە بسڕیتەوە؟"
},
"clean_cache": {
"title": "بیرگە پاک بکەوە",
"message": "سەرکەوتووانە بیرگەی %s پاک کرایەوە."
}
},
"controls": {
"actions": {
"back": "بگەڕێوە",
"next": "دواتر",
"previous": "پێشتر",
"open": "بیکەوە",
"add": "زیادی بکە",
"remove": "لایبە",
"edit": "دەستکاری",
"save": "هەڵی بگرە",
"ok": "باشە",
"done": "تەواو",
"confirm": "پشتڕاستی بکەوە",
"continue": "بەردەوام بە",
"compose": "پۆست بکە",
"cancel": "هەڵوەشاندنەوه",
"discard": "وازی لێ بێنە",
"try_again": "هەوڵ بدەوە",
"take_photo": "وێنە بگرە",
"save_photo": "هەڵی بگرە",
"copy_photo": "لەبەری بگرەوە",
"sign_in": "بچۆ ژوورەوە",
"sign_up": "خۆت تۆمار بکە",
"see_more": "زیاتر ببینە",
"preview": "پێشبینین",
"share": "هاوبەشی بکە",
"share_user": "%s هاوبەش بکە",
"share_post": "هاوبەشی بکە",
"open_in_safari": "لە Safari بیکەوە",
"open_in_browser": "لە وێبگەڕ بیکەوە",
"find_people": "خەڵک بدۆزەوە",
"manually_search": "خۆت بگەڕێ",
"skip": "بیپەڕێنە",
"reply": "وەڵامی بدەوە",
"report_user": "سکاڵا لە %s بکە",
"block_domain": "%s ئاستەنگ بکە",
"unblock_domain": "%s ئاستەنگ مەکە",
"settings": "رێکخستنەکان",
"delete": "بیسڕەوە"
},
"tabs": {
"home": "ماڵەوە",
"search": "بگەڕێ",
"notification": "ئاگادارکردنەوەکان",
"profile": "پرۆفایل"
},
"keyboard": {
"common": {
"switch_to_tab": "بڕۆ بۆ %s",
"compose_new_post": "پۆستێکی نوێ بکە",
"show_favorites": "بەدڵبووەکان ببینە",
"open_settings": "ڕێکخستنەکان بکەوە"
},
"timeline": {
"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": "بەشی پێشتر",
"next_section": "دەستنیشانکراوی دواتر"
}
},
"status": {
"user_reblogged": "%s پۆست کرایەوە",
"user_replied_to": "لە وەڵامدا بۆ %s",
"show_post": "پۆستەکە نیشان بدە",
"show_user_profile": "پرۆفایلەکەی نیشان بدە",
"content_warning": "ئاگاداریی ناوەڕۆک",
"sensitive_content": "ناوەڕۆکی هەستیار",
"media_content_warning": "دەستی پیا بنێ بۆ نیشاندانی",
"tap_to_reveal": "دەستی پیا بنێ بۆ نیشاندانی",
"poll": {
"vote": "دەنگ بدە",
"closed": "داخراوە"
},
"actions": {
"reply": "وەڵامی بدەوە",
"reblog": "پۆستی بکەوە",
"unreblog": "پۆستکردنەکە بگەڕێنەوە",
"favorite": "بەدڵمە",
"unfavorite": "بەدڵبوونەکە بگەڕێنەوە",
"menu": "پێڕست",
"hide": "بیشارەوە",
"show_image": "وێنەکە نیشان بدە",
"show_gif": "گیفەکە نیشان بدە",
"show_video_player": "ڤیدیۆکە لێ بدە",
"tap_then_hold_to_show_menu": "دەستی پیا بنێ و بیگرە بۆ نیشاندانی پێڕستەکە"
},
"tag": {
"url": "بەستەر",
"mention": "ئاماژە",
"link": "بەستەر",
"hashtag": "هاشتاگ",
"email": "ئیمێڵ",
"emoji": "ئیمۆجی"
},
"visibility": {
"unlisted": "هەرکەسێک دەتوانێت ئەم پۆستە ببینێت بەڵام ناچێتە بەردەمیان.",
"private": "تەنیا شوێنکەوتووەکانی دەتوانن ئەم پۆستە ببینن.",
"private_from_me": "تەنیا شوێنکەوتووەکانم دەتوانن ئەم پۆستە ببینن.",
"direct": "تەنیا بەکارهێنەرە ئاماژە پێکراوەکە دەتوانێت ئەم پۆستە ببینێت."
}
},
"friendship": {
"follow": "شوێنی بکەوە",
"following": "شوێنی دەکەویت",
"request": "داوای لێ بکە",
"pending": "داوات کردووە",
"block": "ئاستەنگی بکە",
"block_user": "%s ئاستەنگ بکە",
"block_domain": "%s ئاستەنگ بکە",
"unblock": "ئاستەنگی مەکە",
"unblock_user": "%s ئاستەنگ مەکە",
"blocked": "ئاستەنگ کراوە",
"mute": "بێدەنگی بکە",
"mute_user": "%s بێدەنگە",
"unmute": "بێدەنگی مەکە",
"unmute_user": "%s بێدەنگ مەکە",
"muted": "بێدەنگ کراوە",
"edit_info": "دەستکاری"
},
"timeline": {
"filtered": "پاڵێوراو",
"timestamp": {
"now": "ئێستا"
},
"loader": {
"load_missing_posts": "پۆستە ماوەکان بار بکە",
"loading_missing_posts": "پۆستە ماوەکان بار دەکرێن...",
"show_more_replies": "وەڵامی زیاتر نیشان بدە"
},
"header": {
"no_status_found": "هیچ پۆستێک نەدۆزرایەوە",
"blocking_warning": "ناتوانیت پرۆفایلی ئەم بەکارهێنەرە ببینیت\nهەتا ئاستەنگەکەیان لادەبەیت.\nپرۆفایلەکەت ئاوها لایان دەردەکەوێت.",
"user_blocking_warning": "ناتوانیت پرۆفایلی %s ببینیت\nهەتا ئاستەنگەکەیان لادەبەیت.\nپرۆفایلەکەت ئاوها لایان دەردەکەوێت.",
"blocked_warning": "ناتوانیت پرۆفایلی ئەم بەکارهێنەرە ببینیت\nتا ئەو کاتەی ئاستەنگەکەت لادەبات.",
"user_blocked_warning": "ناتوانیت پرۆفایلی %s ببینیت\nتا ئەو کاتەی ئاستەنگەکەت لادەبات.",
"suspended_warning": "ئەم بەکارهێنەرە ڕاگیراوە.",
"user_suspended_warning": "هەژماری %s ڕاگیراوە."
}
}
}
},
"scene": {
"welcome": {
"slogan": "تۆڕی کۆمەڵایەتی\nلەژێر دەستەکانت.",
"get_started": "دەست پێ بکە",
"log_in": "بچۆ ژوورەوە"
},
"server_picker": {
"title": "ماستۆدۆن لە چەندان بەکارهێنەر پێک دێت کە لە ڕاژەکاری جیاواز دان.",
"subtitle": "ڕاژەکارێکێکی گشتی یان دانەیەک لەسەر بنەمای حەزەکانت و هەرێمەکەت هەڵبژێرە.",
"subtitle_extend": "ڕاژەکارێکێکی گشتی یان دانەیەک لەسەر بنەمای حەزەکانت و هەرێمەکەت هەڵبژێرە. هەر ڕاژەکارێک لەلایەن ڕێکخراوێک یان تاکەکەسێک بەڕێوە دەبرێت.",
"button": {
"category": {
"all": "هەموو",
"all_accessiblity_description": "بەش: هەموو",
"academia": "ئەکادیمیا",
"activism": "چالاکی",
"food": "خواردن",
"furry": "furry",
"games": "یاری",
"general": "گشتی",
"journalism": "ڕۆژنامەوانی",
"lgbt": "lgbt",
"regional": "هەرێمی",
"art": "هونەر",
"music": "موزیک",
"tech": "تەکنۆلۆژیا"
},
"see_less": "کەمتر ببینە",
"see_more": "زیاتر ببینە"
},
"label": {
"language": "زمان",
"users": "بەکارهێنەر",
"category": "بەش"
},
"input": {
"placeholder": "بگەڕێ"
},
"empty_state": {
"finding_servers": "ڕاژەکار دەدۆزرێتەوە...",
"bad_network": "هەڵەیەک ڕوویدا لە کاتی بارکردن. لە هەبوونی هێڵی ئینتەرنێت دڵنیا بە.",
"no_results": "ئەنجام نییە"
}
},
"register": {
"title": "خۆت تۆمار بکە لە %s",
"input": {
"avatar": {
"delete": "بیسڕەوە"
},
"username": {
"placeholder": "ناوی بەکارهێنەر",
"duplicate_prompt": "ئەم ناوە گیراوە."
},
"display_name": {
"placeholder": "ناوی نیشاندان"
},
"email": {
"placeholder": "ئیمێڵ"
},
"password": {
"placeholder": "تێپەڕوشە",
"require": "تێپەڕوشەکەت لایەنی کەم پێویستیی هەیە بە:",
"character_limit": "8 پیت",
"accessibility": {
"checked": "هەڵبژێردراو",
"unchecked": "هەڵنەبژێردراو"
},
"hint": "دەبێت تێپەڕوشەکەت لایەنی کەم هەشت نووسە بێت"
},
"invite": {
"registration_user_invite_request": "بۆچی دەتەوێت بەشدار بیت؟"
}
},
"error": {
"item": {
"username": "ناوی بەکارهێنەر",
"email": "ئیمێڵ",
"password": "تێپەڕوشە",
"agreement": "ڕێککەوتن",
"locale": "زمان",
"reason": "هۆکار"
},
"reason": {
"blocked": "%s خزمەتگوزارییەکی ئیمێڵی ڕێپێنەدراو بەکار دەهێنێت",
"unreachable": "%s بوونی نییە",
"taken": "%s بەکار هێنراوە لەلایەن یەکێکی تر",
"reserved": "%s وشەیەکی گیراوە",
"accepted": "%s دەبێت قبووڵ بکرێت",
"blank": "%s پێویستە",
"invalid": "%s نادروستە",
"too_long": "%s زۆر درێژە",
"too_short": "%s زۆر کورتە",
"inclusion": "%s پشتگیرینەکراوە"
},
"special": {
"username_invalid": "ناوی بەکارهێنەر دەبێت تەنیا پیت، ژمارە و هێڵی ژێرەوەی تێدا بێت",
"username_too_long": "ناوی بەکارهێنەرەکە زۆر درێژە (ناکرێت لە 30 نووسە زیاتر بێت)",
"email_invalid": "ئەم ئیمێڵە دروست نییە",
"password_too_short": "تێپەڕوشەکە زۆر کورتە (نابێت لە 8 نووسە کەمتر بێت)"
}
}
},
"server_rules": {
"title": "یاساکانی ڕاژەکار",
"subtitle": "ئەمانە لەلایەن چاودێرەکانی %s دانراون و ناچار دەکرێن.",
"prompt": "بەردەوامبوونت واتای ڕازیبوونتە بە مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتێتیی %s.",
"terms_of_service": "مەرجەکانی بەکارهێنان",
"privacy_policy": "سیاسەتی تایبەتێتی",
"button": {
"confirm": "ڕازیم"
}
},
"confirm_email": {
"title": "کۆتا شت.",
"subtitle": "بۆ پشتڕاستکردنەوەی هەژمارەکەت ئەو بەستەرە بکەوە کە بە ئیمێڵ بۆمان ناردوویت.",
"button": {
"open_email_app": "بەرنامەی ئیمێڵەکەت بکەوە",
"resend": "بینێرەوە"
},
"dont_receive_email": {
"title": "ئیمێڵەکەت ببینە",
"description": "دڵنیا بە لەوەی ئیمێڵەکەت دروستە و هەموو بوخچەکانت بگەڕێ.",
"resend_email": "ئیمێڵەکە بنێرەوە"
},
"open_email_app": {
"title": "ئیمێڵەکانت ببینە.",
"description": "ئیمێڵێکمان بۆ ناردیت. هەموو بوخچەکانت ببینە.",
"mail": "Mail",
"open_email_client": "بەرنامەی ئیمێڵەکەت بکەوە"
}
},
"home_timeline": {
"title": "ماڵەوە",
"navigation_bar_state": {
"offline": "دەرهێڵ",
"new_posts": "پۆستە نوێکان ببینە",
"published": "بڵاوکرایەوە!",
"Publishing": "پۆستەکە بڵاو دەکرێتەوە..."
}
},
"suggestion_account": {
"title": "خەڵک بدۆزەوە",
"follow_explain": "کاتێک شوێنی یەکێک دەکەویت، پۆستەکانی دێتە بەردەمت."
},
"compose": {
"title": {
"new_post": "پۆستی نوێ",
"new_reply": "وەڵامی نوێ"
},
"media_selection": {
"camera": "وێنە بگرە",
"photo_library": "وێنەکان",
"browse": "بگەڕێ"
},
"content_input_placeholder": "دەتەوێت چی پۆست بکەیت؟",
"compose_action": "بڵاوی بکەوە",
"replying_to_user": "لە وەڵامدا بۆ %s",
"attachment": {
"photo": "وێنە",
"video": "ڤیدیۆ",
"attachment_broken": "ئەم %sـە تێک چووە و ناتوانیت بەرزی بکەیتەوە.",
"description_photo": "وێنەکەت بۆ نابیناکان باس بکە...",
"description_video": "ڤیدیۆکەت بۆ نابیناکان باس بکە..."
},
"poll": {
"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": "ئاگادارییەکەت لێرە بنووسە..."
},
"visibility": {
"public": "گشتی",
"unlisted": "پێشنیارنەکراو",
"private": "تەنیا شوێنکەوتووان",
"direct": "ئەوانەی ئاماژەیان پێ دەکەم"
},
"auto_complete": {
"space_to_add": "بۆشایی دابنێ بۆ زیادکردن"
},
"accessibility": {
"append_attachment": "پێوەکراوی پێوە بکە",
"append_poll": "دەنگدان زیاد بکە",
"remove_poll": "دانگدانەکە لابە",
"custom_emoji_picker": "هەڵبژێری ئیمۆجی",
"enable_content_warning": "ئاگاداریی ناوەڕۆک چالاک بکە",
"disable_content_warning": "ئاگاداریی ناوەڕۆک ناچالاک بکە",
"post_visibility_menu": "پێڕستی شێوازی دەرکەوتنی پۆست"
},
"keyboard": {
"discard_post": "پۆستەکە هەڵوەشێنەوە",
"publish_post": "پۆستە بڵاو بکەوە",
"toggle_poll": "دەنگدانەکە نیشان بدە",
"toggle_content_warning": "ئاگاداریی ناوەڕۆک نیشان بدە",
"append_attachment_entry": "پێوەکراوی پێوە بکە - %s",
"select_visibility_entry": "شێوازی دەرکەوتن هەڵبژێرە - %s"
}
},
"profile": {
"dashboard": {
"posts": "پۆستەکان",
"following": "شوێنکەوتن",
"followers": "شوێنکەوتوو"
},
"fields": {
"add_row": "ڕیز زیاد بکە",
"placeholder": {
"label": "ناونیشان",
"content": "ناوەڕۆک"
}
},
"segmented_control": {
"posts": "پۆستەکان",
"replies": "وەڵامەکان",
"posts_and_replies": "پۆست و وەڵامەکان",
"media": "میدیا",
"about": "دەربارە"
},
"relationship_action_alert": {
"confirm_mute_user": {
"title": "بێدەنگی بکە",
"message": "دڵیا ببەوە بۆ بێدەنگکردنی %s"
},
"confirm_unmute_user": {
"title": "بێدەنگی مەکە",
"message": "دڵنیا ببەوە بۆ بێدەنگنەکردنی %s"
},
"confirm_block_user": {
"title": "ئاستەنگی بکە",
"message": "دڵنیا ببەوە بۆ ئاستەنگکردنی %s"
},
"confirm_unblock_user": {
"title": "ئاستەنگی مەکە",
"message": "دڵنیا ببەوە بۆ لابردنی ئاستەنگی %s"
}
},
"accessibility": {
"show_avatar_image": "وێنەکە نیشان بدە",
"edit_avatar_image": "دەستکاریی وێنەکە بکە",
"show_banner_image": "وێنەکەی پشتەوە نیشان بدە",
"double_tap_to_open_the_list": "دوو جار دەستی پیا بنێ بۆ کردنەوەی لیستەکە"
}
},
"follower": {
"footer": "شوێنکەوتووەکانی لە ڕاژەکارەکانی ترەوە نیشان نادرێت."
},
"following": {
"footer": "شوێنکەوتنەکانی بۆ هەژماری ڕاژەکارەکانی تر نیشان نادرێت."
},
"search": {
"title": "بگەڕێ",
"search_bar": {
"placeholder": "بۆ هاشتاگ و بەکارهێنەر بگەڕێ",
"cancel": "بگەڕێوە"
},
"recommend": {
"button_text": "هەمووی ببینە",
"hash_tag": {
"title": "ڕۆژەڤ",
"description": "ئەو هاشتاگانەی سەرنجی زۆریان لەسەرە",
"people_talking": "%s کەس باسی دەکەن"
},
"accounts": {
"title": "لەوانەیە حەزت لەمانە بێت",
"description": "لەوانەیە بتەوێت شوێنی ئەم هەژمارانە بکەویت",
"follow": "شوێنی بکەوە"
}
},
"searching": {
"segment": {
"all": "هەمووی",
"people": "خەڵک",
"hashtags": "هاشتاگ",
"posts": "پۆست"
},
"empty_state": {
"no_results": "هیچ ئەنجامێک نەدۆزرایەوە"
},
"recent_search": "گەڕانەکانی پێشترت",
"clear": "بیانسڕەوە"
}
},
"discovery": {
"tabs": {
"posts": "پۆستەکان",
"hashtags": "هاشتاگەکان",
"news": "هەواڵەکان",
"community": "Community",
"for_you": "بۆ تۆ"
},
"intro": "پۆست هەیە سەرنجیان لەسەرە لە گۆشەکەی تۆ."
},
"favorite": {
"title": "بەدڵبووەکانت"
},
"notification": {
"title": {
"Everything": "هەمووی",
"Mentions": "ئاماژەکان"
},
"notification_description": {
"followed_you": "شوێنت کەوت",
"favorited_your_post": "پۆستەکەتی بەدڵ بوو",
"reblogged_your_post": "پۆستەکەتی پۆست کردەوە",
"mentioned_you": "ئاماژەی پێت کرد",
"request_to_follow_you": "داواکاری بۆ شوێنکەوتنت",
"poll_has_ended": "دەنگدانەکە کۆتایی هات"
},
"keyobard": {
"show_everything": "هەموو شتێک نیشان بدە",
"show_mentions": "ئاماژەکان نیشان بدە"
}
},
"thread": {
"back_title": "پۆستەکە",
"title": "پۆستی %s"
},
"settings": {
"title": "رێکخستنەکان",
"section": {
"appearance": {
"title": "ڕووخسار",
"automatic": "خۆکار",
"light": "ڕووناک",
"dark": "تاریک"
},
"look_and_feel": {
"title": "ڕووخسار و هەست",
"use_system": "سیستەم",
"really_dark": "زۆر تاریک",
"sorta_dark": "کەم تاریک",
"light": "ڕووناک"
},
"notifications": {
"title": "ئاماژەکان نیشان بدە",
"favorites": "پۆستەکەمی بەدڵ دەبێت",
"follows": "شوێنم دەکەوێت",
"boosts": "پۆستەکەم پۆست دەکاتەوە",
"mentions": "ئاماژەم پێ دەکات",
"trigger": {
"anyone": "هەرکەسێک",
"follower": "شوێنکەوتووێکم",
"follow": "هەرکەسێک شوێنی دەکەوم",
"noone": "هیچکەس",
"title": "ئاگادارم بکەوە کاتێک"
}
},
"preference": {
"title": "پەسەندەکان",
"true_black_dark_mode": "دۆخی ڕەش",
"disable_avatar_animation": "وێنە جووڵاوەکان ناچالاک بکە",
"disable_emoji_animation": "ئیمۆجییە جووڵاوەکان ناچالاک بکە",
"using_default_browser": "وێبگەڕی بنەڕەت بەکار بهێنە بۆ کردنەوەی بەستەرەکان",
"open_links_in_mastodon": "بەستەرەکان لەناو ماستۆدۆن بکەوە"
},
"boring_zone": {
"title": "ناوچە بێنازەکە",
"account_settings": "ڕێکخستنەکانی هەژمار",
"terms": "مەرجەکانی بەکارهێنان",
"privacy": "سیاسەتی تایبەتێتی"
},
"spicy_zone": {
"title": "ناوچەی گەرم",
"clear": "بیرگە پاک بکەوە",
"signout": "دەربچۆ"
}
},
"footer": {
"mastodon_description": "ماستۆدۆن پڕۆژەیەکی سەرچاوەکراوەیە. دەتوانیت لە گیتهەب لە کێشەکان ئاگادارمان بکەیتەوە: %s (%s)"
},
"keyboard": {
"close_settings_window": "ڕێخستنەکان دابخە"
}
},
"report": {
"title_report": "سکاڵای لێ بکە",
"title": "سکاڵا لە %s بکە",
"step1": "هەنگاوی 1 لە 2",
"step2": "هەنگاوی 2 لە 2",
"content1": "پۆستی تر هەیە بتەوێت سکاڵایان لێ بکەیت؟",
"content2": "هیچ شتێکی هەیە بە چاودێرەکان بیزانن دەربارەی ئەم سکاڵایە؟",
"report_sent_title": "سپاس بۆ سکاڵاکات، پێیدا دەچینەوە.",
"send": "سکاڵاکە بنێرە",
"skip_to_send": "بەبێ لێدوان بینێرە",
"text_placeholder": "ڕوونکردنەوەی زۆرتر بدە",
"reported": "سکاڵای لێ کرا"
},
"preview": {
"keyboard": {
"close_preview": "پێشبینینەکە دابخە",
"show_next": "هی دواتر نیشان بدە",
"show_previous": "هی پێشتر نیشان بدە"
}
},
"account_list": {
"tab_bar_hint": "هەژماری ئێستا: %s. دوو جا دەستی پیا بنێ بۆ کردنەوەی پێڕستی هەژمارەکان.",
"dismiss_account_switcher": "پێڕستی هەژمارەکان دابخە",
"add_account": "هەژمارێک زیاد بکە"
},
"wizard": {
"new_in_mastodon": "نوێ",
"multiple_account_switch_intro_description": "هەژمارەکەت بگۆڕە بە دەستڕاگرتن لەسەر دوگمەی پرۆفایلەکە.",
"accessibility_hint": "دوو جار دەستی پیا بنێ بۆ داخستنی"
}
}
}

View File

@ -0,0 +1,6 @@
{
"NSCameraUsageDescription": "بەکار دێت بۆ گرتنی وێنەیەک بۆ پۆستەکە",
"NSPhotoLibraryAddUsageDescription": "بەکار دێت بۆ هەڵگرتنی وێنە",
"NewPostShortcutItemTitle": "پۆستی نوێ",
"SearchShortcutItemTitle": "بگەڕێ"
}

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Beiträge", "posts": "Beiträge",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "Nachrichten", "news": "Nachrichten",
"community": "Community",
"for_you": "Für dich" "for_you": "Für dich"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Mensajes", "posts": "Mensajes",
"hashtags": "Etiquetas", "hashtags": "Etiquetas",
"news": "Novedades", "news": "Novedades",
"community": "Community",
"for_you": "Para vos" "for_you": "Para vos"
}, },
"intro": "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon." "intro": "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Publicaciones", "posts": "Publicaciones",
"hashtags": "Etiquetas", "hashtags": "Etiquetas",
"news": "Noticias", "news": "Noticias",
"community": "Community",
"for_you": "Para Ti" "for_you": "Para Ti"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Argitalpenak", "posts": "Argitalpenak",
"hashtags": "Traolak", "hashtags": "Traolak",
"news": "Albisteak", "news": "Albisteak",
"community": "Community",
"for_you": "Zuretzat" "for_you": "Zuretzat"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>a11y.plural.count.unread.notification</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@notification_count_unread_notification@</string>
<key>notification_count_unread_notification</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 unread notification</string>
<key>other</key>
<string>%ld unread notification</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_exceeds</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Input limit exceeds %#@character_count@</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 character</string>
<key>other</key>
<string>%ld characters</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_remains</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Input limit remains %#@character_count@</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 character</string>
<key>other</key>
<string>%ld characters</string>
</dict>
</dict>
<key>plural.count.metric_formatted.post</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%@ %#@post_count@</string>
<key>post_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>post</string>
<key>other</key>
<string>posts</string>
</dict>
</dict>
<key>plural.count.post</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@post_count@</string>
<key>post_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 post</string>
<key>other</key>
<string>%ld posts</string>
</dict>
</dict>
<key>plural.count.favorite</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@favorite_count@</string>
<key>favorite_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 favorite</string>
<key>other</key>
<string>%ld favorites</string>
</dict>
</dict>
<key>plural.count.reblog</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@reblog_count@</string>
<key>reblog_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 reblog</string>
<key>other</key>
<string>%ld reblogs</string>
</dict>
</dict>
<key>plural.count.reply</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@reply_count@</string>
<key>reply_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 reply</string>
<key>other</key>
<string>%ld replies</string>
</dict>
</dict>
<key>plural.count.vote</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@vote_count@</string>
<key>vote_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 vote</string>
<key>other</key>
<string>%ld votes</string>
</dict>
</dict>
<key>plural.count.voter</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@voter_count@</string>
<key>voter_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 voter</string>
<key>other</key>
<string>%ld voters</string>
</dict>
</dict>
<key>plural.people_talking</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_people_talking@</string>
<key>count_people_talking</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 people talking</string>
<key>other</key>
<string>%ld people talking</string>
</dict>
</dict>
<key>plural.count.following</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_following@</string>
<key>count_following</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 following</string>
<key>other</key>
<string>%ld following</string>
</dict>
</dict>
<key>plural.count.follower</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_follower@</string>
<key>count_follower</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 follower</string>
<key>other</key>
<string>%ld followers</string>
</dict>
</dict>
<key>date.year.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_year_left@</string>
<key>count_year_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 year left</string>
<key>other</key>
<string>%ld years left</string>
</dict>
</dict>
<key>date.month.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_month_left@</string>
<key>count_month_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 months left</string>
<key>other</key>
<string>%ld months left</string>
</dict>
</dict>
<key>date.day.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_day_left@</string>
<key>count_day_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 day left</string>
<key>other</key>
<string>%ld days left</string>
</dict>
</dict>
<key>date.hour.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_hour_left@</string>
<key>count_hour_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 hour left</string>
<key>other</key>
<string>%ld hours left</string>
</dict>
</dict>
<key>date.minute.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_minute_left@</string>
<key>count_minute_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 minute left</string>
<key>other</key>
<string>%ld minutes left</string>
</dict>
</dict>
<key>date.second.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_second_left@</string>
<key>count_second_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 second left</string>
<key>other</key>
<string>%ld seconds left</string>
</dict>
</dict>
<key>date.year.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_year_ago_abbr@</string>
<key>count_year_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1y ago</string>
<key>other</key>
<string>%ldy ago</string>
</dict>
</dict>
<key>date.month.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_month_ago_abbr@</string>
<key>count_month_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1M ago</string>
<key>other</key>
<string>%ldM ago</string>
</dict>
</dict>
<key>date.day.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_day_ago_abbr@</string>
<key>count_day_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1d ago</string>
<key>other</key>
<string>%ldd ago</string>
</dict>
</dict>
<key>date.hour.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_hour_ago_abbr@</string>
<key>count_hour_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1h ago</string>
<key>other</key>
<string>%ldh ago</string>
</dict>
</dict>
<key>date.minute.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_minute_ago_abbr@</string>
<key>count_minute_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1m ago</string>
<key>other</key>
<string>%ldm ago</string>
</dict>
</dict>
<key>date.second.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_second_ago_abbr@</string>
<key>count_second_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1s ago</string>
<key>other</key>
<string>%lds ago</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,619 @@
{
"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": "Delete Post",
"message": "Are you sure you want to delete this post?"
},
"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",
"compose": "Compose",
"cancel": "Cancel",
"discard": "Discard",
"try_again": "Try Again",
"take_photo": "Take Photo",
"save_photo": "Save Photo",
"copy_photo": "Copy Photo",
"sign_in": "Sign In",
"sign_up": "Sign Up",
"see_more": "See More",
"preview": "Preview",
"share": "Share",
"share_user": "Share %s",
"share_post": "Share Post",
"open_in_safari": "Open in Safari",
"open_in_browser": "Open in Browser",
"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",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
"vote": "Vote",
"closed": "Closed"
},
"actions": {
"reply": "Reply",
"reblog": "Reblog",
"unreblog": "Undo reblog",
"favorite": "Favorite",
"unfavorite": "Unfavorite",
"menu": "Menu",
"hide": "Hide",
"show_image": "Show image",
"show_gif": "Show GIF",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
},
"tag": {
"url": "URL",
"mention": "Mention",
"link": "Link",
"hashtag": "Hashtag",
"email": "Email",
"emoji": "Emoji"
},
"visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.",
"private": "Only their followers can see this post.",
"private_from_me": "Only my followers can see this post.",
"direct": "Only mentioned user can see this post."
}
},
"friendship": {
"follow": "Follow",
"following": "Following",
"request": "Request",
"pending": "Pending",
"block": "Block",
"block_user": "Block %s",
"block_domain": "Block %s",
"unblock": "Unblock",
"unblock_user": "Unblock %s",
"blocked": "Blocked",
"mute": "Mute",
"mute_user": "Mute %s",
"unmute": "Unmute",
"unmute_user": "Unmute %s",
"muted": "Muted",
"edit_info": "Edit Info"
},
"timeline": {
"filtered": "Filtered",
"timestamp": {
"now": "Now"
},
"loader": {
"load_missing_posts": "Load missing posts",
"loading_missing_posts": "Loading missing posts...",
"show_more_replies": "Show more replies"
},
"header": {
"no_status_found": "No Post Found",
"blocking_warning": "You cant view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.",
"user_blocking_warning": "You cant view %ss profile\nuntil you unblock them.\nYour profile looks like this to them.",
"blocked_warning": "You cant view this users profile\nuntil they unblock you.",
"user_blocked_warning": "You cant view %ss profile\nuntil they unblock you.",
"suspended_warning": "This user has been suspended.",
"user_suspended_warning": "%ss account has been suspended."
}
}
}
},
"scene": {
"welcome": {
"slogan": "Social networking\nback in your hands.",
"get_started": "Get Started",
"log_in": "Log In"
},
"server_picker": {
"title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": {
"category": {
"all": "All",
"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": "Search servers"
},
"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": "Lets get you set up on %s",
"input": {
"avatar": {
"delete": "Delete"
},
"username": {
"placeholder": "username",
"duplicate_prompt": "This username is taken."
},
"display_name": {
"placeholder": "display name"
},
"email": {
"placeholder": "email"
},
"password": {
"placeholder": "password",
"require": "Your password needs at least:",
"character_limit": "8 characters",
"accessibility": {
"checked": "checked",
"unchecked": "unchecked"
},
"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 (cant be longer than 30 characters)",
"email_invalid": "This is not a valid email address",
"password_too_short": "Password is too short (must be at least 8 characters)"
}
}
},
"server_rules": {
"title": "Some ground rules.",
"subtitle": "These are set and enforced by the %s moderators.",
"prompt": "By continuing, youre subject to the terms of service and privacy policy for %s.",
"terms_of_service": "terms of service",
"privacy_policy": "privacy policy",
"button": {
"confirm": "I Agree"
}
},
"confirm_email": {
"title": "One last thing.",
"subtitle": "Tap the link we emailed to you to verify your account.",
"button": {
"open_email_app": "Open Email App",
"resend": "Resend"
},
"dont_receive_email": {
"title": "Check your email",
"description": "Check if your email address is correct as well as your junk folder if you havent.",
"resend_email": "Resend Email"
},
"open_email_app": {
"title": "Check your inbox.",
"description": "We just sent you an email. Check your junk folder if you havent.",
"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, youll 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 whats on your mind",
"compose_action": "Publish",
"replying_to_user": "replying to %s",
"attachment": {
"photo": "photo",
"video": "video",
"attachment_broken": "This %s is broken and cant 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",
"posts_and_replies": "Posts and Replies",
"media": "Media",
"about": "About"
},
"relationship_action_alert": {
"confirm_mute_user": {
"title": "Mute Account",
"message": "Confirm to mute %s"
},
"confirm_unmute_user": {
"title": "Unmute Account",
"message": "Confirm to unmute %s"
},
"confirm_block_user": {
"title": "Block Account",
"message": "Confirm to block %s"
},
"confirm_unblock_user": {
"title": "Unblock Account",
"message": "Confirm to unblock %s"
}
},
"accessibility": {
"show_avatar_image": "Show avatar image",
"edit_avatar_image": "Edit avatar image",
"show_banner_image": "Show banner image",
"double_tap_to_open_the_list": "Double tap to open the list"
}
},
"follower": {
"footer": "Followers from other servers are not displayed."
},
"following": {
"footer": "Follows from other servers are not displayed."
},
"search": {
"title": "Search",
"search_bar": {
"placeholder": "Search hashtags and users",
"cancel": "Cancel"
},
"recommend": {
"button_text": "See All",
"hash_tag": {
"title": "Trending on Mastodon",
"description": "Hashtags that are getting quite a bit of attention",
"people_talking": "%s people are talking"
},
"accounts": {
"title": "Accounts you might like",
"description": "You may like to follow these accounts",
"follow": "Follow"
}
},
"searching": {
"segment": {
"all": "All",
"people": "People",
"hashtags": "Hashtags",
"posts": "Posts"
},
"empty_state": {
"no_results": "No results"
},
"recent_search": "Recent searches",
"clear": "Clear"
}
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"community": "Community",
"for_you": "For You"
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"
},
"notification": {
"title": {
"Everything": "Everything",
"Mentions": "Mentions"
},
"notification_description": {
"followed_you": "followed you",
"favorited_your_post": "favorited your post",
"reblogged_your_post": "reblogged your post",
"mentioned_you": "mentioned you",
"request_to_follow_you": "request to follow you",
"poll_has_ended": "poll has ended"
},
"keyobard": {
"show_everything": "Show Everything",
"show_mentions": "Show Mentions"
}
},
"thread": {
"back_title": "Post",
"title": "Post from %s"
},
"settings": {
"title": "Settings",
"section": {
"appearance": {
"title": "Appearance",
"automatic": "Automatic",
"light": "Always Light",
"dark": "Always Dark"
},
"look_and_feel": {
"title": "Look and Feel",
"use_system": "Use System",
"really_dark": "Really Dark",
"sorta_dark": "Sorta Dark",
"light": "Light"
},
"notifications": {
"title": "Notifications",
"favorites": "Favorites my post",
"follows": "Follows me",
"boosts": "Reblogs my post",
"mentions": "Mentions me",
"trigger": {
"anyone": "anyone",
"follower": "a follower",
"follow": "anyone I follow",
"noone": "no one",
"title": "Notify me when"
}
},
"preference": {
"title": "Preferences",
"true_black_dark_mode": "True black dark mode",
"disable_avatar_animation": "Disable animated avatars",
"disable_emoji_animation": "Disable animated emojis",
"using_default_browser": "Use default browser to open links",
"open_links_in_mastodon": "Open links in Mastodon"
},
"boring_zone": {
"title": "The Boring Zone",
"account_settings": "Account Settings",
"terms": "Terms of Service",
"privacy": "Privacy Policy"
},
"spicy_zone": {
"title": "The Spicy Zone",
"clear": "Clear Media Cache",
"signout": "Sign Out"
}
},
"footer": {
"mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
},
"keyboard": {
"close_settings_window": "Close Settings Window"
}
},
"report": {
"title_report": "Report",
"title": "Report %s",
"step1": "Step 1 of 2",
"step2": "Step 2 of 2",
"content1": "Are there any other posts youd like to add to the report?",
"content2": "Is there anything the moderators should know about this report?",
"report_sent_title": "Thanks for reporting, well look into this.",
"send": "Send Report",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
"reported": "REPORTED"
},
"preview": {
"keyboard": {
"close_preview": "Close Preview",
"show_next": "Show Next",
"show_previous": "Show Previous"
}
},
"account_list": {
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
"dismiss_account_switcher": "Dismiss Account Switcher",
"add_account": "Add Account"
},
"wizard": {
"new_in_mastodon": "New in Mastodon",
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
"accessibility_hint": "Double tap to dismiss this wizard"
}
}
}

View File

@ -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"
}

View File

@ -498,6 +498,7 @@
"posts": "Messages", "posts": "Messages",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "Actualité", "news": "Actualité",
"community": "Community",
"for_you": "Pour vous" "for_you": "Pour vous"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Postaichean", "posts": "Postaichean",
"hashtags": "Tagaichean hais", "hashtags": "Tagaichean hais",
"news": "Naidheachdan", "news": "Naidheachdan",
"community": "Community",
"for_you": "Dhut-sa" "for_you": "Dhut-sa"
}, },
"intro": "Seo na postaichean fèillmhor nad cheàrnaidh de Mhastodon." "intro": "Seo na postaichean fèillmhor nad cheàrnaidh de Mhastodon."

View File

@ -145,56 +145,56 @@
"menu": "Menú", "menu": "Menú",
"hide": "Agochar", "hide": "Agochar",
"show_image": "Mostrar a imaxe", "show_image": "Mostrar a imaxe",
"show_gif": "Show GIF", "show_gif": "Mostrar GIF",
"show_video_player": "Show video player", "show_video_player": "Mostrar reprodutor de vídeo",
"tap_then_hold_to_show_menu": "Tap then hold to show menu" "tap_then_hold_to_show_menu": "Toca e mantén preso para menú"
}, },
"tag": { "tag": {
"url": "URL", "url": "URL",
"mention": "Mention", "mention": "Mención",
"link": "Link", "link": "Ligazón",
"hashtag": "Hashtag", "hashtag": "Cancelo",
"email": "Email", "email": "Email",
"emoji": "Emoji" "emoji": "Emoticona"
}, },
"visibility": { "visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.", "unlisted": "A publicación é visible para calquera pero non aparece na cronoloxía pública.",
"private": "Only their followers can see this post.", "private": "Só as seguidoras poden ver a publicación.",
"private_from_me": "Only my followers can see this post.", "private_from_me": "Só as miñas seguidoras poden ver esta publicación.",
"direct": "Only mentioned user can see this post." "direct": "Só a usuaria mencionada pode ver a publicación."
} }
}, },
"friendship": { "friendship": {
"follow": "Follow", "follow": "Seguir",
"following": "Following", "following": "Seguindo",
"request": "Request", "request": "Solicitar",
"pending": "Pending", "pending": "Pendente",
"block": "Block", "block": "Bloquear",
"block_user": "Block %s", "block_user": "Bloquear a %s",
"block_domain": "Block %s", "block_domain": "Bloquear a %s",
"unblock": "Unblock", "unblock": "Desbloquear",
"unblock_user": "Unblock %s", "unblock_user": "Desbloquear a %s",
"blocked": "Blocked", "blocked": "Bloqueada",
"mute": "Mute", "mute": "Acalar",
"mute_user": "Mute %s", "mute_user": "Acalar a %s",
"unmute": "Unmute", "unmute": "Non Acalar",
"unmute_user": "Unmute %s", "unmute_user": "Deixar de acalar a @%s",
"muted": "Muted", "muted": "Acalada",
"edit_info": "Edit Info" "edit_info": "Editar info"
}, },
"timeline": { "timeline": {
"filtered": "Filtered", "filtered": "Filtrado",
"timestamp": { "timestamp": {
"now": "Now" "now": "Agora"
}, },
"loader": { "loader": {
"load_missing_posts": "Load missing posts", "load_missing_posts": "Cargar publicacións que faltan",
"loading_missing_posts": "Loading missing posts...", "loading_missing_posts": "Cargando as publicacións que faltan...",
"show_more_replies": "Show more replies" "show_more_replies": "Mostrar máis respostas"
}, },
"header": { "header": {
"no_status_found": "No Post Found", "no_status_found": "Non se atopa a publicación",
"blocking_warning": "You cant view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", "blocking_warning": "Non podes ver o perfil da usuaria\nata que a desbloquees.\nAsí ven outras o teu perfil.",
"user_blocking_warning": "You cant view %ss profile\nuntil you unblock them.\nYour profile looks like this to them.", "user_blocking_warning": "You cant view %ss profile\nuntil you unblock them.\nYour profile looks like this to them.",
"blocked_warning": "You cant view this users profile\nuntil they unblock you.", "blocked_warning": "You cant view this users profile\nuntil they unblock you.",
"user_blocked_warning": "You cant view %ss profile\nuntil they unblock you.", "user_blocked_warning": "You cant view %ss profile\nuntil they unblock you.",
@ -207,17 +207,17 @@
"scene": { "scene": {
"welcome": { "welcome": {
"slogan": "Social networking\nback in your hands.", "slogan": "Social networking\nback in your hands.",
"get_started": "Get Started", "get_started": "Comezar",
"log_in": "Log In" "log_in": "Acceder"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon fórmano as persoas das diferentes comunidades.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Elixe unha comunidade en función dos teus intereses, rexión ou unha de propósito xeral.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Elixe unha comunidade en función dos teus intereses, rexión ou unha de propósito xeral. Cada comunidade está xestionada por unha organización totalmente independente ou unha única persoa.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "Todo",
"all_accessiblity_description": "Category: All", "all_accessiblity_description": "Categoría: Todo",
"academia": "academia", "academia": "academia",
"activism": "activismo", "activism": "activismo",
"food": "comida", "food": "comida",
@ -374,16 +374,16 @@
"thirty_minutes": "30 minutes", "thirty_minutes": "30 minutes",
"one_hour": "1 Hour", "one_hour": "1 Hour",
"six_hours": "6 Hours", "six_hours": "6 Hours",
"one_day": "1 Day", "one_day": "1 Día",
"three_days": "3 Days", "three_days": "3 Días",
"seven_days": "7 Days", "seven_days": "7 Días",
"option_number": "Option %ld" "option_number": "Opción %ld"
}, },
"content_warning": { "content_warning": {
"placeholder": "Write an accurate warning here..." "placeholder": "Escribe o teu aviso aquí..."
}, },
"visibility": { "visibility": {
"public": "Public", "public": "Público",
"unlisted": "Non listado", "unlisted": "Non listado",
"private": "Só para seguidoras", "private": "Só para seguidoras",
"direct": "Só para persoas mencionadas" "direct": "Só para persoas mencionadas"
@ -412,92 +412,93 @@
"profile": { "profile": {
"dashboard": { "dashboard": {
"posts": "publicacións", "posts": "publicacións",
"following": "following", "following": "seguindo",
"followers": "followers" "followers": "seguidoras"
}, },
"fields": { "fields": {
"add_row": "Add Row", "add_row": "Engadir fila",
"placeholder": { "placeholder": {
"label": "Label", "label": "Etiqueta",
"content": "Content" "content": "Contido"
} }
}, },
"segmented_control": { "segmented_control": {
"posts": "Posts", "posts": "Publicacións",
"replies": "Replies", "replies": "Respostas",
"posts_and_replies": "Posts and Replies", "posts_and_replies": "Publicacións e respostas",
"media": "Media", "media": "Multimedia",
"about": "About" "about": "Acerca de"
}, },
"relationship_action_alert": { "relationship_action_alert": {
"confirm_mute_user": { "confirm_mute_user": {
"title": "Mute Account", "title": "Acalar conta",
"message": "Confirm to mute %s" "message": "Confirma Acalar a %s"
}, },
"confirm_unmute_user": { "confirm_unmute_user": {
"title": "Unmute Account", "title": "Retirar acalado da Conta",
"message": "Confirm to unmute %s" "message": "Confirma restablecer a %s"
}, },
"confirm_block_user": { "confirm_block_user": {
"title": "Block Account", "title": "Bloquear Conta",
"message": "Confirm to block %s" "message": "Confirma o bloqueo de %s"
}, },
"confirm_unblock_user": { "confirm_unblock_user": {
"title": "Unblock Account", "title": "Desbloquear Conta",
"message": "Confirm to unblock %s" "message": "Confirma o desbloqueo de %s"
} }
}, },
"accessibility": { "accessibility": {
"show_avatar_image": "Show avatar image", "show_avatar_image": "Mostrar imaxe de avatar",
"edit_avatar_image": "Edit avatar image", "edit_avatar_image": "Editar imaxe de avatar",
"show_banner_image": "Show banner image", "show_banner_image": "Mostrar imaxe de cabeceira",
"double_tap_to_open_the_list": "Double tap to open the list" "double_tap_to_open_the_list": "Dous toques para abrir a lista"
} }
}, },
"follower": { "follower": {
"footer": "Followers from other servers are not displayed." "footer": "Non se mostran seguidoras desde outros servidores."
}, },
"following": { "following": {
"footer": "Follows from other servers are not displayed." "footer": "Non se mostran os seguimentos desde outros servidores."
}, },
"search": { "search": {
"title": "Search", "title": "Procurar",
"search_bar": { "search_bar": {
"placeholder": "Search hashtags and users", "placeholder": "Buscar cancelos e usuarias",
"cancel": "Cancel" "cancel": "Cancelar"
}, },
"recommend": { "recommend": {
"button_text": "See All", "button_text": "Ver todo",
"hash_tag": { "hash_tag": {
"title": "Trending on Mastodon", "title": "En voga en Mastodon",
"description": "Hashtags that are getting quite a bit of attention", "description": "Cancelos que están recibindo moita atención",
"people_talking": "%s people are talking" "people_talking": "%s persoas están comentando"
}, },
"accounts": { "accounts": {
"title": "Accounts you might like", "title": "Contas que poderían gustarche",
"description": "You may like to follow these accounts", "description": "Mira se che interesan estas contas",
"follow": "Follow" "follow": "Seguir"
} }
}, },
"searching": { "searching": {
"segment": { "segment": {
"all": "All", "all": "Todo",
"people": "People", "people": "Persoas",
"hashtags": "Hashtags", "hashtags": "Cancelos",
"posts": "Posts" "posts": "Publicacións"
}, },
"empty_state": { "empty_state": {
"no_results": "No results" "no_results": "Sen resultados"
}, },
"recent_search": "Recent searches", "recent_search": "Buscas recentes",
"clear": "Clear" "clear": "Limpar"
} }
}, },
"discovery": { "discovery": {
"tabs": { "tabs": {
"posts": "Posts", "posts": "Publicacións",
"hashtags": "Hashtags", "hashtags": "Cancelos",
"news": "News", "news": "Novas",
"community": "Comunidade",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."
@ -585,23 +586,23 @@
} }
}, },
"report": { "report": {
"title_report": "Report", "title_report": "Denunciar",
"title": "Report %s", "title": "Denunciar a %s",
"step1": "Step 1 of 2", "step1": "Paso 1 de 2",
"step2": "Step 2 of 2", "step2": "Paso 2 de 2",
"content1": "Are there any other posts youd like to add to the report?", "content1": "Hai outras publicacións que desexes engadir á denuncia?",
"content2": "Is there anything the moderators should know about this report?", "content2": "Hai algo que a moderación deba saber acerca desta denuncia?",
"report_sent_title": "Thanks for reporting, well look into this.", "report_sent_title": "Grazas pola denuncia, investigarémola.",
"send": "Send Report", "send": "Enviar Denuncia",
"skip_to_send": "Send without comment", "skip_to_send": "Enviar sen comentarios",
"text_placeholder": "Type or paste additional comments", "text_placeholder": "Escribe ou pega comentarios adicionais",
"reported": "REPORTED" "reported": "DENUNCIADO"
}, },
"preview": { "preview": {
"keyboard": { "keyboard": {
"close_preview": "Close Preview", "close_preview": "Pechar vista previa",
"show_next": "Show Next", "show_next": "Mostrar Seguinte",
"show_previous": "Show Previous" "show_previous": "Mostar Anterior"
} }
}, },
"account_list": { "account_list": {

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -212,8 +212,8 @@
}, },
"server_picker": { "server_picker": {
"title": "Pilih sebuah server,\nserver manapun.", "title": "Pilih sebuah server,\nserver manapun.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "Semua", "all": "Semua",
@ -240,7 +240,7 @@
"category": "KATEGORI" "category": "KATEGORI"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Mencari server yang tersedia...", "finding_servers": "Mencari server yang tersedia...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Post", "posts": "Post",
"hashtags": "Hashtag", "hashtags": "Hashtag",
"news": "Notizie", "news": "Notizie",
"community": "Comunità",
"for_you": "Per Te" "for_you": "Per Te"
}, },
"intro": "Questi sono i post che stanno guadagnando popolarità nel tuo angolo di Mastodon." "intro": "Questi sono i post che stanno guadagnando popolarità nel tuo angolo di Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "投稿", "posts": "投稿",
"hashtags": "ハッシュタグ", "hashtags": "ハッシュタグ",
"news": "ニュース", "news": "ニュース",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Tisuffaɣ", "posts": "Tisuffaɣ",
"hashtags": "Ihacṭagen", "hashtags": "Ihacṭagen",
"news": "Isallen", "news": "Isallen",
"community": "Community",
"for_you": "I kečč·kem" "for_you": "I kečč·kem"
}, },
"intro": "Tigi d tisuffaɣ i d-ijebbden s waṭas deg tama-inek•inem n Mastodon." "intro": "Tigi d tisuffaɣ i d-ijebbden s waṭas deg tama-inek•inem n Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Şandî", "posts": "Şandî",
"hashtags": "Hashtag", "hashtags": "Hashtag",
"news": "Nûçe", "news": "Nûçe",
"community": "Civak",
"for_you": "Ji bo te" "for_you": "Ji bo te"
}, },
"intro": "Ev şandiyên ku di quncika Mastodon balê dikişîne." "intro": "Ev şandiyên ku di quncika Mastodon balê dikişîne."

View File

@ -212,8 +212,8 @@
}, },
"server_picker": { "server_picker": {
"title": "서버를 고르세요,\n아무 서버나 좋습니다.", "title": "서버를 고르세요,\n아무 서버나 좋습니다.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "모두", "all": "모두",
@ -240,7 +240,7 @@
"category": "분류" "category": "분류"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "Berichten", "posts": "Berichten",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "Nieuws", "news": "Nieuws",
"community": "Community",
"for_you": "Voor jou" "for_you": "Voor jou"
}, },
"intro": "Dit zijn de berichten die populair zijn in jouw Mastodon-kringen." "intro": "Dit zijn de berichten die populair zijn in jouw Mastodon-kringen."

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -211,9 +211,9 @@
"log_in": "Log In" "log_in": "Log In"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY" "category": "CATEGORY"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "Search servers"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "Finding available servers...",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -213,7 +213,7 @@
"server_picker": { "server_picker": {
"title": "Выберите сервер,\nлюбой сервер.", "title": "Выберите сервер,\nлюбой сервер.",
"subtitle": "Выберите сообщество на основе своих интересов, региона или общей тематики.", "subtitle": "Выберите сообщество на основе своих интересов, региона или общей тематики.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": { "button": {
"category": { "category": {
"all": "Все", "all": "Все",
@ -498,6 +498,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Сообщество",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

View File

@ -125,9 +125,9 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>one</key> <key>one</key>
<string>1 reply</string> <string>1 svar</string>
<key>other</key> <key>other</key>
<string>%ld replies</string> <string>%ld svar</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.vote</key> <key>plural.count.vote</key>

View File

@ -12,18 +12,18 @@
"title": "Palvelinvirhe" "title": "Palvelinvirhe"
}, },
"vote_failure": { "vote_failure": {
"title": "Vote Failure", "title": "Röstning misslyckades",
"poll_ended": "Kysely on päättynyt" "poll_ended": "Kysely on päättynyt"
}, },
"discard_post_content": { "discard_post_content": {
"title": "Hylkää luonnos", "title": "Hylkää luonnos",
"message": "Confirm to discard composed post content." "message": "Bekräfta för att slänga inläggsutkast."
}, },
"publish_post_failure": { "publish_post_failure": {
"title": "Julkaiseminen epäonnistui", "title": "Julkaiseminen epäonnistui",
"message": "Julkaisun julkaiseminen epäonnistui.\nTarkista internet-yhteytesi.", "message": "Julkaisun julkaiseminen epäonnistui.\nTarkista internet-yhteytesi.",
"attachments_message": { "attachments_message": {
"video_attach_with_photo": "Cannot attach a video to a post that already contains images.", "video_attach_with_photo": "Det går inte att bifoga en video till en status som redan innehåller bilder.",
"more_than_one_video": "Ei voi liittä yhtä videota enempää." "more_than_one_video": "Ei voi liittä yhtä videota enempää."
} }
}, },
@ -37,16 +37,16 @@
"confirm": "Kirjaudu ulos" "confirm": "Kirjaudu ulos"
}, },
"block_domain": { "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.", "title": "Är du verkligen, verkligen säker på att du vill blockera hela %s? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen och dina följare från den domänen kommer att tas bort.",
"block_entire_domain": "Estä verkkotunnus" "block_entire_domain": "Estä verkkotunnus"
}, },
"save_photo_failure": { "save_photo_failure": {
"title": "Kuvan tallentaminen epäonnistui", "title": "Kuvan tallentaminen epäonnistui",
"message": "Please enable the photo library access permission to save the photo." "message": "Aktivera åtkomst till Bilder för att spara bilden."
}, },
"delete_post": { "delete_post": {
"title": "Haluatko varmasti poistaa tämän julkaisun?", "title": "Haluatko varmasti poistaa tämän julkaisun?",
"message": "Are you sure you want to delete this post?" "message": "Är du säker på att du vill radera detta inlägg?"
}, },
"clean_cache": { "clean_cache": {
"title": "Puhdista välimuisti", "title": "Puhdista välimuisti",
@ -82,9 +82,9 @@
"share_user": "Jaa %s", "share_user": "Jaa %s",
"share_post": "Jaa julkaisu", "share_post": "Jaa julkaisu",
"open_in_safari": "Avaa Safarissa", "open_in_safari": "Avaa Safarissa",
"open_in_browser": "Open in Browser", "open_in_browser": "Öppna i webbläsare",
"find_people": "Löydä tilejä seurattavaksi", "find_people": "Löydä tilejä seurattavaksi",
"manually_search": "Manually search instead", "manually_search": "Sök manuellt istället",
"skip": "Ohita", "skip": "Ohita",
"reply": "Vastaa", "reply": "Vastaa",
"report_user": "Ilmianna %s", "report_user": "Ilmianna %s",
@ -113,13 +113,13 @@
"open_author_profile": "Avaa tekijän profiili", "open_author_profile": "Avaa tekijän profiili",
"open_reblogger_profile": "Avaa edelleen jakajan profiili", "open_reblogger_profile": "Avaa edelleen jakajan profiili",
"reply_status": "Vastaa julkaisuun", "reply_status": "Vastaa julkaisuun",
"toggle_reblog": "Toggle Reblog on Post", "toggle_reblog": "Växla ompostning på inlägg",
"toggle_favorite": "Toggle Favorite on Post", "toggle_favorite": "Växla favorit på inlägg",
"toggle_content_warning": "Vaihda sisältövaroitus", "toggle_content_warning": "Vaihda sisältövaroitus",
"preview_image": "Preview Image" "preview_image": "Förhandsgranska bild"
}, },
"segmented_control": { "segmented_control": {
"previous_section": "Previous Section", "previous_section": "Föregående avsnitt",
"next_section": "Seuraava lohko" "next_section": "Seuraava lohko"
} }
}, },
@ -129,39 +129,39 @@
"show_post": "Näytä julkaisu", "show_post": "Näytä julkaisu",
"show_user_profile": "Näytä tili", "show_user_profile": "Näytä tili",
"content_warning": "Sisältövaroitus", "content_warning": "Sisältövaroitus",
"sensitive_content": "Sensitive Content", "sensitive_content": "Känsligt innehåll",
"media_content_warning": "Napauta mistä tahansa paljastaaksesi", "media_content_warning": "Napauta mistä tahansa paljastaaksesi",
"tap_to_reveal": "Tap to reveal", "tap_to_reveal": "Tryck för att visa",
"poll": { "poll": {
"vote": "Vote", "vote": "Rösta",
"closed": "Suljettu" "closed": "Suljettu"
}, },
"actions": { "actions": {
"reply": "Vastaa", "reply": "Vastaa",
"reblog": "Jaa edelleen", "reblog": "Jaa edelleen",
"unreblog": "Peru edelleen jako", "unreblog": "Peru edelleen jako",
"favorite": "Favorite", "favorite": "Favorit",
"unfavorite": "Unfavorite", "unfavorite": "Ta bort favorit",
"menu": "Valikko", "menu": "Valikko",
"hide": "Dölj", "hide": "Dölj",
"show_image": "Show image", "show_image": "Visa bild",
"show_gif": "Show GIF", "show_gif": "Visa GIF",
"show_video_player": "Show video player", "show_video_player": "Visa videospelare",
"tap_then_hold_to_show_menu": "Tap then hold to show menu" "tap_then_hold_to_show_menu": "Tryck och håll ned för att visa menyn"
}, },
"tag": { "tag": {
"url": "URL", "url": "URL",
"mention": "Mention", "mention": "Nämn",
"link": "Linkki", "link": "Linkki",
"hashtag": "Hashtagi", "hashtag": "Hashtagi",
"email": "Sähköposti", "email": "Sähköposti",
"emoji": "Emoji" "emoji": "Emoji"
}, },
"visibility": { "visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.", "unlisted": "Alla kan se detta inlägg men det visas inte i den offentliga tidslinjen.",
"private": "Only their followers can see this post.", "private": "Endast deras följare kan se detta inlägg.",
"private_from_me": "Only my followers can see this post.", "private_from_me": "Bara mina följare kan se det här inlägget.",
"direct": "Only mentioned user can see this post." "direct": "Endast nämnda användare kan se detta inlägg."
} }
}, },
"friendship": { "friendship": {
@ -173,7 +173,7 @@
"block_user": "Estä %s", "block_user": "Estä %s",
"block_domain": "Estä %s", "block_domain": "Estä %s",
"unblock": "Poista esto", "unblock": "Poista esto",
"unblock_user": "Unblock %s", "unblock_user": "Avblockera %s",
"blocked": "Estetty", "blocked": "Estetty",
"mute": "Mykistä", "mute": "Mykistä",
"mute_user": "Mykistä %s", "mute_user": "Mykistä %s",
@ -212,8 +212,8 @@
}, },
"server_picker": { "server_picker": {
"title": "Valitse palvelin,\nmikä tahansa palvelin.", "title": "Valitse palvelin,\nmikä tahansa palvelin.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "Välj en gemenskap baserad på dina intressen, region eller ett allmänt syfte.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "Välj en gemenskap baserad på dina intressen, region eller ett allmänt syfte. Varje gemenskap drivs av en helt oberoende organisation eller individ.",
"button": { "button": {
"category": { "category": {
"all": "Kaikki", "all": "Kaikki",
@ -266,11 +266,11 @@
}, },
"password": { "password": {
"placeholder": "salasana", "placeholder": "salasana",
"require": "Your password needs at least:", "require": "Ditt lösenord behöver minst:",
"character_limit": "8 characters", "character_limit": "8 tecken",
"accessibility": { "accessibility": {
"checked": "checked", "checked": "markerad",
"unchecked": "unchecked" "unchecked": "avmarkerad"
}, },
"hint": "Salasanassasi on oltava vähintään kahdeksan merkkiä" "hint": "Salasanassasi on oltava vähintään kahdeksan merkkiä"
}, },
@ -284,14 +284,14 @@
"email": "Sähköposti", "email": "Sähköposti",
"password": "Salasana", "password": "Salasana",
"agreement": "Hyväksy", "agreement": "Hyväksy",
"locale": "Locale", "locale": "Språk",
"reason": "Syy" "reason": "Syy"
}, },
"reason": { "reason": {
"blocked": "%s sisältää estetyn sähköpostipalveluntarjoajan", "blocked": "%s sisältää estetyn sähköpostipalveluntarjoajan",
"unreachable": "%s ei näytä olevan olemassa", "unreachable": "%s ei näytä olevan olemassa",
"taken": "%s on jo käytössä", "taken": "%s on jo käytössä",
"reserved": "%s is a reserved keyword", "reserved": "%s är ett reserverat nyckelord",
"accepted": "%s täytyy hyväksyä", "accepted": "%s täytyy hyväksyä",
"blank": "%s vaaditaan", "blank": "%s vaaditaan",
"invalid": "%s on virheellinen", "invalid": "%s on virheellinen",
@ -322,7 +322,7 @@
"subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.", "subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.",
"button": { "button": {
"open_email_app": "Avaa sähköpostisovellus", "open_email_app": "Avaa sähköpostisovellus",
"resend": "Resend" "resend": "Skicka igen"
}, },
"dont_receive_email": { "dont_receive_email": {
"title": "Tarkista sähköpostisi", "title": "Tarkista sähköpostisi",
@ -365,7 +365,7 @@
"attachment": { "attachment": {
"photo": "kuva", "photo": "kuva",
"video": "video", "video": "video",
"attachment_broken": "This %s is broken and cant be\nuploaded to Mastodon.", "attachment_broken": "Denna %s är trasig och kan inte\nladdas upp till Mastodon.",
"description_photo": "Kuvaile kuva näkövammaisille...", "description_photo": "Kuvaile kuva näkövammaisille...",
"description_video": "Kuvaile video näkövammaisille..." "description_video": "Kuvaile video näkövammaisille..."
}, },
@ -389,7 +389,7 @@
"direct": "Vain mainitsemani tilit" "direct": "Vain mainitsemani tilit"
}, },
"auto_complete": { "auto_complete": {
"space_to_add": "Space to add" "space_to_add": "Mellanslag att lägga till"
}, },
"accessibility": { "accessibility": {
"append_attachment": "Lisää liite", "append_attachment": "Lisää liite",
@ -425,33 +425,33 @@
"segmented_control": { "segmented_control": {
"posts": "Julkaisut", "posts": "Julkaisut",
"replies": "Vastaukset", "replies": "Vastaukset",
"posts_and_replies": "Posts and Replies", "posts_and_replies": "Inlägg och svar",
"media": "Media", "media": "Media",
"about": "Om" "about": "Om"
}, },
"relationship_action_alert": { "relationship_action_alert": {
"confirm_mute_user": { "confirm_mute_user": {
"title": "Mute Account", "title": "Tysta konto",
"message": "Confirm to mute %s" "message": "Bekräfta för att tysta %s"
}, },
"confirm_unmute_user": { "confirm_unmute_user": {
"title": "Poista tilin mykistys", "title": "Poista tilin mykistys",
"message": "Vahvista, että haluat poistaa mykistyksen tililtä %s" "message": "Vahvista, että haluat poistaa mykistyksen tililtä %s"
}, },
"confirm_block_user": { "confirm_block_user": {
"title": "Block Account", "title": "Blockera konto",
"message": "Confirm to block %s" "message": "Bekräfta för att blockera %s"
}, },
"confirm_unblock_user": { "confirm_unblock_user": {
"title": "Unblock Account", "title": "Avblockera konto",
"message": "Confirm to unblock %s" "message": "Bekräfta för att avblockera %s"
} }
}, },
"accessibility": { "accessibility": {
"show_avatar_image": "Show avatar image", "show_avatar_image": "Visa profilbild",
"edit_avatar_image": "Edit avatar image", "edit_avatar_image": "Redigera profilbild",
"show_banner_image": "Show banner image", "show_banner_image": "Visa banner",
"double_tap_to_open_the_list": "Double tap to open the list" "double_tap_to_open_the_list": "Dubbeltryck för att öppna listan"
} }
}, },
"follower": { "follower": {
@ -495,12 +495,13 @@
}, },
"discovery": { "discovery": {
"tabs": { "tabs": {
"posts": "Posts", "posts": "Inlägg",
"hashtags": "Hashtags", "hashtags": "Hashtaggar",
"news": "News", "news": "Nyheter",
"for_you": "For You" "community": "Community",
"for_you": "För dig"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "Detta är de inlägg som engagerar i ditt hörn av Mastodon."
}, },
"favorite": { "favorite": {
"title": "Omat suosikit" "title": "Omat suosikit"
@ -511,12 +512,12 @@
"Mentions": "Maininnat" "Mentions": "Maininnat"
}, },
"notification_description": { "notification_description": {
"followed_you": "followed you", "followed_you": "följde dig",
"favorited_your_post": "favorited your post", "favorited_your_post": "favoriserade ditt inlägg",
"reblogged_your_post": "reblogged your post", "reblogged_your_post": "ompostade ditt inlägg",
"mentioned_you": "nämnde dig", "mentioned_you": "nämnde dig",
"request_to_follow_you": "request to follow you", "request_to_follow_you": "begär att följa dig",
"poll_has_ended": "poll has ended" "poll_has_ended": "omröstningen har avslutats"
}, },
"keyobard": { "keyobard": {
"show_everything": "Näytä kaikki", "show_everything": "Näytä kaikki",
@ -537,15 +538,15 @@
"dark": "Tumma" "dark": "Tumma"
}, },
"look_and_feel": { "look_and_feel": {
"title": "Look and Feel", "title": "Utseende och känsla",
"use_system": "Use System", "use_system": "Följ systeminställningarna",
"really_dark": "Really Dark", "really_dark": "Verkligen mörk",
"sorta_dark": "Sorta Dark", "sorta_dark": "Ganska mörk",
"light": "Ljust" "light": "Ljust"
}, },
"notifications": { "notifications": {
"title": "Ilmoitukset", "title": "Ilmoitukset",
"favorites": "Favorites my post", "favorites": "Favoriserar mitt inlägg",
"follows": "Seuraa minua", "follows": "Seuraa minua",
"boosts": "Omien julkaisujen edelleen jaot", "boosts": "Omien julkaisujen edelleen jaot",
"mentions": "Mainitsee minut", "mentions": "Mainitsee minut",
@ -563,7 +564,7 @@
"disable_avatar_animation": "Poista käytöstä animoidut avatarit", "disable_avatar_animation": "Poista käytöstä animoidut avatarit",
"disable_emoji_animation": "Poista käytöstä animoidut emojit", "disable_emoji_animation": "Poista käytöstä animoidut emojit",
"using_default_browser": "Käytä oletusselainta linkkien avaamiseen", "using_default_browser": "Käytä oletusselainta linkkien avaamiseen",
"open_links_in_mastodon": "Open links in Mastodon" "open_links_in_mastodon": "Öppna länkar i Mastodon"
}, },
"boring_zone": { "boring_zone": {
"title": "Tylsä alue", "title": "Tylsä alue",
@ -585,17 +586,17 @@
} }
}, },
"report": { "report": {
"title_report": "Report", "title_report": "Rapportera",
"title": "Ilmianna %s", "title": "Ilmianna %s",
"step1": "Vaihe 1/2", "step1": "Vaihe 1/2",
"step2": "Vaihe 2/2", "step2": "Vaihe 2/2",
"content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?", "content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?",
"content2": "Onko valvojien syytä tietää tästä ilmiannosta?", "content2": "Onko valvojien syytä tietää tästä ilmiannosta?",
"report_sent_title": "Thanks for reporting, well look into this.", "report_sent_title": "Tack för din rapport, vi ska titta på det.",
"send": "Lähetä ilmianto", "send": "Lähetä ilmianto",
"skip_to_send": "Lähetä ilman kommentteja", "skip_to_send": "Lähetä ilman kommentteja",
"text_placeholder": "Kirjoita tai liitä lisäkommentteja", "text_placeholder": "Kirjoita tai liitä lisäkommentteja",
"reported": "REPORTED" "reported": "RAPPORTERAD"
}, },
"preview": { "preview": {
"keyboard": { "keyboard": {

View File

@ -498,6 +498,7 @@
"posts": "Inlägg", "posts": "Inlägg",
"hashtags": "Hashtaggar", "hashtags": "Hashtaggar",
"news": "Nyheter", "news": "Nyheter",
"community": "Gemenskap",
"for_you": "För dig" "for_you": "För dig"
}, },
"intro": "Detta är de inlägg som engagerar i ditt hörn av Mastodon." "intro": "Detta är de inlägg som engagerar i ditt hörn av Mastodon."

View File

@ -498,6 +498,7 @@
"posts": "โพสต์", "posts": "โพสต์",
"hashtags": "แฮชแท็ก", "hashtags": "แฮชแท็ก",
"news": "ข่าว", "news": "ข่าว",
"community": "Community",
"for_you": "สำหรับคุณ" "for_you": "สำหรับคุณ"
}, },
"intro": "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ" "intro": "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ"

View File

@ -498,6 +498,7 @@
"posts": "Gönderiler", "posts": "Gönderiler",
"hashtags": "Etiketler", "hashtags": "Etiketler",
"news": "Haberler", "news": "Haberler",
"community": "Community",
"for_you": "Senin İçin" "for_you": "Senin İçin"
}, },
"intro": "Bunlar, Mastodon'un köşesinde ilgi çeken gönderilerdir." "intro": "Bunlar, Mastodon'un köşesinde ilgi çeken gönderilerdir."

View File

@ -125,7 +125,7 @@
}, },
"status": { "status": {
"user_reblogged": "%s đăng lại", "user_reblogged": "%s đăng lại",
"user_replied_to": "Trả lời %s", "user_replied_to": "Trả lời đến %s",
"show_post": "Xem tút", "show_post": "Xem tút",
"show_user_profile": "Xem trang hồ sơ", "show_user_profile": "Xem trang hồ sơ",
"content_warning": "Nội dung ẩn", "content_warning": "Nội dung ẩn",
@ -211,9 +211,9 @@
"log_in": "Đăng nhập" "log_in": "Đăng nhập"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon gồm nhiều cộng đồng với nhiều thành viên khác nhau.", "title": "Mastodon gồm nhiều máy chủ với thành viên riêng.",
"subtitle": "Chọn một cộng đồng dựa theo sở thích, tôn giáo, hoặc ý muốn của bạn.", "subtitle": "Chọn một máy chủ dựa theo sở thích, tôn giáo, hoặc ý muốn của bạn.",
"subtitle_extend": "Chọn một cộng đồng dựa theo sở thích, tôn giáo, hoặc ý muốn của bạn. Mỗi cộng đồng có thể được vận hành bởi một tổ chức độc lập hoặc một cá nhân.", "subtitle_extend": "Chọn một máy chủ dựa theo sở thích, tôn giáo, hoặc ý muốn của bạn. Mỗi máy chủ có thể được vận hành bởi một cá nhân hoặc một tổ chức.",
"button": { "button": {
"category": { "category": {
"all": "Toàn bộ", "all": "Toàn bộ",
@ -240,7 +240,7 @@
"category": "PHÂN LOẠI" "category": "PHÂN LOẠI"
}, },
"input": { "input": {
"placeholder": "Tìm cộng đồng" "placeholder": "Tìm máy chủ"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Đang tìm máy chủ hoạt động...", "finding_servers": "Đang tìm máy chủ hoạt động...",
@ -498,6 +498,7 @@
"posts": "Tút", "posts": "Tút",
"hashtags": "Hashtag", "hashtags": "Hashtag",
"news": "Tin tức", "news": "Tin tức",
"community": "Máy chủ",
"for_you": "Dành cho bạn" "for_you": "Dành cho bạn"
}, },
"intro": "Đây là những tút thu hút được sự chú ý trong góc Mastodon của bạn." "intro": "Đây là những tút thu hút được sự chú ý trong góc Mastodon của bạn."

View File

@ -498,6 +498,7 @@
"posts": "嘟文", "posts": "嘟文",
"hashtags": "话题标签", "hashtags": "话题标签",
"news": "最新消息", "news": "最新消息",
"community": "社区",
"for_you": "为你推荐" "for_you": "为你推荐"
}, },
"intro": "这些嘟文在你的长毛象小宇宙中备受关注。" "intro": "这些嘟文在你的长毛象小宇宙中备受关注。"

View File

@ -13,13 +13,13 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld unread notification</string> <string>%ld 則未讀通知</string>
</dict> </dict>
</dict> </dict>
<key>a11y.plural.count.input_limit_exceeds</key> <key>a11y.plural.count.input_limit_exceeds</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>Input limit exceeds %#@character_count@</string> <string>輸入字數限制超過 %#@character_count@ 字</string>
<key>character_count</key> <key>character_count</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -27,13 +27,13 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld characters</string> <string>%ld 個字元</string>
</dict> </dict>
</dict> </dict>
<key>a11y.plural.count.input_limit_remains</key> <key>a11y.plural.count.input_limit_remains</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>Input limit remains %#@character_count@</string> <string>輸入字數限制剩餘 %#@character_count@ 字</string>
<key>character_count</key> <key>character_count</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -41,7 +41,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld characters</string> <string>%ld 個字</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.metric_formatted.post</key> <key>plural.count.metric_formatted.post</key>
@ -55,7 +55,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>posts</string> <string>嘟文</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.post</key> <key>plural.count.post</key>
@ -69,7 +69,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld posts</string> <string>%ld 則嘟文</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.favorite</key> <key>plural.count.favorite</key>
@ -83,7 +83,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld favorites</string> <string>%ld 個最愛</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.reblog</key> <key>plural.count.reblog</key>
@ -97,7 +97,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld reblogs</string> <string>%ld 個轉嘟</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.reply</key> <key>plural.count.reply</key>
@ -111,7 +111,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld replies</string> <string>%ld 個回覆</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.vote</key> <key>plural.count.vote</key>
@ -125,7 +125,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld votes</string> <string>%ld </string>
</dict> </dict>
</dict> </dict>
<key>plural.count.voter</key> <key>plural.count.voter</key>
@ -139,7 +139,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld voters</string> <string>%ld 位投票者</string>
</dict> </dict>
</dict> </dict>
<key>plural.people_talking</key> <key>plural.people_talking</key>
@ -153,7 +153,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld people talking</string> <string>%ld 個人正在討論</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.following</key> <key>plural.count.following</key>
@ -167,7 +167,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld following</string> <string>%ld 個跟隨中</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.follower</key> <key>plural.count.follower</key>
@ -181,7 +181,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld followers</string> <string>%ld 個跟隨者</string>
</dict> </dict>
</dict> </dict>
<key>date.year.left</key> <key>date.year.left</key>
@ -195,7 +195,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld years left</string> <string>還有 %ld 年</string>
</dict> </dict>
</dict> </dict>
<key>date.month.left</key> <key>date.month.left</key>
@ -209,7 +209,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld months left</string> <string>還有 %ld 個月</string>
</dict> </dict>
</dict> </dict>
<key>date.day.left</key> <key>date.day.left</key>
@ -223,7 +223,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld days left</string> <string>還有 %ld 天</string>
</dict> </dict>
</dict> </dict>
<key>date.hour.left</key> <key>date.hour.left</key>
@ -237,7 +237,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld hours left</string> <string>還有 %ld 小時</string>
</dict> </dict>
</dict> </dict>
<key>date.minute.left</key> <key>date.minute.left</key>
@ -251,7 +251,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld minutes left</string> <string>還有 %ld 分鐘</string>
</dict> </dict>
</dict> </dict>
<key>date.second.left</key> <key>date.second.left</key>
@ -265,7 +265,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld seconds left</string> <string>還有 %ld 秒</string>
</dict> </dict>
</dict> </dict>
<key>date.year.ago.abbr</key> <key>date.year.ago.abbr</key>
@ -279,7 +279,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ldy ago</string> <string>%ld 年前</string>
</dict> </dict>
</dict> </dict>
<key>date.month.ago.abbr</key> <key>date.month.ago.abbr</key>
@ -293,7 +293,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ldM ago</string> <string>%ld 個月前</string>
</dict> </dict>
</dict> </dict>
<key>date.day.ago.abbr</key> <key>date.day.ago.abbr</key>
@ -307,7 +307,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ldd ago</string> <string>%ld 天前</string>
</dict> </dict>
</dict> </dict>
<key>date.hour.ago.abbr</key> <key>date.hour.ago.abbr</key>
@ -321,7 +321,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ldh ago</string> <string>%ld 小時前</string>
</dict> </dict>
</dict> </dict>
<key>date.minute.ago.abbr</key> <key>date.minute.ago.abbr</key>
@ -335,7 +335,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ldm ago</string> <string>%ld 分鐘前</string>
</dict> </dict>
</dict> </dict>
<key>date.second.ago.abbr</key> <key>date.second.ago.abbr</key>
@ -349,7 +349,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%lds ago</string> <string>%ld 秒前</string>
</dict> </dict>
</dict> </dict>
</dict> </dict>

View File

@ -12,82 +12,82 @@
"title": "伺服器錯誤" "title": "伺服器錯誤"
}, },
"vote_failure": { "vote_failure": {
"title": "Vote Failure", "title": "投票失敗",
"poll_ended": "The poll has ended" "poll_ended": "投票已結束"
}, },
"discard_post_content": { "discard_post_content": {
"title": "捨棄草稿", "title": "捨棄草稿",
"message": "Confirm to discard composed post content." "message": "確認放棄編寫中的嘟文內容。"
}, },
"publish_post_failure": { "publish_post_failure": {
"title": "Publish Failure", "title": "發表嘟文失敗",
"message": "Failed to publish the post.\nPlease check your internet connection.", "message": "發表嘟文失敗。\n請檢查您的網路連線。",
"attachments_message": { "attachments_message": {
"video_attach_with_photo": "Cannot attach a video to a post that already contains images.", "video_attach_with_photo": "無法在已有圖片的嘟文上附加影片。",
"more_than_one_video": "Cannot attach more than one video." "more_than_one_video": "無法附加一個以上影片。"
} }
}, },
"edit_profile_failure": { "edit_profile_failure": {
"title": "Edit Profile Error", "title": "編輯個人檔案錯誤",
"message": "Cannot edit profile. Please try again." "message": "無法編輯個人檔案。請重試。"
}, },
"sign_out": { "sign_out": {
"title": "登出", "title": "登出",
"message": "Are you sure you want to sign out?", "message": "您確定要登出嗎?",
"confirm": "登出" "confirm": "登出"
}, },
"block_domain": { "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.", "title": "真的非常確定封鎖整個 %s 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
"block_entire_domain": "Block Domain" "block_entire_domain": "封鎖網域"
}, },
"save_photo_failure": { "save_photo_failure": {
"title": "Save Photo Failure", "title": "儲存照片失敗",
"message": "Please enable the photo library access permission to save the photo." "message": "請開啟圖片庫存取權限以儲存照片。"
}, },
"delete_post": { "delete_post": {
"title": "Delete Post", "title": "刪除嘟文",
"message": "Are you sure you want to delete this post?" "message": "是否確定要刪除此嘟文?"
}, },
"clean_cache": { "clean_cache": {
"title": "Clean Cache", "title": "清除快取",
"message": "Successfully cleaned %s cache." "message": "成功清除 %s 快取。"
} }
}, },
"controls": { "controls": {
"actions": { "actions": {
"back": "Back", "back": "上一頁",
"next": "Next", "next": "下一頁",
"previous": "Previous", "previous": "上一步",
"open": "Open", "open": "開啟",
"add": "Add", "add": "新增",
"remove": "Remove", "remove": "刪除",
"edit": "編輯", "edit": "編輯",
"save": "Save", "save": "儲存",
"ok": "OK", "ok": "OK",
"done": "完成", "done": "完成",
"confirm": "Confirm", "confirm": "確認",
"continue": "繼續", "continue": "繼續",
"compose": "Compose", "compose": "撰寫",
"cancel": "取消", "cancel": "取消",
"discard": "Discard", "discard": "捨棄",
"try_again": "Try Again", "try_again": "再試一次",
"take_photo": "Take Photo", "take_photo": "拍攝照片",
"save_photo": "儲存照片", "save_photo": "儲存照片",
"copy_photo": "Copy Photo", "copy_photo": "複製照片",
"sign_in": "登入", "sign_in": "登入",
"sign_up": "註冊", "sign_up": "註冊",
"see_more": "See More", "see_more": "檢視更多",
"preview": "Preview", "preview": "預覽",
"share": "分享", "share": "分享",
"share_user": "Share %s", "share_user": "分享 %s",
"share_post": "Share Post", "share_post": "分享嘟文",
"open_in_safari": "Open in Safari", "open_in_safari": "在 Safari 中開啟",
"open_in_browser": "Open in Browser", "open_in_browser": "在瀏覽器中開啟",
"find_people": "Find people to follow", "find_people": "尋找一些人來跟隨",
"manually_search": "Manually search instead", "manually_search": "手動搜尋",
"skip": "跳過", "skip": "跳過",
"reply": "回覆", "reply": "回覆",
"report_user": "Report %s", "report_user": "檢舉 %s",
"block_domain": "封鎖 %s", "block_domain": "封鎖 %s",
"unblock_domain": "解除封鎖 %s", "unblock_domain": "解除封鎖 %s",
"settings": "設定", "settings": "設定",
@ -102,517 +102,518 @@
"keyboard": { "keyboard": {
"common": { "common": {
"switch_to_tab": "切換至 %s", "switch_to_tab": "切換至 %s",
"compose_new_post": "發佈貼文", "compose_new_post": "撰寫新嘟文",
"show_favorites": "Show Favorites", "show_favorites": "顯示最愛",
"open_settings": "Open Settings" "open_settings": "開啟設定"
}, },
"timeline": { "timeline": {
"previous_status": "Previous Post", "previous_status": "先前的嘟文",
"next_status": "Next Post", "next_status": "下一則嘟文",
"open_status": "Open Post", "open_status": "開啟嘟文",
"open_author_profile": "Open Author's Profile", "open_author_profile": "開啟作者的個人檔案頁面",
"open_reblogger_profile": "Open Reblogger's Profile", "open_reblogger_profile": "開啟轉嘟者的個人檔案頁面",
"reply_status": "Reply to Post", "reply_status": "回覆嘟文",
"toggle_reblog": "Toggle Reblog on Post", "toggle_reblog": "切換轉發嘟文",
"toggle_favorite": "Toggle Favorite on Post", "toggle_favorite": "切換最愛嘟文",
"toggle_content_warning": "Toggle Content Warning", "toggle_content_warning": "切換內容警告",
"preview_image": "Preview Image" "preview_image": "預覽圖片"
}, },
"segmented_control": { "segmented_control": {
"previous_section": "Previous Section", "previous_section": "上一個區塊",
"next_section": "Next Section" "next_section": "下一個區塊"
} }
}, },
"status": { "status": {
"user_reblogged": "%s reblogged", "user_reblogged": "%s 已轉嘟",
"user_replied_to": "Replied to %s", "user_replied_to": "回覆給 %s",
"show_post": "Show Post", "show_post": "顯示嘟文",
"show_user_profile": "Show user profile", "show_user_profile": "顯示使用者個人檔案頁面",
"content_warning": "Content Warning", "content_warning": "內容警告",
"sensitive_content": "Sensitive Content", "sensitive_content": "敏感內容",
"media_content_warning": "Tap anywhere to reveal", "media_content_warning": "輕觸任何地方以顯示",
"tap_to_reveal": "Tap to reveal", "tap_to_reveal": "輕觸以顯示",
"poll": { "poll": {
"vote": "投票", "vote": "投票",
"closed": "Closed" "closed": "已關閉"
}, },
"actions": { "actions": {
"reply": "回覆", "reply": "回覆",
"reblog": "Reblog", "reblog": "轉嘟",
"unreblog": "Undo reblog", "unreblog": "取消轉嘟",
"favorite": "Favorite", "favorite": "最愛",
"unfavorite": "Unfavorite", "unfavorite": "取消最愛",
"menu": "Menu", "menu": "選單",
"hide": "Hide", "hide": "隱藏",
"show_image": "Show image", "show_image": "顯示圖片",
"show_gif": "Show GIF", "show_gif": "顯示 GIF",
"show_video_player": "Show video player", "show_video_player": "顯示影片播放器",
"tap_then_hold_to_show_menu": "Tap then hold to show menu" "tap_then_hold_to_show_menu": "輕觸然後按住以顯示選單"
}, },
"tag": { "tag": {
"url": "URL", "url": "網址",
"mention": "Mention", "mention": "提及",
"link": "Link", "link": "連結",
"hashtag": "Hashtag", "hashtag": "主題標籤",
"email": "電子郵件", "email": "電子郵件",
"emoji": "Emoji" "emoji": "emoji"
}, },
"visibility": { "visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.", "unlisted": "任何人都能看到此嘟文,但是不會顯示於公開時間軸上。",
"private": "Only their followers can see this post.", "private": "只有他們的跟隨者能看到此嘟文。",
"private_from_me": "Only my followers can see this post.", "private_from_me": "只有我的跟隨者能看到此嘟文。",
"direct": "Only mentioned user can see this post." "direct": "只有被提及的使用者能看到此嘟文。"
} }
}, },
"friendship": { "friendship": {
"follow": "追蹤", "follow": "跟隨",
"following": "Following", "following": "跟隨中",
"request": "Request", "request": "請求",
"pending": "Pending", "pending": "等待中",
"block": "Block", "block": "封鎖",
"block_user": "封鎖 %s", "block_user": "封鎖 %s",
"block_domain": "封鎖 %s", "block_domain": "封鎖 %s",
"unblock": "解除封鎖", "unblock": "解除封鎖",
"unblock_user": "解除封鎖 %s", "unblock_user": "解除封鎖 %s",
"blocked": "已封鎖", "blocked": "已封鎖",
"mute": "Mute", "mute": "靜音",
"mute_user": "Mute %s", "mute_user": "靜音 %s",
"unmute": "Unmute", "unmute": "取消靜音",
"unmute_user": "Unmute %s", "unmute_user": "取消靜音 %s",
"muted": "Muted", "muted": "已靜音",
"edit_info": "Edit Info" "edit_info": "編輯"
}, },
"timeline": { "timeline": {
"filtered": "Filtered", "filtered": "已過濾",
"timestamp": { "timestamp": {
"now": "Now" "now": "剛剛"
}, },
"loader": { "loader": {
"load_missing_posts": "Load missing posts", "load_missing_posts": "讀取錯過的嘟文",
"loading_missing_posts": "Loading missing posts...", "loading_missing_posts": "正在讀取錯過的嘟文...",
"show_more_replies": "Show more replies" "show_more_replies": "顯示更多回覆"
}, },
"header": { "header": {
"no_status_found": "No Post Found", "no_status_found": "沒有任何嘟文",
"blocking_warning": "You cant view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", "blocking_warning": "您無法瀏覽該使用者的個人檔案,除非您取消封鎖。\n您的個人檔案看起來像是這樣。",
"user_blocking_warning": "You cant view %ss profile\nuntil you unblock them.\nYour profile looks like this to them.", "user_blocking_warning": "您無法瀏覽 %s 的個人檔案,除非您取消封鎖。\n您的個人檔案看起來像是這樣。",
"blocked_warning": "You cant view this users profile\nuntil they unblock you.", "blocked_warning": "您無法瀏覽該使用者的個人檔案,除非他們取消封鎖您。",
"user_blocked_warning": "You cant view %ss profile\nuntil they unblock you.", "user_blocked_warning": "您無法瀏覽 %s 的個人檔案,除非他們取消封鎖您。",
"suspended_warning": "This user has been suspended.", "suspended_warning": "此使用者已被停權。",
"user_suspended_warning": "%ss account has been suspended." "user_suspended_warning": "%s 的帳號已經被停權。"
} }
} }
} }
}, },
"scene": { "scene": {
"welcome": { "welcome": {
"slogan": "Social networking\nback in your hands.", "slogan": "社群網路\n還權於您。",
"get_started": "Get Started", "get_started": "新手上路",
"log_in": "登入" "log_in": "登入"
}, },
"server_picker": { "server_picker": {
"title": "Mastodon is made of users in different communities.", "title": "Mastodon 由不同伺服器的使用者組成。",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle": "基於您的興趣、地區、或一般用途選定一個伺服器。",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "subtitle_extend": "基於您的興趣、地區、或一般用途選定一個伺服器。每個伺服器是由完全獨立的組織或個人營運。",
"button": { "button": {
"category": { "category": {
"all": "All", "all": "全部",
"all_accessiblity_description": "Category: All", "all_accessiblity_description": "分類:全部",
"academia": "academia", "academia": "學術",
"activism": "activism", "activism": "社會運動",
"food": "food", "food": "食物",
"furry": "furry", "furry": "毛茸茸",
"games": "games", "games": "遊戲",
"general": "general", "general": "一般",
"journalism": "journalism", "journalism": "新聞記者",
"lgbt": "lgbt", "lgbt": "LGBT",
"regional": "regional", "regional": "區域性",
"art": "art", "art": "藝術",
"music": "music", "music": "音樂",
"tech": "tech" "tech": "科技"
}, },
"see_less": "See Less", "see_less": "顯示較少",
"see_more": "See More" "see_more": "檢視更多"
}, },
"label": { "label": {
"language": "LANGUAGE", "language": "語言",
"users": "USERS", "users": "使用者",
"category": "CATEGORY" "category": "分類"
}, },
"input": { "input": {
"placeholder": "Search communities" "placeholder": "搜尋伺服器"
}, },
"empty_state": { "empty_state": {
"finding_servers": "Finding available servers...", "finding_servers": "尋找可用的伺服器...",
"bad_network": "Something went wrong while loading the data. Check your internet connection.", "bad_network": "讀取資料時發生錯誤。請檢查您的網路連線。",
"no_results": "No results" "no_results": "沒有結果"
} }
}, },
"register": { "register": {
"title": "Lets get you set up on %s", "title": "讓我們一起設定 %s 吧!",
"input": { "input": {
"avatar": { "avatar": {
"delete": "刪除" "delete": "刪除"
}, },
"username": { "username": {
"placeholder": "username", "placeholder": "使用者名稱",
"duplicate_prompt": "This username is taken." "duplicate_prompt": "此使用者名稱已被佔用。"
}, },
"display_name": { "display_name": {
"placeholder": "display name" "placeholder": "顯示名稱"
}, },
"email": { "email": {
"placeholder": "email" "placeholder": "電子郵件"
}, },
"password": { "password": {
"placeholder": "密碼", "placeholder": "密碼",
"require": "Your password needs at least:", "require": "您的密碼必須是至少:",
"character_limit": "8 個字元", "character_limit": "8 個字元",
"accessibility": { "accessibility": {
"checked": "checked", "checked": "已選擇",
"unchecked": "unchecked" "unchecked": "取消勾選"
}, },
"hint": "Your password needs at least eight characters" "hint": "您的密碼必須至少為八個字元"
}, },
"invite": { "invite": {
"registration_user_invite_request": "Why do you want to join?" "registration_user_invite_request": "為什麼想要加入呢?"
} }
}, },
"error": { "error": {
"item": { "item": {
"username": "Username", "username": "使用者名稱",
"email": "電子郵件", "email": "電子郵件",
"password": "密碼", "password": "密碼",
"agreement": "Agreement", "agreement": "條款",
"locale": "Locale", "locale": "地區",
"reason": "Reason" "reason": "原因"
}, },
"reason": { "reason": {
"blocked": "%s contains a disallowed email provider", "blocked": "%s 包含不被允許的電子郵件供應商",
"unreachable": "%s does not seem to exist", "unreachable": "%s 似乎並不存在",
"taken": "%s is already in use", "taken": "%s 已被使用",
"reserved": "%s is a reserved keyword", "reserved": "%s 是一個保留的關鍵字",
"accepted": "%s must be accepted", "accepted": "請先閱讀並同意 %s",
"blank": "%s is required", "blank": "%s 為必填選項",
"invalid": "%s is invalid", "invalid": "%s 是無效的",
"too_long": "%s is too long", "too_long": "%s 太長了",
"too_short": "%s is too short", "too_short": "%s 太短了",
"inclusion": "%s is not a supported value" "inclusion": "%s 是不被支援的值"
}, },
"special": { "special": {
"username_invalid": "Username must only contain alphanumeric characters and underscores", "username_invalid": "使用者名稱僅能包含英文字母數字以及底線",
"username_too_long": "Username is too long (cant be longer than 30 characters)", "username_too_long": "使用者名稱太長了(不能超過 30 個字元)",
"email_invalid": "This is not a valid email address", "email_invalid": "這不是一個有效的電子郵件地址",
"password_too_short": "Password is too short (must be at least 8 characters)" "password_too_short": "密碼太短了(至少需要八個字元)"
} }
} }
}, },
"server_rules": { "server_rules": {
"title": "Some ground rules.", "title": "一些基本守則。",
"subtitle": "These are set and enforced by the %s moderators.", "subtitle": "這些被 %s 的管管們制定以及實施。",
"prompt": "By continuing, youre subject to the terms of service and privacy policy for %s.", "prompt": "繼續的話,代表您將遵守 %s 的服務條款和隱私權政策。",
"terms_of_service": "terms of service", "terms_of_service": "服務條款",
"privacy_policy": "privacy policy", "privacy_policy": "隱私權政策",
"button": { "button": {
"confirm": "I Agree" "confirm": "我已閱讀並同意"
} }
}, },
"confirm_email": { "confirm_email": {
"title": "One last thing.", "title": "最後一步。",
"subtitle": "Tap the link we emailed to you to verify your account.", "subtitle": "點擊我們寄送給您的帳號驗證連結。",
"button": { "button": {
"open_email_app": "Open Email App", "open_email_app": "開啟電子郵件 App",
"resend": "Resend" "resend": "重新發送"
}, },
"dont_receive_email": { "dont_receive_email": {
"title": "Check your email", "title": "請檢查您的電子郵件",
"description": "Check if your email address is correct as well as your junk folder if you havent.", "description": "請檢查您的電子郵件地址是否正確,以及您的垃圾信件夾。",
"resend_email": "Resend Email" "resend_email": "重新發送電子郵件"
}, },
"open_email_app": { "open_email_app": {
"title": "Check your inbox.", "title": "請檢查您的收件夾。",
"description": "We just sent you an email. Check your junk folder if you havent.", "description": "我們剛寄送您一封電子郵件。請檢查您的垃圾信件夾。",
"mail": "Mail", "mail": "電子郵件",
"open_email_client": "Open Email Client" "open_email_client": "請開啟電子郵件程式"
} }
}, },
"home_timeline": { "home_timeline": {
"title": "Home", "title": "首頁",
"navigation_bar_state": { "navigation_bar_state": {
"offline": "Offline", "offline": "離線",
"new_posts": "See new posts", "new_posts": "檢視最新嘟文",
"published": "Published!", "published": "嘟出去!",
"Publishing": "Publishing post..." "Publishing": "發表嘟文..."
} }
}, },
"suggestion_account": { "suggestion_account": {
"title": "Find People to Follow", "title": "尋找一些人來跟隨",
"follow_explain": "When you follow someone, youll see their posts in your home feed." "follow_explain": "當您跟隨這些人時,將會看到他們的嘟文出現在您的首頁時間軸上。"
}, },
"compose": { "compose": {
"title": { "title": {
"new_post": "New Post", "new_post": "新增嘟文",
"new_reply": "New Reply" "new_reply": "新增回覆"
}, },
"media_selection": { "media_selection": {
"camera": "Take Photo", "camera": "拍攝照片",
"photo_library": "Photo Library", "photo_library": "圖片庫",
"browse": "Browse" "browse": "瀏覽"
}, },
"content_input_placeholder": "Type or paste whats on your mind", "content_input_placeholder": "正在想些什麼嗎?",
"compose_action": "Publish", "compose_action": "嘟出去",
"replying_to_user": "replying to %s", "replying_to_user": "正在回覆 %s",
"attachment": { "attachment": {
"photo": "photo", "photo": "照片",
"video": "影片", "video": "影片",
"attachment_broken": "This %s is broken and cant be\nuploaded to Mastodon.", "attachment_broken": "此 %s 已損毀,並無法被上傳至 Mastodon。",
"description_photo": "Describe the photo for the visually-impaired...", "description_photo": "為視障人士提供圖片說明...",
"description_video": "Describe the video for the visually-impaired..." "description_video": "為視障人士提供影片說明..."
}, },
"poll": { "poll": {
"duration_time": "Duration: %s", "duration_time": "持續時間:%s",
"thirty_minutes": "30 分鐘", "thirty_minutes": "30 分鐘",
"one_hour": "1 Hour", "one_hour": "一小時",
"six_hours": "6 Hours", "six_hours": "六小時",
"one_day": "1 Day", "one_day": "一天",
"three_days": "3 Days", "three_days": "三天",
"seven_days": "7 Days", "seven_days": "七天",
"option_number": "Option %ld" "option_number": "選項 %ld"
}, },
"content_warning": { "content_warning": {
"placeholder": "Write an accurate warning here..." "placeholder": "請於此處寫下精準的警告..."
}, },
"visibility": { "visibility": {
"public": "Public", "public": "公開",
"unlisted": "Unlisted", "unlisted": "不公開",
"private": "Followers only", "private": "僅限跟隨者",
"direct": "Only people I mention" "direct": "僅限於我提及的人"
}, },
"auto_complete": { "auto_complete": {
"space_to_add": "Space to add" "space_to_add": "添加的空白"
}, },
"accessibility": { "accessibility": {
"append_attachment": "Add Attachment", "append_attachment": "新增附件",
"append_poll": "Add Poll", "append_poll": "新增投票",
"remove_poll": "Remove Poll", "remove_poll": "移除投票",
"custom_emoji_picker": "Custom Emoji Picker", "custom_emoji_picker": "自訂 emoji 選擇器",
"enable_content_warning": "Enable Content Warning", "enable_content_warning": "啟用內容警告",
"disable_content_warning": "Disable Content Warning", "disable_content_warning": "停用內容警告",
"post_visibility_menu": "Post Visibility Menu" "post_visibility_menu": "嘟文可見性選單"
}, },
"keyboard": { "keyboard": {
"discard_post": "Discard Post", "discard_post": "捨棄嘟文",
"publish_post": "Publish Post", "publish_post": "發表嘟文",
"toggle_poll": "Toggle Poll", "toggle_poll": "切換投票",
"toggle_content_warning": "Toggle Content Warning", "toggle_content_warning": "切換內容警告",
"append_attachment_entry": "Add Attachment - %s", "append_attachment_entry": "新增附件 - %s",
"select_visibility_entry": "Select Visibility - %s" "select_visibility_entry": "選擇可見性 - %s"
} }
}, },
"profile": { "profile": {
"dashboard": { "dashboard": {
"posts": "posts", "posts": "嘟文",
"following": "following", "following": "跟隨中",
"followers": "followers" "followers": "跟隨者"
}, },
"fields": { "fields": {
"add_row": "Add Row", "add_row": "新增列",
"placeholder": { "placeholder": {
"label": "Label", "label": "標籤",
"content": "Content" "content": "內容"
} }
}, },
"segmented_control": { "segmented_control": {
"posts": "文", "posts": "文",
"replies": "Replies", "replies": "回覆",
"posts_and_replies": "Posts and Replies", "posts_and_replies": "嘟文及回覆",
"media": "Media", "media": "媒體",
"about": "About" "about": "關於"
}, },
"relationship_action_alert": { "relationship_action_alert": {
"confirm_mute_user": { "confirm_mute_user": {
"title": "Mute Account", "title": "靜音",
"message": "Confirm to mute %s" "message": "確認將 %s 靜音"
}, },
"confirm_unmute_user": { "confirm_unmute_user": {
"title": "Unmute Account", "title": "取消靜音",
"message": "Confirm to unmute %s" "message": "確認將 %s 取消靜音"
}, },
"confirm_block_user": { "confirm_block_user": {
"title": "Block Account", "title": "封鎖",
"message": "Confirm to block %s" "message": "確認將 %s 封鎖"
}, },
"confirm_unblock_user": { "confirm_unblock_user": {
"title": "Unblock Account", "title": "取消封鎖",
"message": "Confirm to unblock %s" "message": "確認將 %s 取消封鎖"
} }
}, },
"accessibility": { "accessibility": {
"show_avatar_image": "Show avatar image", "show_avatar_image": "顯示大頭貼",
"edit_avatar_image": "Edit avatar image", "edit_avatar_image": "編輯大頭貼",
"show_banner_image": "Show banner image", "show_banner_image": "顯示橫幅圖片",
"double_tap_to_open_the_list": "Double tap to open the list" "double_tap_to_open_the_list": "點兩下以開啟列表"
} }
}, },
"follower": { "follower": {
"footer": "Followers from other servers are not displayed." "footer": "來自其他伺服器的跟隨者不會被顯示。"
}, },
"following": { "following": {
"footer": "Follows from other servers are not displayed." "footer": "來自其他伺服器的跟隨中不會被顯示。"
}, },
"search": { "search": {
"title": "搜尋", "title": "搜尋",
"search_bar": { "search_bar": {
"placeholder": "Search hashtags and users", "placeholder": "搜尋主題標籤及使用者",
"cancel": "取消" "cancel": "取消"
}, },
"recommend": { "recommend": {
"button_text": "See All", "button_text": "檢視全部",
"hash_tag": { "hash_tag": {
"title": "Trending on Mastodon", "title": "Mastodon 上的熱門討論",
"description": "Hashtags that are getting quite a bit of attention", "description": "發燒中的主題標籤",
"people_talking": "%s people are talking" "people_talking": "%s 人正在討論"
}, },
"accounts": { "accounts": {
"title": "Accounts you might like", "title": "您可能會喜歡的帳號",
"description": "You may like to follow these accounts", "description": "您也許想跟隨這些帳號",
"follow": "追蹤" "follow": "跟隨"
} }
}, },
"searching": { "searching": {
"segment": { "segment": {
"all": "All", "all": "全部",
"people": "People", "people": "使用者",
"hashtags": "Hashtags", "hashtags": "主題標籤",
"posts": "文" "posts": "文"
}, },
"empty_state": { "empty_state": {
"no_results": "No results" "no_results": "沒有任何結果"
}, },
"recent_search": "Recent searches", "recent_search": "最近的搜尋",
"clear": "Clear" "clear": "清除"
} }
}, },
"discovery": { "discovery": {
"tabs": { "tabs": {
"posts": "Posts", "posts": "嘟文",
"hashtags": "Hashtags", "hashtags": "主題標籤",
"news": "News", "news": "最新消息",
"for_you": "For You" "community": "社群",
"for_you": "為您推薦"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "這些嘟文正在您 Mastodon 的角落受到注目。"
}, },
"favorite": { "favorite": {
"title": "Your Favorites" "title": "您的最愛"
}, },
"notification": { "notification": {
"title": { "title": {
"Everything": "Everything", "Everything": "全部",
"Mentions": "Mentions" "Mentions": "提及"
}, },
"notification_description": { "notification_description": {
"followed_you": "followed you", "followed_you": "跟隨了您",
"favorited_your_post": "favorited your post", "favorited_your_post": "最愛了您的嘟文",
"reblogged_your_post": "reblogged your post", "reblogged_your_post": "轉嘟了您的嘟文",
"mentioned_you": "mentioned you", "mentioned_you": "提到了您",
"request_to_follow_you": "request to follow you", "request_to_follow_you": "要求跟隨您",
"poll_has_ended": "poll has ended" "poll_has_ended": "投票已結束"
}, },
"keyobard": { "keyobard": {
"show_everything": "Show Everything", "show_everything": "顯示全部",
"show_mentions": "Show Mentions" "show_mentions": "顯示提及"
} }
}, },
"thread": { "thread": {
"back_title": "Post", "back_title": "嘟文",
"title": "Post from %s" "title": "來自 %s 的嘟文"
}, },
"settings": { "settings": {
"title": "設定", "title": "設定",
"section": { "section": {
"appearance": { "appearance": {
"title": "Appearance", "title": "外觀設定",
"automatic": "自動", "automatic": "自動",
"light": "Always Light", "light": "亮色佈景主題",
"dark": "Always Dark" "dark": "深色佈景主題"
}, },
"look_and_feel": { "look_and_feel": {
"title": "Look and Feel", "title": "外觀與風格",
"use_system": "Use System", "use_system": "與系統一致",
"really_dark": "Really Dark", "really_dark": "闇黑風格",
"sorta_dark": "Sorta Dark", "sorta_dark": "有點黑又不會太黑",
"light": "Light" "light": "淺色"
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "通知",
"favorites": "Favorites my post", "favorites": "將我的嘟文加到最愛",
"follows": "Follows me", "follows": "跟隨著我",
"boosts": "Reblogs my post", "boosts": "將我的嘟文轉嘟",
"mentions": "Mentions me", "mentions": "提到了我",
"trigger": { "trigger": {
"anyone": "anyone", "anyone": "任何人",
"follower": "a follower", "follower": "跟隨者",
"follow": "anyone I follow", "follow": "任何我跟隨的人",
"noone": "no one", "noone": "沒有人",
"title": "Notify me when" "title": "以下狀況請通知我"
} }
}, },
"preference": { "preference": {
"title": "Preferences", "title": "偏好設定",
"true_black_dark_mode": "True black dark mode", "true_black_dark_mode": "真☆闇黑模式",
"disable_avatar_animation": "Disable animated avatars", "disable_avatar_animation": "停用動畫大頭貼",
"disable_emoji_animation": "Disable animated emojis", "disable_emoji_animation": "停用動畫 emoji",
"using_default_browser": "Use default browser to open links", "using_default_browser": "使用預設瀏覽器開啟連結",
"open_links_in_mastodon": "Open links in Mastodon" "open_links_in_mastodon": "在 Mastodon 中開啟連結"
}, },
"boring_zone": { "boring_zone": {
"title": "The Boring Zone", "title": "無聊的這些",
"account_settings": "Account Settings", "account_settings": "帳號設定",
"terms": "Terms of Service", "terms": "服務條款",
"privacy": "Privacy Policy" "privacy": "隱私權政策"
}, },
"spicy_zone": { "spicy_zone": {
"title": "The Spicy Zone", "title": "危險地帶",
"clear": "Clear Media Cache", "clear": "清除媒體快取",
"signout": "登出" "signout": "登出"
} }
}, },
"footer": { "footer": {
"mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" "mastodon_description": "Mastodon 是開源軟體。您可以在 GitHub %s (%s) 上回報問題。"
}, },
"keyboard": { "keyboard": {
"close_settings_window": "Close Settings Window" "close_settings_window": "關閉設定視窗"
} }
}, },
"report": { "report": {
"title_report": "Report", "title_report": "檢舉",
"title": "Report %s", "title": "檢舉 %s",
"step1": "Step 1 of 2", "step1": "兩個步驟中的第一步",
"step2": "Step 2 of 2", "step2": "兩個步驟中的第二步",
"content1": "Are there any other posts youd like to add to the report?", "content1": "還有其他您想加入這份檢舉報告的嘟文嗎?",
"content2": "Is there anything the moderators should know about this report?", "content2": "有其他管管們需要知道關於這份檢舉報告的嗎?",
"report_sent_title": "Thanks for reporting, well look into this.", "report_sent_title": "感謝您的檢舉,我們將著手處理。",
"send": "Send Report", "send": "傳送檢舉報告",
"skip_to_send": "Send without comment", "skip_to_send": "不加入備註並傳送",
"text_placeholder": "Type or paste additional comments", "text_placeholder": "請輸入或貼上額外的備註",
"reported": "REPORTED" "reported": "已檢舉"
}, },
"preview": { "preview": {
"keyboard": { "keyboard": {
"close_preview": "Close Preview", "close_preview": "關閉預覽",
"show_next": "Show Next", "show_next": "顯示下一筆",
"show_previous": "Show Previous" "show_previous": "顯示上一筆"
} }
}, },
"account_list": { "account_list": {
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", "tab_bar_hint": "目前已選擇的個人檔案:%s。點兩下然後按住以顯示帳號切換器",
"dismiss_account_switcher": "Dismiss Account Switcher", "dismiss_account_switcher": "關閉帳號切換器",
"add_account": "Add Account" "add_account": "新增帳號"
}, },
"wizard": { "wizard": {
"new_in_mastodon": "New in Mastodon", "new_in_mastodon": "Mastodon 新功能",
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", "multiple_account_switch_intro_description": "按住個人檔案按鈕以於多個帳號間切換。",
"accessibility_hint": "Double tap to dismiss this wizard" "accessibility_hint": "點兩下以關閉此設定精靈"
} }
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"NSCameraUsageDescription": "Used to take photo for post status", "NSCameraUsageDescription": "用來拍照發嘟文",
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", "NSPhotoLibraryAddUsageDescription": "用來儲存照片到圖片庫",
"NewPostShortcutItemTitle": "New Post", "NewPostShortcutItemTitle": "新增嘟文",
"SearchShortcutItemTitle": "Search" "SearchShortcutItemTitle": "搜尋"
} }

View File

@ -342,8 +342,12 @@
"offline": "Offline", "offline": "Offline",
"new_posts": "See new posts", "new_posts": "See new posts",
"published": "Published!", "published": "Published!",
"Publishing": "Publishing post..." "Publishing": "Publishing post...",
} "accessibility": {
"logo_label": "Logo Button",
"logo_hint": "Tap to scroll to top and tap again to previous location"
}
},
}, },
"suggestion_account": { "suggestion_account": {
"title": "Find People to Follow", "title": "Find People to Follow",
@ -498,6 +502,7 @@
"posts": "Posts", "posts": "Posts",
"hashtags": "Hashtags", "hashtags": "Hashtags",
"news": "News", "news": "News",
"community": "Community",
"for_you": "For You" "for_you": "For You"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1250" LastUpgradeVersion = "1330"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1250" LastUpgradeVersion = "1330"
version = "1.7"> version = "1.7">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "1250" LastUpgradeVersion = "1330"
version = "1.7"> version = "1.7">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"

View File

@ -19,7 +19,7 @@
<key>Mastodon - RTL.xcscheme_^#shared#^_</key> <key>Mastodon - RTL.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>19</integer> <integer>6</integer>
</dict> </dict>
<key>Mastodon - Release.xcscheme_^#shared#^_</key> <key>Mastodon - Release.xcscheme_^#shared#^_</key>
<dict> <dict>
@ -109,7 +109,7 @@
<key>MastodonIntent.xcscheme_^#shared#^_</key> <key>MastodonIntent.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>24</integer> <integer>28</integer>
</dict> </dict>
<key>MastodonIntents.xcscheme_^#shared#^_</key> <key>MastodonIntents.xcscheme_^#shared#^_</key>
<dict> <dict>
@ -124,12 +124,12 @@
<key>NotificationService.xcscheme_^#shared#^_</key> <key>NotificationService.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>22</integer> <integer>27</integer>
</dict> </dict>
<key>ShareActionExtension.xcscheme_^#shared#^_</key> <key>ShareActionExtension.xcscheme_^#shared#^_</key>
<dict> <dict>
<key>orderHint</key> <key>orderHint</key>
<integer>23</integer> <integer>22</integer>
</dict> </dict>
</dict> </dict>
<key>SuppressBuildableAutocreation</key> <key>SuppressBuildableAutocreation</key>

View File

@ -105,8 +105,8 @@
"repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git", "repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git",
"state": { "state": {
"branch": null, "branch": null,
"revision": "8074400b3819ef0395550082e6e8e960ef22e1f3", "revision": "2b9556a78b2986b8c0b04adc6da8ec206b448a0c",
"version": "2.2.2" "version": "2.2.3"
} }
}, },
{ {
@ -114,8 +114,8 @@
"repositoryURL": "https://github.com/kean/Nuke.git", "repositoryURL": "https://github.com/kean/Nuke.git",
"state": { "state": {
"branch": null, "branch": null,
"revision": "78fa963b8491fc520791d8c2a509f1b8593d8aae", "revision": "0ea7545b5c918285aacc044dc75048625c8257cc",
"version": "10.7.1" "version": "10.8.0"
} }
}, },
{ {

View File

@ -1,14 +1,7 @@
// Generated using Sourcery 1.6.1 https://github.com/krzysztofzablocki/Sourcery // Generated using Sourcery 1.6.1 https://github.com/krzysztofzablocki/Sourcery
// DO NOT EDIT // DO NOT EDIT
// sourcery:inline:DiscoveryCommunityViewController.AutoGenerateTableViewDelegate
// sourcery:inline:UserTimelineViewController.AutoGenerateTableViewDelegate
// Generated using Sourcery // Generated using Sourcery
// DO NOT EDIT // DO NOT EDIT
@ -33,3 +26,13 @@ func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith con
} }
// sourcery:end // sourcery:end

View File

@ -30,7 +30,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.3.3</string> <string>1.4.0</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>
<array> <array>
<dict> <dict>
@ -43,7 +43,7 @@
</dict> </dict>
</array> </array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>117</string> <string>121</string>
<key>ITSAppUsesNonExemptEncryption</key> <key>ITSAppUsesNonExemptEncryption</key>
<false/> <false/>
<key>LSApplicationQueriesSchemes</key> <key>LSApplicationQueriesSchemes</key>

View File

@ -0,0 +1,4 @@
"NSCameraUsageDescription" = "Used to take photo for post status";
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
"NewPostShortcutItemTitle" = "New Post";
"SearchShortcutItemTitle" = "Search";

View File

@ -0,0 +1,4 @@
"NSCameraUsageDescription" = "Used to take photo for post status";
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
"NewPostShortcutItemTitle" = "New Post";
"SearchShortcutItemTitle" = "Search";

View File

@ -0,0 +1,4 @@
"NSCameraUsageDescription" = "Used to take photo for post status";
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
"NewPostShortcutItemTitle" = "New Post";
"SearchShortcutItemTitle" = "Search";

View File

@ -0,0 +1,4 @@
"NSCameraUsageDescription" = "Used to take photo for post status";
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
"NewPostShortcutItemTitle" = "New Post";
"SearchShortcutItemTitle" = "Search";

View File

@ -0,0 +1,4 @@
"NSCameraUsageDescription" = "Used to take photo for post status";
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
"NewPostShortcutItemTitle" = "New Post";
"SearchShortcutItemTitle" = "Search";

View File

@ -0,0 +1,64 @@
//
// DiscoveryCommunityViewViewModel.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import os.log
import UIKit
import Combine
import GameplayKit
import CoreData
import CoreDataStack
import MastodonSDK
final class DiscoveryCommunityViewViewModel {
let logger = Logger(subsystem: "DiscoveryCommunityViewViewModel", category: "ViewModel")
var disposeBag = Set<AnyCancellable>()
// input
let context: AppContext
let viewDidAppeared = PassthroughSubject<Void, Never>()
let statusFetchedResultsController: StatusFetchedResultsController
// output
var diffableDataSource: UITableViewDiffableDataSource<StatusSection, StatusItem>?
private(set) lazy var stateMachine: GKStateMachine = {
let stateMachine = GKStateMachine(states: [
State.Initial(viewModel: self),
State.Reloading(viewModel: self),
State.Fail(viewModel: self),
State.Idle(viewModel: self),
State.Loading(viewModel: self),
State.NoMore(viewModel: self),
])
stateMachine.enter(State.Initial.self)
return stateMachine
}()
let didLoadLatest = PassthroughSubject<Void, Never>()
init(context: AppContext) {
self.context = context
self.statusFetchedResultsController = StatusFetchedResultsController(
managedObjectContext: context.managedObjectContext,
domain: nil,
additionalTweetPredicate: nil
)
// end init
context.authenticationService.activeMastodonAuthentication
.map { $0?.domain }
.assign(to: \.value, on: statusFetchedResultsController.domain)
.store(in: &disposeBag)
}
deinit {
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
}
}

View File

@ -0,0 +1,34 @@
//
// DiscoveryCommunityViewController+DataSourceProvider.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import UIKit
extension DiscoveryCommunityViewController: DataSourceProvider {
func item(from source: DataSourceItem.Source) async -> DataSourceItem? {
var _indexPath = source.indexPath
if _indexPath == nil, let cell = source.tableViewCell {
_indexPath = await self.indexPath(for: cell)
}
guard let indexPath = _indexPath else { return nil }
guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else {
return nil
}
switch item {
case .status(let record):
return .status(record: record)
default:
return nil
}
}
@MainActor
private func indexPath(for cell: UITableViewCell) async -> IndexPath? {
return tableView.indexPath(for: cell)
}
}

View File

@ -0,0 +1,154 @@
//
// DiscoveryCommunityViewController.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import os.log
import UIKit
import Combine
import MastodonUI
// Local Timeline
final class DiscoveryCommunityViewController: UIViewController, NeedsDependency, MediaPreviewableViewController {
let logger = Logger(subsystem: "DiscoveryCommunityViewController", category: "ViewController")
weak var context: AppContext! { willSet { precondition(!isViewLoaded) } }
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
var disposeBag = Set<AnyCancellable>()
var viewModel: DiscoveryCommunityViewModel!
let mediaPreviewTransitionController = MediaPreviewTransitionController()
lazy var tableView: UITableView = {
let tableView = UITableView()
tableView.rowHeight = UITableView.automaticDimension
tableView.estimatedRowHeight = 100
tableView.separatorStyle = .none
tableView.backgroundColor = .clear
return tableView
}()
let refreshControl = UIRefreshControl()
deinit {
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
}
}
extension DiscoveryCommunityViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor
ThemeService.shared.currentTheme
.receive(on: DispatchQueue.main)
.sink { [weak self] theme in
guard let self = self else { return }
self.view.backgroundColor = theme.secondarySystemBackgroundColor
}
.store(in: &disposeBag)
tableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tableView)
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])
tableView.refreshControl = refreshControl
refreshControl.addTarget(self, action: #selector(DiscoveryCommunityViewController.refreshControlValueChanged(_:)), for: .valueChanged)
viewModel.didLoadLatest
.receive(on: DispatchQueue.main)
.sink { [weak self] _ in
guard let self = self else { return }
self.refreshControl.endRefreshing()
}
.store(in: &disposeBag)
tableView.delegate = self
viewModel.setupDiffableDataSource(
tableView: tableView,
statusTableViewCellDelegate: self
)
// setup batch fetch
viewModel.listBatchFetchViewModel.setup(scrollView: tableView)
viewModel.listBatchFetchViewModel.shouldFetch
.receive(on: DispatchQueue.main)
.sink { [weak self] _ in
guard let self = self else { return }
guard self.view.window != nil else { return }
self.viewModel.stateMachine.enter(DiscoveryCommunityViewModel.State.Loading.self)
}
.store(in: &disposeBag)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
tableView.deselectRow(with: transitionCoordinator, animated: animated)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
viewModel.viewDidAppeared.send()
}
}
extension DiscoveryCommunityViewController {
@objc private func refreshControlValueChanged(_ sender: UIRefreshControl) {
if !viewModel.stateMachine.enter(DiscoveryCommunityViewModel.State.Reloading.self) {
refreshControl.endRefreshing()
}
}
}
// MARK: - UITableViewDelegate
extension DiscoveryCommunityViewController: UITableViewDelegate, AutoGenerateTableViewDelegate {
// sourcery:inline:CommunityViewController.AutoGenerateTableViewDelegate
// Generated using Sourcery
// DO NOT EDIT
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
aspectTableView(tableView, didSelectRowAt: indexPath)
}
func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point)
}
func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? {
return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration)
}
func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? {
return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration)
}
func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) {
aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator)
}
// sourcery:end
}
// MARK: - StatusTableViewCellDelegate
extension DiscoveryCommunityViewController: StatusTableViewCellDelegate { }
// MARK: ScrollViewContainer
extension DiscoveryCommunityViewController: ScrollViewContainer {
var scrollView: UIScrollView? {
tableView
}
}

View File

@ -0,0 +1,65 @@
//
// DiscoveryCommunityViewModel+Diffable.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import UIKit
import Combine
extension DiscoveryCommunityViewModel {
func setupDiffableDataSource(
tableView: UITableView,
statusTableViewCellDelegate: StatusTableViewCellDelegate
) {
diffableDataSource = StatusSection.diffableDataSource(
tableView: tableView,
context: context,
configuration: StatusSection.Configuration(
statusTableViewCellDelegate: statusTableViewCellDelegate,
timelineMiddleLoaderTableViewCellDelegate: nil,
filterContext: .none,
activeFilters: nil
)
)
stateMachine.enter(State.Reloading.self)
statusFetchedResultsController.$records
.receive(on: DispatchQueue.main)
.sink { [weak self] records in
guard let self = self else { return }
guard let diffableDataSource = self.diffableDataSource else { return }
var snapshot = NSDiffableDataSourceSnapshot<StatusSection, StatusItem>()
snapshot.appendSections([.main])
let items = records.map { StatusItem.status(record: $0) }
snapshot.appendItems(items, toSection: .main)
if let currentState = self.stateMachine.currentState {
switch currentState {
case is State.Initial,
is State.Reloading,
is State.Loading,
is State.Idle,
is State.Fail:
if !items.isEmpty {
snapshot.appendItems([.bottomLoader], toSection: .main)
}
case is State.NoMore:
break
default:
assertionFailure()
break
}
}
diffableDataSource.applySnapshot(snapshot, animated: false)
}
.store(in: &disposeBag)
}
}

View File

@ -0,0 +1,206 @@
//
// DiscoveryCommunityViewModel+State.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import os.log
import Foundation
import GameplayKit
import MastodonSDK
extension DiscoveryCommunityViewModel {
class State: GKState, NamingState {
let logger = Logger(subsystem: "DiscoveryCommunityViewModel.State", category: "StateMachine")
let id = UUID()
var name: String {
String(describing: Self.self)
}
weak var viewModel: DiscoveryCommunityViewModel?
init(viewModel: DiscoveryCommunityViewModel) {
self.viewModel = viewModel
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
let previousState = previousState as? DiscoveryCommunityViewModel.State
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "<nil>")")
}
@MainActor
func enter(state: State.Type) {
stateMachine?.enter(state)
}
deinit {
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)")
}
}
}
extension DiscoveryCommunityViewModel.State {
class Initial: DiscoveryCommunityViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Reloading.Type:
return true
default:
return false
}
}
}
class Reloading: DiscoveryCommunityViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Loading.Type:
return true
default:
return false
}
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
guard let _ = viewModel, let stateMachine = stateMachine else { return }
stateMachine.enter(Loading.self)
}
}
class Fail: DiscoveryCommunityViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Loading.Type:
return true
default:
return false
}
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
guard let _ = viewModel, let stateMachine = stateMachine else { return }
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: retry loading 3s later…", ((#file as NSString).lastPathComponent), #line, #function)
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: retry loading", ((#file as NSString).lastPathComponent), #line, #function)
stateMachine.enter(Loading.self)
}
}
}
class Idle: DiscoveryCommunityViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Reloading.Type, is Loading.Type:
return true
default:
return false
}
}
}
class Loading: DiscoveryCommunityViewModel.State {
var maxID: String?
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Fail.Type:
return true
case is Idle.Type:
return true
case is NoMore.Type:
return true
default:
return false
}
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
guard let viewModel = viewModel, let stateMachine = stateMachine else { return }
switch previousState {
case is Reloading:
maxID = nil
default:
break
}
guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else {
stateMachine.enter(Fail.self)
return
}
let maxID = self.maxID
let isReloading = maxID == nil
Task {
do {
let response = try await viewModel.context.apiService.publicTimeline(
query: .init(
local: true,
remote: nil,
onlyMedia: nil,
maxID: maxID,
sinceID: nil,
minID: nil,
limit: 20
),
authenticationBox: authenticationBox
)
let newMaxID = response.link?.maxID
let hasMore = newMaxID != nil
self.maxID = newMaxID
var hasNewStatusesAppend = false
var statusIDs = isReloading ? [] : viewModel.statusFetchedResultsController.statusIDs.value
for status in response.value {
guard !statusIDs.contains(status.id) else { continue }
statusIDs.append(status.id)
hasNewStatusesAppend = true
}
if hasNewStatusesAppend, hasMore {
self.maxID = response.link?.maxID
await enter(state: Idle.self)
} else {
await enter(state: NoMore.self)
}
viewModel.statusFetchedResultsController.statusIDs.value = statusIDs
viewModel.didLoadLatest.send()
} catch {
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch user timeline fail: \(error.localizedDescription)")
await enter(state: Fail.self)
}
} // end Task
} // end func
}
class NoMore: DiscoveryCommunityViewModel.State {
override func isValidNextState(_ stateClass: AnyClass) -> Bool {
switch stateClass {
case is Reloading.Type:
return true
default:
return false
}
}
override func didEnter(from previousState: GKState?) {
super.didEnter(from: previousState)
}
}
}

View File

@ -0,0 +1,65 @@
//
// DiscoveryCommunityViewModel.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import os.log
import UIKit
import Combine
import GameplayKit
import CoreData
import CoreDataStack
import MastodonSDK
final class DiscoveryCommunityViewModel {
let logger = Logger(subsystem: "DiscoveryCommunityViewModel", category: "ViewModel")
var disposeBag = Set<AnyCancellable>()
// input
let context: AppContext
let viewDidAppeared = PassthroughSubject<Void, Never>()
let statusFetchedResultsController: StatusFetchedResultsController
let listBatchFetchViewModel = ListBatchFetchViewModel()
// output
var diffableDataSource: UITableViewDiffableDataSource<StatusSection, StatusItem>?
private(set) lazy var stateMachine: GKStateMachine = {
let stateMachine = GKStateMachine(states: [
State.Initial(viewModel: self),
State.Reloading(viewModel: self),
State.Fail(viewModel: self),
State.Idle(viewModel: self),
State.Loading(viewModel: self),
State.NoMore(viewModel: self),
])
stateMachine.enter(State.Initial.self)
return stateMachine
}()
let didLoadLatest = PassthroughSubject<Void, Never>()
init(context: AppContext) {
self.context = context
self.statusFetchedResultsController = StatusFetchedResultsController(
managedObjectContext: context.managedObjectContext,
domain: nil,
additionalTweetPredicate: nil
)
// end init
context.authenticationService.activeMastodonAuthentication
.map { $0?.domain }
.assign(to: \.value, on: statusFetchedResultsController.domain)
.store(in: &disposeBag)
}
deinit {
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
}
}

View File

@ -0,0 +1,64 @@
//
// DiscoveryCommunityViewModel.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import os.log
import UIKit
import Combine
import GameplayKit
import CoreData
import CoreDataStack
import MastodonSDK
final class DiscoveryCommunityViewModel {
let logger = Logger(subsystem: "DiscoveryCommunityViewModel", category: "ViewModel")
var disposeBag = Set<AnyCancellable>()
// input
let context: AppContext
let viewDidAppeared = PassthroughSubject<Void, Never>()
let statusFetchedResultsController: StatusFetchedResultsController
// output
var diffableDataSource: UITableViewDiffableDataSource<StatusSection, StatusItem>?
private(set) lazy var stateMachine: GKStateMachine = {
let stateMachine = GKStateMachine(states: [
State.Initial(viewModel: self),
State.Reloading(viewModel: self),
State.Fail(viewModel: self),
State.Idle(viewModel: self),
State.Loading(viewModel: self),
State.NoMore(viewModel: self),
])
stateMachine.enter(State.Initial.self)
return stateMachine
}()
let didLoadLatest = PassthroughSubject<Void, Never>()
init(context: AppContext) {
self.context = context
self.statusFetchedResultsController = StatusFetchedResultsController(
managedObjectContext: context.managedObjectContext,
domain: nil,
additionalTweetPredicate: nil
)
// end init
context.authenticationService.activeMastodonAuthentication
.map { $0?.domain }
.assign(to: \.value, on: statusFetchedResultsController.domain)
.store(in: &disposeBag)
}
deinit {
os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function)
}
}

View File

@ -9,6 +9,7 @@ import UIKit
import Combine import Combine
import Tabman import Tabman
import Pageboy import Pageboy
import MastodonLocalization
final class DiscoveryViewModel { final class DiscoveryViewModel {
@ -19,6 +20,7 @@ final class DiscoveryViewModel {
let discoveryPostsViewController: DiscoveryPostsViewController let discoveryPostsViewController: DiscoveryPostsViewController
let discoveryHashtagsViewController: DiscoveryHashtagsViewController let discoveryHashtagsViewController: DiscoveryHashtagsViewController
let discoveryNewsViewController: DiscoveryNewsViewController let discoveryNewsViewController: DiscoveryNewsViewController
let discoveryCommunityViewController: DiscoveryCommunityViewController
let discoveryForYouViewController: DiscoveryForYouViewController let discoveryForYouViewController: DiscoveryForYouViewController
@Published var viewControllers: [ScrollViewContainer & PageViewController] @Published var viewControllers: [ScrollViewContainer & PageViewController]
@ -48,6 +50,12 @@ final class DiscoveryViewModel {
viewController.viewModel = DiscoveryNewsViewModel(context: context) viewController.viewModel = DiscoveryNewsViewModel(context: context)
return viewController return viewController
}() }()
discoveryCommunityViewController = {
let viewController = DiscoveryCommunityViewController()
setupDependency(viewController)
viewController.viewModel = DiscoveryCommunityViewModel(context: context)
return viewController
}()
discoveryForYouViewController = { discoveryForYouViewController = {
let viewController = DiscoveryForYouViewController() let viewController = DiscoveryForYouViewController()
setupDependency(viewController) setupDependency(viewController)
@ -58,6 +66,7 @@ final class DiscoveryViewModel {
discoveryPostsViewController, discoveryPostsViewController,
discoveryHashtagsViewController, discoveryHashtagsViewController,
discoveryNewsViewController, discoveryNewsViewController,
discoveryCommunityViewController,
discoveryForYouViewController, discoveryForYouViewController,
] ]
// end init // end init
@ -123,7 +132,7 @@ protocol PageViewController: UIViewController {
// MARK: - PageViewController // MARK: - PageViewController
extension DiscoveryPostsViewController: PageViewController { extension DiscoveryPostsViewController: PageViewController {
var tabItemTitle: String { "Posts" } var tabItemTitle: String { L10n.Scene.Discovery.Tabs.posts }
var tabItem: TMBarItemable { var tabItem: TMBarItemable {
return TMBarItem(title: tabItemTitle) return TMBarItem(title: tabItemTitle)
} }
@ -132,7 +141,7 @@ extension DiscoveryPostsViewController: PageViewController {
// MARK: - PageViewController // MARK: - PageViewController
extension DiscoveryHashtagsViewController: PageViewController { extension DiscoveryHashtagsViewController: PageViewController {
var tabItemTitle: String { "Hashtags" } var tabItemTitle: String { L10n.Scene.Discovery.Tabs.hashtags }
var tabItem: TMBarItemable { var tabItem: TMBarItemable {
return TMBarItem(title: tabItemTitle) return TMBarItem(title: tabItemTitle)
@ -141,7 +150,15 @@ extension DiscoveryHashtagsViewController: PageViewController {
// MARK: - PageViewController // MARK: - PageViewController
extension DiscoveryNewsViewController: PageViewController { extension DiscoveryNewsViewController: PageViewController {
var tabItemTitle: String { "News" } var tabItemTitle: String { L10n.Scene.Discovery.Tabs.news }
var tabItem: TMBarItemable {
return TMBarItem(title: tabItemTitle)
}
}
// MARK: - PageViewController
extension DiscoveryCommunityViewController: PageViewController {
var tabItemTitle: String { L10n.Scene.Discovery.Tabs.community }
var tabItem: TMBarItemable { var tabItem: TMBarItemable {
return TMBarItem(title: tabItemTitle) return TMBarItem(title: tabItemTitle)
} }
@ -149,7 +166,7 @@ extension DiscoveryNewsViewController: PageViewController {
// MARK: - PageViewController // MARK: - PageViewController
extension DiscoveryForYouViewController: PageViewController { extension DiscoveryForYouViewController: PageViewController {
var tabItemTitle: String { "For You" } var tabItemTitle: String { L10n.Scene.Discovery.Tabs.forYou }
var tabItem: TMBarItemable { var tabItem: TMBarItemable {
return TMBarItem(title: tabItemTitle) return TMBarItem(title: tabItemTitle)
} }

View File

@ -73,4 +73,5 @@ extension DiscoveryHashtagsViewModel {
hashtags = response.value.filter { !$0.name.isEmpty } hashtags = response.value.filter { !$0.name.isEmpty }
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch tags: \(response.value.count)") logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch tags: \(response.value.count)")
} }
} }

View File

@ -180,7 +180,7 @@ extension DiscoveryPostsViewModel.State {
} }
viewModel.statusFetchedResultsController.statusIDs.value = statusIDs viewModel.statusFetchedResultsController.statusIDs.value = statusIDs
viewModel.didLoadLatest.send() viewModel.didLoadLatest.send()
// } catch let error as?
} catch { } catch {
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch posts fail: \(error.localizedDescription)") logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch posts fail: \(error.localizedDescription)")
if let error = error as? Mastodon.API.Error, error.httpResponseStatus.code == 404 { if let error = error as? Mastodon.API.Error, error.httpResponseStatus.code == 404 {

View File

@ -108,6 +108,8 @@ extension HomeTimelineNavigationBarTitleView {
logoButton.setImage(Asset.Asset.mastodonTextLogo.image.withRenderingMode(.alwaysTemplate), for: .normal) logoButton.setImage(Asset.Asset.mastodonTextLogo.image.withRenderingMode(.alwaysTemplate), for: .normal)
logoButton.contentMode = .center logoButton.contentMode = .center
logoButton.isHidden = false logoButton.isHidden = false
logoButton.accessibilityLabel = "Logo Button" // TODO :i18n
logoButton.accessibilityHint = "Tap to scroll to top and tap again to previous location"
case .newPostButton: case .newPostButton:
configureButton( configureButton(
title: L10n.Scene.HomeTimeline.NavigationBarState.newPosts, title: L10n.Scene.HomeTimeline.NavigationBarState.newPosts,
@ -115,6 +117,7 @@ extension HomeTimelineNavigationBarTitleView {
backgroundColor: Asset.Colors.brandBlue.color backgroundColor: Asset.Colors.brandBlue.color
) )
button.isHidden = false button.isHidden = false
button.accessibilityLabel = L10n.Scene.HomeTimeline.NavigationBarState.newPosts
case .offlineButton: case .offlineButton:
configureButton( configureButton(
title: L10n.Scene.HomeTimeline.NavigationBarState.offline, title: L10n.Scene.HomeTimeline.NavigationBarState.offline,
@ -122,12 +125,14 @@ extension HomeTimelineNavigationBarTitleView {
backgroundColor: Asset.Colors.danger.color backgroundColor: Asset.Colors.danger.color
) )
button.isHidden = false button.isHidden = false
button.accessibilityLabel = L10n.Scene.HomeTimeline.NavigationBarState.offline
case .publishingPostLabel: case .publishingPostLabel:
label.font = .systemFont(ofSize: 17, weight: .semibold) label.font = .systemFont(ofSize: 17, weight: .semibold)
label.textColor = Asset.Colors.Label.primary.color label.textColor = Asset.Colors.Label.primary.color
label.text = L10n.Scene.HomeTimeline.NavigationBarState.publishing label.text = L10n.Scene.HomeTimeline.NavigationBarState.publishing
label.textAlignment = .center label.textAlignment = .center
label.isHidden = false label.isHidden = false
button.accessibilityLabel = L10n.Scene.HomeTimeline.NavigationBarState.publishing
case .publishedButton: case .publishedButton:
blockingState = state blockingState = state
configureButton( configureButton(
@ -136,6 +141,7 @@ extension HomeTimelineNavigationBarTitleView {
backgroundColor: Asset.Colors.successGreen.color backgroundColor: Asset.Colors.successGreen.color
) )
button.isHidden = false button.isHidden = false
button.accessibilityLabel = L10n.Scene.HomeTimeline.NavigationBarState.published
let presentDuration: TimeInterval = 0.33 let presentDuration: TimeInterval = 0.33
let scaleAnimator = UIViewPropertyAnimator(duration: presentDuration, timingParameters: UISpringTimingParameters()) let scaleAnimator = UIViewPropertyAnimator(duration: presentDuration, timingParameters: UISpringTimingParameters())

View File

@ -115,8 +115,11 @@ extension MastodonPickServerViewModel {
if self.mode == .signUp { if self.mode == .signUp {
indexedServers = indexedServers.filter { !$0.approvalRequired } indexedServers = indexedServers.filter { !$0.approvalRequired }
} }
// Note:
// sort by calculate last week users count
// and make medium size (~800) server to top
// group by language user preferred language first. Then sort by `totalUsers` // group by language user preferred language first
var languageToServersMapping = OrderedDictionary<String, [Mastodon.Entity.Server]>() var languageToServersMapping = OrderedDictionary<String, [Mastodon.Entity.Server]>()
for language in Locale.preferredLanguages { for language in Locale.preferredLanguages {
let local = Locale(identifier: language) let local = Locale(identifier: language)
@ -126,14 +129,22 @@ extension MastodonPickServerViewModel {
// append to dict // append to dict
languageToServersMapping[languageCode] = indexedServers languageToServersMapping[languageCode] = indexedServers
.filter { $0.language.lowercased() == languageCode.lowercased() } .filter { $0.language.lowercased() == languageCode.lowercased() }
.sorted(by: { $0.totalUsers > $1.totalUsers }) .sorted(by: { lh, rh in
let lhValue = abs(log2(800.0) - log2(Double(lh.lastWeekUsers)))
let rhValue = abs(log2(800.0) - log2(Double(rh.lastWeekUsers)))
return lhValue < rhValue
})
} }
// sort remains servers by `totalUsers` // sort remains servers
let remainsServers = indexedServers let remainsServers = indexedServers
.filter { server in .filter { server in
return !languageToServersMapping.contains { _, servers in servers.contains(server) } return !languageToServersMapping.contains { _, servers in servers.contains(server) }
} }
.sorted(by: { $0.totalUsers > $1.totalUsers }) .sorted(by: { lh, rh in
let lhValue = abs(log2(800.0) - log2(Double(lh.lastWeekUsers)))
let rhValue = abs(log2(800.0) - log2(Double(rh.lastWeekUsers)))
return lhValue < rhValue
})
var _indexedServers: [Mastodon.Entity.Server] = [] var _indexedServers: [Mastodon.Entity.Server] = []
for key in languageToServersMapping.keys { for key in languageToServersMapping.keys {

View File

@ -195,6 +195,12 @@ extension UserTimelineViewModel.State {
// trigger data source update. otherwise, spinner always display // trigger data source update. otherwise, spinner always display
viewModel.isSuspended.value = viewModel.isSuspended.value viewModel.isSuspended.value = viewModel.isSuspended.value
// remove bottom loader
guard let diffableDataSource = viewModel.diffableDataSource else { return }
var snapshot = diffableDataSource.snapshot()
snapshot.deleteItems([.bottomLoader])
diffableDataSource.apply(snapshot)
} }
} }
} }

View File

@ -106,6 +106,10 @@ class MainTabBarController: UITabBarController {
var _viewControllers: [UIViewController] = [] var _viewControllers: [UIViewController] = []
private(set) var isReadyForWizardAvatarButton = false private(set) var isReadyForWizardAvatarButton = false
// output
var avatarURLObserver: AnyCancellable?
@Published var avatarURL: URL?
init(context: AppContext, coordinator: SceneCoordinator) { init(context: AppContext, coordinator: SceneCoordinator) {
self.context = context self.context = context
@ -226,17 +230,34 @@ extension MainTabBarController {
.store(in: &disposeBag) .store(in: &disposeBag)
layoutAvatarButton() layoutAvatarButton()
$avatarURL
.receive(on: DispatchQueue.main)
.sink { [weak self] avatarURL in
guard let self = self else { return }
self.avatarButton.avatarImageView.setImage(
url: avatarURL,
placeholder: .placeholder(color: .systemFill),
scaleToSize: MainTabBarController.avatarButtonSize
)
}
.store(in: &disposeBag)
context.authenticationService.activeMastodonAuthentication context.authenticationService.activeMastodonAuthentication
.receive(on: DispatchQueue.main) .receive(on: DispatchQueue.main)
.sink { [weak self] activeMastodonAuthentication in .sink { [weak self] activeMastodonAuthentication in
guard let self = self else { return } guard let self = self else { return }
let avatarImageURL = activeMastodonAuthentication?.user.avatarImageURL() if let user = activeMastodonAuthentication?.user {
self.avatarButton.avatarImageView.setImage( self.avatarURLObserver = user.publisher(for: \.avatar)
url: avatarImageURL, .sink { [weak self, weak user] _ in
placeholder: .placeholder(color: .systemFill), guard let self = self else { return }
scaleToSize: MainTabBarController.avatarButtonSize guard let user = user else { return }
) guard user.managedObjectContext != nil else { return }
self.avatarURL = user.avatarImageURL()
}
} else {
self.avatarURLObserver = nil
}
// a11y // a11y
let _profileTabItem = self.tabBar.items?.first { item in item.tag == Tab.me.tag } let _profileTabItem = self.tabBar.items?.first { item in item.tag == Tab.me.tag }

View File

@ -0,0 +1,52 @@
//
// APIService+PublicTimeline.swift
// Mastodon
//
// Created by MainasuK on 2022-4-29.
//
import Foundation
import Combine
import CoreData
import CoreDataStack
import CommonOSLog
import MastodonSDK
extension APIService {
func publicTimeline(
query: Mastodon.API.Timeline.PublicTimelineQuery,
authenticationBox: MastodonAuthenticationBox
) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Status]> {
let domain = authenticationBox.domain
let authorization = authenticationBox.userAuthorization
let response = try await Mastodon.API.Timeline.public(
session: session,
domain: domain,
query: query,
authorization: authorization
).singleOutput()
let managedObjectContext = self.backgroundManagedObjectContext
try await managedObjectContext.performChanges {
let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user
for entity in response.value {
_ = Persistence.Status.createOrMerge(
in: managedObjectContext,
context: Persistence.Status.PersistContext(
domain: domain,
entity: entity,
me: me,
statusCache: nil,
userCache: nil,
networkDate: response.networkDate
)
)
}
}
return response
} // end func
}

View File

@ -48,7 +48,7 @@ extension APIService {
try await managedObjectContext.performChanges { try await managedObjectContext.performChanges {
let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user
for entity in response.value { for entity in response.value {
Persistence.Status.createOrMerge( _ = Persistence.Status.createOrMerge(
in: managedObjectContext, in: managedObjectContext,
context: Persistence.Status.PersistContext( context: Persistence.Status.PersistContext(
domain: domain, domain: domain,

View File

@ -17,9 +17,9 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.3.3</string> <string>1.4.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>117</string> <string>121</string>
<key>NSExtension</key> <key>NSExtension</key>
<dict> <dict>
<key>NSExtensionAttributes</key> <key>NSExtensionAttributes</key>

View File

@ -0,0 +1,51 @@
"16wxgf" = "پۆستێک بکە";
"751xkl" = "نووسین";
"CsR7G2" = "پۆستێک بکە";
"HZSGTr" = "چی پۆست بکرێت؟";
"HdGikU" = "پۆستکردنەکە سەرکەوتوو نەبوو";
"KDNTJ4" = "هۆکاری سەرنەکەوتن";
"RHxKOw" = "پۆست بە نووسینەوە بکە";
"RxSqsb" = "پۆست";
"WCIR3D" = "${content} لە ماستۆدۆن پۆست بکە";
"ZKJSNu" = "پۆست";
"ZS1XaK" = "${content}";
"ZbSjzC" = "دەرکەوتن";
"Zo4jgJ" = "دەرکەوتنی پۆست";
"apSxMG-dYQ5NN" = "${count} بژاردە بۆ 'گشتی' هەن.";
"apSxMG-ehFLjY" = "${count} بژاردە بۆ 'تەنیا شوێنکەوتووەکان' هەن.";
"ayoYEb-dYQ5NN" = "${content}، گشتی";
"ayoYEb-ehFLjY" = "${content}، تەنیا شوێنکەوتووەکان";
"dUyuGg" = "پۆستێک بکە";
"dYQ5NN" = "گشتی";
"ehFLjY" = "تەنیا شوێنکەوتووەکان";
"gfePDu" = "پۆستکردنەکە سەرکەوتوو نەبوو. ${failureReason}";
"k7dbKQ" = "پۆستەکە کرا.";
"oGiqmY-dYQ5NN" = "دڵنیایت لە هەڵبژاردنی 'گشتی'؟";
"oGiqmY-ehFLjY" = "دڵنیایت لە هەڵبژاردنی 'تەنیا شوێنکەوتووەکان'؟";
"rM6dvp" = "بەستەر";
"ryJLwG" = "پۆستەکە کرا. ";

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,51 @@
"16wxgf" = "Post on Mastodon";
"751xkl" = "Text Content";
"CsR7G2" = "Post on Mastodon";
"HZSGTr" = "What content to post?";
"HdGikU" = "Posting failed";
"KDNTJ4" = "Failure Reason";
"RHxKOw" = "Send Post with text content";
"RxSqsb" = "Post";
"WCIR3D" = "Post ${content} on Mastodon";
"ZKJSNu" = "Post";
"ZS1XaK" = "${content}";
"ZbSjzC" = "Visibility";
"Zo4jgJ" = "Post Visibility";
"apSxMG-dYQ5NN" = "There are ${count} options matching Public.";
"apSxMG-ehFLjY" = "There are ${count} options matching Followers Only.";
"ayoYEb-dYQ5NN" = "${content}, Public";
"ayoYEb-ehFLjY" = "${content}, Followers Only";
"dUyuGg" = "Post on Mastodon";
"dYQ5NN" = "Public";
"ehFLjY" = "Followers Only";
"gfePDu" = "Posting failed. ${failureReason}";
"k7dbKQ" = "Post was sent successfully.";
"oGiqmY-dYQ5NN" = "Just to confirm, you wanted Public?";
"oGiqmY-ehFLjY" = "Just to confirm, you wanted Followers Only?";
"rM6dvp" = "URL";
"ryJLwG" = "Post was sent successfully. ";

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,51 @@
"16wxgf" = "Pubblica su Mastodon";
"751xkl" = "Contenuto testuale";
"CsR7G2" = "Pubblica su Mastodon";
"HZSGTr" = "Quale contenuto postare?";
"HdGikU" = "Pubblicazione non riuscita";
"KDNTJ4" = "Motivo del fallimento";
"RHxKOw" = "Invia post con contenuto testuale";
"RxSqsb" = "Pubblica";
"WCIR3D" = "Pubblica ${content} su Mastodon";
"ZKJSNu" = "Pubblica";
"ZS1XaK" = "${content}";
"ZbSjzC" = "Visibilità";
"Zo4jgJ" = "Visibilità del post";
"apSxMG-dYQ5NN" = "Ci sono ${count} opzioni corrispondenti a 'Pubblico'.";
"apSxMG-ehFLjY" = "Ci sono ${count} opzioni corrispondenti a Solo Seguaci.";
"ayoYEb-dYQ5NN" = "${content}, Pubblico";
"ayoYEb-ehFLjY" = "${content}, Solo seguaci";
"dUyuGg" = "Pubblica su Mastodon";
"dYQ5NN" = "Pubblico";
"ehFLjY" = "Solo i seguaci";
"gfePDu" = "Pubblicazione fallita. ${failureReason}";
"k7dbKQ" = "Post inviato con successo.";
"oGiqmY-dYQ5NN" = "Solo per confermare, volevi Pubblico?";
"oGiqmY-ehFLjY" = "Solo per confermare, volevi 'Solo seguaci'?";
"rM6dvp" = "URL";
"ryJLwG" = "Post inviato con successo. ";

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,51 @@
"16wxgf" = "Mastodon'da paylaş";
"751xkl" = "Metin içeriği";
"CsR7G2" = "Mastodon'da paylaş";
"HZSGTr" = "Ne içeriği paylaşılacak?";
"HdGikU" = "Gönderi paylaşılamadı";
"KDNTJ4" = "Hata Sebebi";
"RHxKOw" = "Metin içeriği ile gönderiyi paylaş";
"RxSqsb" = "Gönderi";
"WCIR3D" = "${content} içeriğini Mastodon'da paylaş";
"ZKJSNu" = "Gönderi";
"ZS1XaK" = "${content}";
"ZbSjzC" = "Gizlilik";
"Zo4jgJ" = "Gönderi Gizliliği";
"apSxMG-dYQ5NN" = "\"Herkese açık\" ile eşleşen ${count} seçenek var.";
"apSxMG-ehFLjY" = "\"Sadece takipçiler\" ile eşleşen ${count} seçenek var.";
"ayoYEb-dYQ5NN" = "${content}, Herkese açık";
"ayoYEb-ehFLjY" = "${content}, Sadece takipçiler";
"dUyuGg" = "Mastodon'da paylaş";
"dYQ5NN" = "Herkese açık";
"ehFLjY" = "Sadece takipçiler";
"gfePDu" = "Gönderi paylaşılamadı. ${failureReason}";
"k7dbKQ" = "Gönderi başarıyla paylaşıldı.";
"oGiqmY-dYQ5NN" = "\"Herkese açık\" paylaşmak istediğinize emin misiniz?";
"oGiqmY-ehFLjY" = "\"Sadece takipçiler\" için paylaşmak istediğinize emin misiniz?";
"rM6dvp" = "Bağlantı";
"ryJLwG" = "Gönderi başarıyla paylaşıldı. ";

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,51 @@
"16wxgf" = "於 Mastodon 上發嘟文";
"751xkl" = "文字內容";
"CsR7G2" = "於 Mastodon 上發嘟文";
"HZSGTr" = "要發什麼嘟呢?";
"HdGikU" = "嘟文失敗";
"KDNTJ4" = "失敗原因";
"RHxKOw" = "發送文字內容嘟文";
"RxSqsb" = "嘟文";
"WCIR3D" = "將 ${content} 於 Mastodon 上發嘟";
"ZKJSNu" = "嘟文";
"ZS1XaK" = "${content}";
"ZbSjzC" = "可見性";
"Zo4jgJ" = "嘟文可見性";
"apSxMG-dYQ5NN" = "有 ${count} 個選項符合「公開」。";
"apSxMG-ehFLjY" = "有 ${count} 個選項符合「僅限跟隨者」。";
"ayoYEb-dYQ5NN" = "${content},公開";
"ayoYEb-ehFLjY" = "${content},僅限跟隨者";
"dUyuGg" = "於 Mastodon 上發嘟文";
"dYQ5NN" = "公開";
"ehFLjY" = "僅限跟隨者";
"gfePDu" = "發嘟失敗。${failureReason}";
"k7dbKQ" = "成功發出嘟文。";
"oGiqmY-dYQ5NN" = "再確認一次,您想要「公開」?";
"oGiqmY-ehFLjY" = "再確認一次,您想要「僅限跟隨者」?";
"rM6dvp" = "網址";
"ryJLwG" = "成功發出嘟文。 ";

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>zero</key>
<string>0 options</string>
<key>one</key>
<string>1 option</string>
<key>two</key>
<string>2 options</string>
<key>few</key>
<string>%ld options</string>
<key>many</key>
<string>%ld options</string>
<key>other</key>
<string>%ld options</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -20,19 +20,14 @@ let package = Package(
"MastodonLocalization", "MastodonLocalization",
"MastodonSDK", "MastodonSDK",
"MastodonUI", "MastodonUI",
]), ])
.library(
name: "MastodonCommon",
targets: [
"MastodonCommon",
]),
], ],
dependencies: [ dependencies: [
.package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.0"), .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.0"),
.package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"), .package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"),
.package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"), .package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"),
.package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"), .package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"),
.package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.2")), .package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.3")),
.package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"), .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"),
.package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"), .package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"),
.package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"), .package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"),
@ -88,15 +83,15 @@ let package = Package(
"MastodonExtension", "MastodonExtension",
"MastodonAsset", "MastodonAsset",
"MastodonLocalization", "MastodonLocalization",
"Nuke",
"NukeFLAnimatedImagePlugin",
"UITextView+Placeholder",
"Introspect",
.product(name: "Alamofire", package: "Alamofire"), .product(name: "Alamofire", package: "Alamofire"),
.product(name: "AlamofireImage", package: "AlamofireImage"), .product(name: "AlamofireImage", package: "AlamofireImage"),
.product(name: "MetaTextKit", package: "MetaTextKit"),
.product(name: "FLAnimatedImage", package: "FLAnimatedImage"), .product(name: "FLAnimatedImage", package: "FLAnimatedImage"),
.product(name: "FaviconFinder", package: "FaviconFinder"), .product(name: "FaviconFinder", package: "FaviconFinder"),
.product(name: "MetaTextKit", package: "MetaTextKit"),
.product(name: "Nuke", package: "Nuke"),
.product(name: "NukeFLAnimatedImagePlugin", package: "NukeFLAnimatedImagePlugin"),
.product(name: "Introspect", package: "Introspect"),
.product(name: "UITextView+Placeholder", package: "UITextView+Placeholder"),
] ]
), ),
.testTarget( .testTarget(

View File

@ -1,14 +1,12 @@
// //
// UserDefaults.swift // UserDefaults.swift
// AppShared //
// //
// Created by MainasuK Cirno on 2021-4-27. // Created by MainasuK on 2022-4-29.
// //
import UIKit import Foundation
import MastodonCommon
extension UserDefaults { extension UserDefaults {
public static let shared = UserDefaults(suiteName: AppName.groupID)! public static let shared = UserDefaults(suiteName: AppName.groupID)!
} }

View File

@ -549,6 +549,8 @@ public enum L10n {
/// These are the posts gaining traction in your corner of Mastodon. /// These are the posts gaining traction in your corner of Mastodon.
public static let intro = L10n.tr("Localizable", "Scene.Discovery.Intro") public static let intro = L10n.tr("Localizable", "Scene.Discovery.Intro")
public enum Tabs { public enum Tabs {
/// Community
public static let community = L10n.tr("Localizable", "Scene.Discovery.Tabs.Community")
/// For You /// For You
public static let forYou = L10n.tr("Localizable", "Scene.Discovery.Tabs.ForYou") public static let forYou = L10n.tr("Localizable", "Scene.Discovery.Tabs.ForYou")
/// Hashtags /// Hashtags
@ -892,11 +894,11 @@ public enum L10n {
} }
} }
public enum ServerPicker { public enum ServerPicker {
/// Pick a community based on your interests, region, or a general purpose one. /// Pick a server based on your interests, region, or a general purpose one.
public static let subtitle = L10n.tr("Localizable", "Scene.ServerPicker.Subtitle") public static let subtitle = L10n.tr("Localizable", "Scene.ServerPicker.Subtitle")
/// Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual. /// Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.
public static let subtitleExtend = L10n.tr("Localizable", "Scene.ServerPicker.SubtitleExtend") public static let subtitleExtend = L10n.tr("Localizable", "Scene.ServerPicker.SubtitleExtend")
/// Mastodon is made of users in different communities. /// Mastodon is made of users in different servers.
public static let title = L10n.tr("Localizable", "Scene.ServerPicker.Title") public static let title = L10n.tr("Localizable", "Scene.ServerPicker.Title")
public enum Button { public enum Button {
/// See Less /// See Less
@ -943,7 +945,7 @@ public enum L10n {
public static let noResults = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.NoResults") public static let noResults = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.NoResults")
} }
public enum Input { public enum Input {
/// Search communities /// Search servers
public static let placeholder = L10n.tr("Localizable", "Scene.ServerPicker.Input.Placeholder") public static let placeholder = L10n.tr("Localizable", "Scene.ServerPicker.Input.Placeholder")
} }
public enum Label { public enum Label {

View File

@ -126,7 +126,7 @@
"Common.Controls.Status.Visibility.Unlisted" = "يُمكِنُ لِلجَميعِ رُؤيَةُ هَذَا المَنشورِ وَلكِنَّهُ لَا يُعرَضُ فِي الخَطِّ الزَمنيّ العام."; "Common.Controls.Status.Visibility.Unlisted" = "يُمكِنُ لِلجَميعِ رُؤيَةُ هَذَا المَنشورِ وَلكِنَّهُ لَا يُعرَضُ فِي الخَطِّ الزَمنيّ العام.";
"Common.Controls.Tabs.Home" = "الرَّئِيسَة"; "Common.Controls.Tabs.Home" = "الرَّئِيسَة";
"Common.Controls.Tabs.Notification" = "الإشعارات"; "Common.Controls.Tabs.Notification" = "الإشعارات";
"Common.Controls.Tabs.Profile" = "الملف التعريفي"; "Common.Controls.Tabs.Profile" = "المِلَفُّ التَّعريفِيّ";
"Common.Controls.Tabs.Search" = "البَحث"; "Common.Controls.Tabs.Search" = "البَحث";
"Common.Controls.Timeline.Filtered" = "مُصفَّى"; "Common.Controls.Timeline.Filtered" = "مُصفَّى";
"Common.Controls.Timeline.Header.BlockedWarning" = "لا يُمكِنُكَ عَرض الملف التَعريفي لهذا المُستخدِم "Common.Controls.Timeline.Header.BlockedWarning" = "لا يُمكِنُكَ عَرض الملف التَعريفي لهذا المُستخدِم
@ -203,10 +203,11 @@
انقر على الرابط لتأكيد حسابك."; انقر على الرابط لتأكيد حسابك.";
"Scene.ConfirmEmail.Title" = "شيءٌ أخير."; "Scene.ConfirmEmail.Title" = "شيءٌ أخير.";
"Scene.Discovery.Intro" = "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون."; "Scene.Discovery.Intro" = "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون.";
"Scene.Discovery.Tabs.Community" = "المُجتَمَع";
"Scene.Discovery.Tabs.ForYou" = "لَك"; "Scene.Discovery.Tabs.ForYou" = "لَك";
"Scene.Discovery.Tabs.Hashtags" = "الوسوم"; "Scene.Discovery.Tabs.Hashtags" = "وُسُوم";
"Scene.Discovery.Tabs.News" = "الأخبار"; "Scene.Discovery.Tabs.News" = "أخبار";
"Scene.Discovery.Tabs.Posts" = "المنشورات"; "Scene.Discovery.Tabs.Posts" = "مَنشُورات";
"Scene.Favorite.Title" = "مُفضَّلَتُك"; "Scene.Favorite.Title" = "مُفضَّلَتُك";
"Scene.Follower.Footer" = "لا يُمكِن عَرض المُتابِعين مِنَ الخوادم الأُخرى."; "Scene.Follower.Footer" = "لا يُمكِن عَرض المُتابِعين مِنَ الخوادم الأُخرى.";
"Scene.Following.Footer" = "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى."; "Scene.Following.Footer" = "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى.";

View File

@ -202,6 +202,7 @@ carregat a Mastodon.";
"Scene.ConfirmEmail.Subtitle" = "Toca l'enllaç del correu electrònic que t'hem enviat per a confirmar el teu compte."; "Scene.ConfirmEmail.Subtitle" = "Toca l'enllaç del correu electrònic que t'hem enviat per a confirmar el teu compte.";
"Scene.ConfirmEmail.Title" = "Una última cosa."; "Scene.ConfirmEmail.Title" = "Una última cosa.";
"Scene.Discovery.Intro" = "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon."; "Scene.Discovery.Intro" = "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon.";
"Scene.Discovery.Tabs.Community" = "Comunitat";
"Scene.Discovery.Tabs.ForYou" = "Per a tu"; "Scene.Discovery.Tabs.ForYou" = "Per a tu";
"Scene.Discovery.Tabs.Hashtags" = "Etiquetes"; "Scene.Discovery.Tabs.Hashtags" = "Etiquetes";
"Scene.Discovery.Tabs.News" = "Notícies"; "Scene.Discovery.Tabs.News" = "Notícies";

View File

@ -0,0 +1,391 @@
"Common.Alerts.BlockDomain.BlockEntireDomain" = "هەموو ڕاژەکارەکە ئاستەنگ بکە";
"Common.Alerts.BlockDomain.Title" = "دڵنیایت دەتەوێت تەواوی %@ ئاستەنگ بکەیت؟ لە زۆر بارەکاندا ئاستەنگکردنی بچووک باشترە. ئەگەر وا بکەیت، لەو ڕاژەکارەوە هیچ شتێک نابینیت و هەموو شوێنکەوتووەکانت لەوێوە لادەبرێن.";
"Common.Alerts.CleanCache.Message" = "سەرکەوتووانە بیرگەی %@ پاک کرایەوە.";
"Common.Alerts.CleanCache.Title" = "بیرگە پاک بکەوە";
"Common.Alerts.Common.PleaseTryAgain" = "تکایە دووبارە هەوڵ بدەوە.";
"Common.Alerts.Common.PleaseTryAgainLater" = "تکایە دواتر هەوڵ بدەوە.";
"Common.Alerts.DeletePost.Message" = "دڵنیایت دەتەوێت ئەم پۆستە بسڕیتەوە؟";
"Common.Alerts.DeletePost.Title" = "بیسڕەوە";
"Common.Alerts.DiscardPostContent.Message" = "دڵنیا ببەوە بۆ وازهێنان لە ناوەڕۆکەت.";
"Common.Alerts.DiscardPostContent.Title" = "ڕەشنووس هەڵمەگرە";
"Common.Alerts.EditProfileFailure.Message" = "ناتوانرێت دەستکاریی پرۆفایل بکرێت. تکایە دووبارە هەوڵ بدەوە.";
"Common.Alerts.EditProfileFailure.Title" = "نەتوانرا دەستکاریی پرۆفایل بکرێت";
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "ناتوانیت زیاتر لە یەک ڤیدیۆی پێوە بلکێنیت.";
"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "ناتوانیت ڤیدیۆ بۆ پۆستێک زیاد بکەیت کە وێنەی تێدایە.";
"Common.Alerts.PublishPostFailure.Message" = "نەتوانرا پۆستەکە بکرێت.
تکایە لە بەردەستبوونی هێڵی ئینتەرنێت دڵنیا بە.";
"Common.Alerts.PublishPostFailure.Title" = "نەتوانرا پۆستەکە بکرێت";
"Common.Alerts.SavePhotoFailure.Message" = "تکایە ڕێ بە ماستۆدۆن بدە تاوەکو بتوانێت وێنەکە هەڵبگرێت.";
"Common.Alerts.SavePhotoFailure.Title" = "نەتوانرا وێنەکە هەڵبگیرێت";
"Common.Alerts.ServerError.Title" = "هەڵەی ڕاژەکار";
"Common.Alerts.SignOut.Confirm" = "دەربچۆ";
"Common.Alerts.SignOut.Message" = "دڵنیایت دەتەوێت دەربچیت؟";
"Common.Alerts.SignOut.Title" = "دەربچۆ";
"Common.Alerts.SignUpFailure.Title" = "تۆمارکردنەکە سەرکەوتوو نەبوو";
"Common.Alerts.VoteFailure.PollEnded" = "دەنگدانەکە کۆتایی هاتووە";
"Common.Alerts.VoteFailure.Title" = "نەتوانرا دەنگ بدرێت";
"Common.Controls.Actions.Add" = "زیادی بکە";
"Common.Controls.Actions.Back" = "بگەڕێوە";
"Common.Controls.Actions.BlockDomain" = "%@ ئاستەنگ بکە";
"Common.Controls.Actions.Cancel" = "هەڵوەشاندنەوه";
"Common.Controls.Actions.Compose" = "پۆست بکە";
"Common.Controls.Actions.Confirm" = "پشتڕاستی بکەوە";
"Common.Controls.Actions.Continue" = "بەردەوام بە";
"Common.Controls.Actions.CopyPhoto" = "لەبەری بگرەوە";
"Common.Controls.Actions.Delete" = "بیسڕەوە";
"Common.Controls.Actions.Discard" = "وازی لێ بێنە";
"Common.Controls.Actions.Done" = "تەواو";
"Common.Controls.Actions.Edit" = "دەستکاری";
"Common.Controls.Actions.FindPeople" = "خەڵک بدۆزەوە";
"Common.Controls.Actions.ManuallySearch" = "خۆت بگەڕێ";
"Common.Controls.Actions.Next" = "دواتر";
"Common.Controls.Actions.Ok" = "باشە";
"Common.Controls.Actions.Open" = "بیکەوە";
"Common.Controls.Actions.OpenInBrowser" = "لە وێبگەڕ بیکەوە";
"Common.Controls.Actions.OpenInSafari" = "لە Safari بیکەوە";
"Common.Controls.Actions.Preview" = "پێشبینین";
"Common.Controls.Actions.Previous" = "پێشتر";
"Common.Controls.Actions.Remove" = "لایبە";
"Common.Controls.Actions.Reply" = "وەڵامی بدەوە";
"Common.Controls.Actions.ReportUser" = "سکاڵا لە %@ بکە";
"Common.Controls.Actions.Save" = "هەڵی بگرە";
"Common.Controls.Actions.SavePhoto" = "هەڵی بگرە";
"Common.Controls.Actions.SeeMore" = "زیاتر ببینە";
"Common.Controls.Actions.Settings" = "رێکخستنەکان";
"Common.Controls.Actions.Share" = "هاوبەشی بکە";
"Common.Controls.Actions.SharePost" = "هاوبەشی بکە";
"Common.Controls.Actions.ShareUser" = "%@ هاوبەش بکە";
"Common.Controls.Actions.SignIn" = "بچۆ ژوورەوە";
"Common.Controls.Actions.SignUp" = "خۆت تۆمار بکە";
"Common.Controls.Actions.Skip" = "بیپەڕێنە";
"Common.Controls.Actions.TakePhoto" = "وێنە بگرە";
"Common.Controls.Actions.TryAgain" = "هەوڵ بدەوە";
"Common.Controls.Actions.UnblockDomain" = "%@ ئاستەنگ مەکە";
"Common.Controls.Friendship.Block" = "ئاستەنگی بکە";
"Common.Controls.Friendship.BlockDomain" = "%@ ئاستەنگ بکە";
"Common.Controls.Friendship.BlockUser" = "%@ ئاستەنگ بکە";
"Common.Controls.Friendship.Blocked" = "ئاستەنگ کراوە";
"Common.Controls.Friendship.EditInfo" = "دەستکاری";
"Common.Controls.Friendship.Follow" = "شوێنی بکەوە";
"Common.Controls.Friendship.Following" = "شوێنی دەکەویت";
"Common.Controls.Friendship.Mute" = "بێدەنگی بکە";
"Common.Controls.Friendship.MuteUser" = "%@ بێدەنگە";
"Common.Controls.Friendship.Muted" = "بێدەنگ کراوە";
"Common.Controls.Friendship.Pending" = "داوات کردووە";
"Common.Controls.Friendship.Request" = "داوای لێ بکە";
"Common.Controls.Friendship.Unblock" = "ئاستەنگی مەکە";
"Common.Controls.Friendship.UnblockUser" = "%@ ئاستەنگ مەکە";
"Common.Controls.Friendship.Unmute" = "بێدەنگی مەکە";
"Common.Controls.Friendship.UnmuteUser" = "%@ بێدەنگ مەکە";
"Common.Controls.Keyboard.Common.ComposeNewPost" = "پۆستێکی نوێ بکە";
"Common.Controls.Keyboard.Common.OpenSettings" = "ڕێکخستنەکان بکەوە";
"Common.Controls.Keyboard.Common.ShowFavorites" = "بەدڵبووەکان ببینە";
"Common.Controls.Keyboard.Common.SwitchToTab" = "بڕۆ بۆ %@";
"Common.Controls.Keyboard.SegmentedControl.NextSection" = "دەستنیشانکراوی دواتر";
"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "بەشی پێشتر";
"Common.Controls.Keyboard.Timeline.NextStatus" = "پۆستی دواتر";
"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "پرۆفایلەکەی بکەوە";
"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "پرۆفایلەکەی بکەوە";
"Common.Controls.Keyboard.Timeline.OpenStatus" = "بیکەوە";
"Common.Controls.Keyboard.Timeline.PreviewImage" = "بیبینە";
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "پۆستی پێشتر";
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "وەڵامی بدەوە";
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "ئاگاداریی ناوەڕۆک نیشان بدە";
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "بەدڵبوونی پۆست";
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "پۆستکردنەوەی پۆست";
"Common.Controls.Status.Actions.Favorite" = "بەدڵمە";
"Common.Controls.Status.Actions.Hide" = "بیشارەوە";
"Common.Controls.Status.Actions.Menu" = "پێڕست";
"Common.Controls.Status.Actions.Reblog" = "پۆستی بکەوە";
"Common.Controls.Status.Actions.Reply" = "وەڵامی بدەوە";
"Common.Controls.Status.Actions.ShowGif" = "گیفەکە نیشان بدە";
"Common.Controls.Status.Actions.ShowImage" = "وێنەکە نیشان بدە";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "ڤیدیۆکە لێ بدە";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "دەستی پیا بنێ و بیگرە بۆ نیشاندانی پێڕستەکە";
"Common.Controls.Status.Actions.Unfavorite" = "بەدڵبوونەکە بگەڕێنەوە";
"Common.Controls.Status.Actions.Unreblog" = "پۆستکردنەکە بگەڕێنەوە";
"Common.Controls.Status.ContentWarning" = "ئاگاداریی ناوەڕۆک";
"Common.Controls.Status.MediaContentWarning" = "دەستی پیا بنێ بۆ نیشاندانی";
"Common.Controls.Status.Poll.Closed" = "داخراوە";
"Common.Controls.Status.Poll.Vote" = "دەنگ بدە";
"Common.Controls.Status.SensitiveContent" = "ناوەڕۆکی هەستیار";
"Common.Controls.Status.ShowPost" = "پۆستەکە نیشان بدە";
"Common.Controls.Status.ShowUserProfile" = "پرۆفایلەکەی نیشان بدە";
"Common.Controls.Status.Tag.Email" = "ئیمێڵ";
"Common.Controls.Status.Tag.Emoji" = "ئیمۆجی";
"Common.Controls.Status.Tag.Hashtag" = "هاشتاگ";
"Common.Controls.Status.Tag.Link" = "بەستەر";
"Common.Controls.Status.Tag.Mention" = "ئاماژە";
"Common.Controls.Status.Tag.Url" = "بەستەر";
"Common.Controls.Status.TapToReveal" = "دەستی پیا بنێ بۆ نیشاندانی";
"Common.Controls.Status.UserReblogged" = "%@ پۆست کرایەوە";
"Common.Controls.Status.UserRepliedTo" = "لە وەڵامدا بۆ %@";
"Common.Controls.Status.Visibility.Direct" = "تەنیا بەکارهێنەرە ئاماژە پێکراوەکە دەتوانێت ئەم پۆستە ببینێت.";
"Common.Controls.Status.Visibility.Private" = "تەنیا شوێنکەوتووەکانی دەتوانن ئەم پۆستە ببینن.";
"Common.Controls.Status.Visibility.PrivateFromMe" = "تەنیا شوێنکەوتووەکانم دەتوانن ئەم پۆستە ببینن.";
"Common.Controls.Status.Visibility.Unlisted" = "هەرکەسێک دەتوانێت ئەم پۆستە ببینێت بەڵام ناچێتە بەردەمیان.";
"Common.Controls.Tabs.Home" = "ماڵەوە";
"Common.Controls.Tabs.Notification" = "ئاگادارکردنەوەکان";
"Common.Controls.Tabs.Profile" = "پرۆفایل";
"Common.Controls.Tabs.Search" = "بگەڕێ";
"Common.Controls.Timeline.Filtered" = "پاڵێوراو";
"Common.Controls.Timeline.Header.BlockedWarning" = "ناتوانیت پرۆفایلی ئەم بەکارهێنەرە ببینیت
تا ئەو کاتەی ئاستەنگەکەت لادەبات.";
"Common.Controls.Timeline.Header.BlockingWarning" = "ناتوانیت پرۆفایلی ئەم بەکارهێنەرە ببینیت
هەتا ئاستەنگەکەیان لادەبەیت.
پرۆفایلەکەت ئاوها لایان دەردەکەوێت.";
"Common.Controls.Timeline.Header.NoStatusFound" = "هیچ پۆستێک نەدۆزرایەوە";
"Common.Controls.Timeline.Header.SuspendedWarning" = "ئەم بەکارهێنەرە ڕاگیراوە.";
"Common.Controls.Timeline.Header.UserBlockedWarning" = "ناتوانیت پرۆفایلی %@ ببینیت
تا ئەو کاتەی ئاستەنگەکەت لادەبات.";
"Common.Controls.Timeline.Header.UserBlockingWarning" = "ناتوانیت پرۆفایلی %@ ببینیت
هەتا ئاستەنگەکەیان لادەبەیت.
پرۆفایلەکەت ئاوها لایان دەردەکەوێت.";
"Common.Controls.Timeline.Header.UserSuspendedWarning" = "هەژماری %@ ڕاگیراوە.";
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "پۆستە ماوەکان بار بکە";
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "پۆستە ماوەکان بار دەکرێن...";
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "وەڵامی زیاتر نیشان بدە";
"Common.Controls.Timeline.Timestamp.Now" = "ئێستا";
"Scene.AccountList.AddAccount" = "هەژمارێک زیاد بکە";
"Scene.AccountList.DismissAccountSwitcher" = "پێڕستی هەژمارەکان دابخە";
"Scene.AccountList.TabBarHint" = "هەژماری ئێستا: %@. دوو جا دەستی پیا بنێ بۆ کردنەوەی پێڕستی هەژمارەکان.";
"Scene.Compose.Accessibility.AppendAttachment" = "پێوەکراوی پێوە بکە";
"Scene.Compose.Accessibility.AppendPoll" = "دەنگدان زیاد بکە";
"Scene.Compose.Accessibility.CustomEmojiPicker" = "هەڵبژێری ئیمۆجی";
"Scene.Compose.Accessibility.DisableContentWarning" = "ئاگاداریی ناوەڕۆک ناچالاک بکە";
"Scene.Compose.Accessibility.EnableContentWarning" = "ئاگاداریی ناوەڕۆک چالاک بکە";
"Scene.Compose.Accessibility.PostVisibilityMenu" = "پێڕستی شێوازی دەرکەوتنی پۆست";
"Scene.Compose.Accessibility.RemovePoll" = "دانگدانەکە لابە";
"Scene.Compose.Attachment.AttachmentBroken" = "ئەم %@ـە تێک چووە و ناتوانیت بەرزی بکەیتەوە.";
"Scene.Compose.Attachment.DescriptionPhoto" = "وێنەکەت بۆ نابیناکان باس بکە...";
"Scene.Compose.Attachment.DescriptionVideo" = "ڤیدیۆکەت بۆ نابیناکان باس بکە...";
"Scene.Compose.Attachment.Photo" = "وێنە";
"Scene.Compose.Attachment.Video" = "ڤیدیۆ";
"Scene.Compose.AutoComplete.SpaceToAdd" = "بۆشایی دابنێ بۆ زیادکردن";
"Scene.Compose.ComposeAction" = "بڵاوی بکەوە";
"Scene.Compose.ContentInputPlaceholder" = "دەتەوێت چی پۆست بکەیت؟";
"Scene.Compose.ContentWarning.Placeholder" = "ئاگادارییەکەت لێرە بنووسە...";
"Scene.Compose.Keyboard.AppendAttachmentEntry" = "پێوەکراوی پێوە بکە - %@";
"Scene.Compose.Keyboard.DiscardPost" = "پۆستەکە هەڵوەشێنەوە";
"Scene.Compose.Keyboard.PublishPost" = "پۆستە بڵاو بکەوە";
"Scene.Compose.Keyboard.SelectVisibilityEntry" = "شێوازی دەرکەوتن هەڵبژێرە - %@";
"Scene.Compose.Keyboard.ToggleContentWarning" = "ئاگاداریی ناوەڕۆک نیشان بدە";
"Scene.Compose.Keyboard.TogglePoll" = "دەنگدانەکە نیشان بدە";
"Scene.Compose.MediaSelection.Browse" = "بگەڕێ";
"Scene.Compose.MediaSelection.Camera" = "وێنە بگرە";
"Scene.Compose.MediaSelection.PhotoLibrary" = "وێنەکان";
"Scene.Compose.Poll.DurationTime" = "کات: %@";
"Scene.Compose.Poll.OneDay" = "1 ڕۆژ";
"Scene.Compose.Poll.OneHour" = "1 کاتژمێر";
"Scene.Compose.Poll.OptionNumber" = "بژاردەی %ld";
"Scene.Compose.Poll.SevenDays" = "7 ڕۆژ";
"Scene.Compose.Poll.SixHours" = "6 کاتژمێر";
"Scene.Compose.Poll.ThirtyMinutes" = "30 خولەک";
"Scene.Compose.Poll.ThreeDays" = "3 ڕۆژ";
"Scene.Compose.ReplyingToUser" = "لە وەڵامدا بۆ %@";
"Scene.Compose.Title.NewPost" = "پۆستی نوێ";
"Scene.Compose.Title.NewReply" = "وەڵامی نوێ";
"Scene.Compose.Visibility.Direct" = "ئەوانەی ئاماژەیان پێ دەکەم";
"Scene.Compose.Visibility.Private" = "تەنیا شوێنکەوتووان";
"Scene.Compose.Visibility.Public" = "گشتی";
"Scene.Compose.Visibility.Unlisted" = "پێشنیارنەکراو";
"Scene.ConfirmEmail.Button.OpenEmailApp" = "بەرنامەی ئیمێڵەکەت بکەوە";
"Scene.ConfirmEmail.Button.Resend" = "بینێرەوە";
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "دڵنیا بە لەوەی ئیمێڵەکەت دروستە و هەموو بوخچەکانت بگەڕێ.";
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "ئیمێڵەکە بنێرەوە";
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "ئیمێڵەکەت ببینە";
"Scene.ConfirmEmail.OpenEmailApp.Description" = "ئیمێڵێکمان بۆ ناردیت. هەموو بوخچەکانت ببینە.";
"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail";
"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "بەرنامەی ئیمێڵەکەت بکەوە";
"Scene.ConfirmEmail.OpenEmailApp.Title" = "ئیمێڵەکانت ببینە.";
"Scene.ConfirmEmail.Subtitle" = "بۆ پشتڕاستکردنەوەی هەژمارەکەت ئەو بەستەرە بکەوە کە بە ئیمێڵ بۆمان ناردوویت.";
"Scene.ConfirmEmail.Title" = "کۆتا شت.";
"Scene.Discovery.Intro" = "پۆست هەیە سەرنجیان لەسەرە لە گۆشەکەی تۆ.";
"Scene.Discovery.Tabs.Community" = "Community";
"Scene.Discovery.Tabs.ForYou" = "بۆ تۆ";
"Scene.Discovery.Tabs.Hashtags" = "هاشتاگەکان";
"Scene.Discovery.Tabs.News" = "هەواڵەکان";
"Scene.Discovery.Tabs.Posts" = "پۆستەکان";
"Scene.Favorite.Title" = "بەدڵبووەکانت";
"Scene.Follower.Footer" = "شوێنکەوتووەکانی لە ڕاژەکارەکانی ترەوە نیشان نادرێت.";
"Scene.Following.Footer" = "شوێنکەوتنەکانی بۆ هەژماری ڕاژەکارەکانی تر نیشان نادرێت.";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "پۆستە نوێکان ببینە";
"Scene.HomeTimeline.NavigationBarState.Offline" = "دەرهێڵ";
"Scene.HomeTimeline.NavigationBarState.Published" = "بڵاوکرایەوە!";
"Scene.HomeTimeline.NavigationBarState.Publishing" = "پۆستەکە بڵاو دەکرێتەوە...";
"Scene.HomeTimeline.Title" = "ماڵەوە";
"Scene.Notification.Keyobard.ShowEverything" = "هەموو شتێک نیشان بدە";
"Scene.Notification.Keyobard.ShowMentions" = "ئاماژەکان نیشان بدە";
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "پۆستەکەتی بەدڵ بوو";
"Scene.Notification.NotificationDescription.FollowedYou" = "شوێنت کەوت";
"Scene.Notification.NotificationDescription.MentionedYou" = "ئاماژەی پێت کرد";
"Scene.Notification.NotificationDescription.PollHasEnded" = "دەنگدانەکە کۆتایی هات";
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "پۆستەکەتی پۆست کردەوە";
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "داواکاری بۆ شوێنکەوتنت";
"Scene.Notification.Title.Everything" = "هەمووی";
"Scene.Notification.Title.Mentions" = "ئاماژەکان";
"Scene.Preview.Keyboard.ClosePreview" = "پێشبینینەکە دابخە";
"Scene.Preview.Keyboard.ShowNext" = "هی دواتر نیشان بدە";
"Scene.Preview.Keyboard.ShowPrevious" = "هی پێشتر نیشان بدە";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "دوو جار دەستی پیا بنێ بۆ کردنەوەی لیستەکە";
"Scene.Profile.Accessibility.EditAvatarImage" = "دەستکاریی وێنەکە بکە";
"Scene.Profile.Accessibility.ShowAvatarImage" = "وێنەکە نیشان بدە";
"Scene.Profile.Accessibility.ShowBannerImage" = "وێنەکەی پشتەوە نیشان بدە";
"Scene.Profile.Dashboard.Followers" = "شوێنکەوتوو";
"Scene.Profile.Dashboard.Following" = "شوێنکەوتن";
"Scene.Profile.Dashboard.Posts" = "پۆستەکان";
"Scene.Profile.Fields.AddRow" = "ڕیز زیاد بکە";
"Scene.Profile.Fields.Placeholder.Content" = "ناوەڕۆک";
"Scene.Profile.Fields.Placeholder.Label" = "ناونیشان";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "دڵنیا ببەوە بۆ ئاستەنگکردنی %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "ئاستەنگی بکە";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "دڵیا ببەوە بۆ بێدەنگکردنی %@";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "بێدەنگی بکە";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "دڵنیا ببەوە بۆ لابردنی ئاستەنگی %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "ئاستەنگی مەکە";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "دڵنیا ببەوە بۆ بێدەنگنەکردنی %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "بێدەنگی مەکە";
"Scene.Profile.SegmentedControl.About" = "دەربارە";
"Scene.Profile.SegmentedControl.Media" = "میدیا";
"Scene.Profile.SegmentedControl.Posts" = "پۆستەکان";
"Scene.Profile.SegmentedControl.PostsAndReplies" = "پۆست و وەڵامەکان";
"Scene.Profile.SegmentedControl.Replies" = "وەڵامەکان";
"Scene.Register.Error.Item.Agreement" = "ڕێککەوتن";
"Scene.Register.Error.Item.Email" = "ئیمێڵ";
"Scene.Register.Error.Item.Locale" = "زمان";
"Scene.Register.Error.Item.Password" = "تێپەڕوشە";
"Scene.Register.Error.Item.Reason" = "هۆکار";
"Scene.Register.Error.Item.Username" = "ناوی بەکارهێنەر";
"Scene.Register.Error.Reason.Accepted" = "%@ دەبێت قبووڵ بکرێت";
"Scene.Register.Error.Reason.Blank" = "%@ پێویستە";
"Scene.Register.Error.Reason.Blocked" = "%@ خزمەتگوزارییەکی ئیمێڵی ڕێپێنەدراو بەکار دەهێنێت";
"Scene.Register.Error.Reason.Inclusion" = "%@ پشتگیرینەکراوە";
"Scene.Register.Error.Reason.Invalid" = "%@ نادروستە";
"Scene.Register.Error.Reason.Reserved" = "%@ وشەیەکی گیراوە";
"Scene.Register.Error.Reason.Taken" = "%@ بەکار هێنراوە لەلایەن یەکێکی تر";
"Scene.Register.Error.Reason.TooLong" = "%@ زۆر درێژە";
"Scene.Register.Error.Reason.TooShort" = "%@ زۆر کورتە";
"Scene.Register.Error.Reason.Unreachable" = "%@ بوونی نییە";
"Scene.Register.Error.Special.EmailInvalid" = "ئەم ئیمێڵە دروست نییە";
"Scene.Register.Error.Special.PasswordTooShort" = "تێپەڕوشەکە زۆر کورتە (نابێت لە 8 نووسە کەمتر بێت)";
"Scene.Register.Error.Special.UsernameInvalid" = "ناوی بەکارهێنەر دەبێت تەنیا پیت، ژمارە و هێڵی ژێرەوەی تێدا بێت";
"Scene.Register.Error.Special.UsernameTooLong" = "ناوی بەکارهێنەرەکە زۆر درێژە (ناکرێت لە 30 نووسە زیاتر بێت)";
"Scene.Register.Input.Avatar.Delete" = "بیسڕەوە";
"Scene.Register.Input.DisplayName.Placeholder" = "ناوی نیشاندان";
"Scene.Register.Input.Email.Placeholder" = "ئیمێڵ";
"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "بۆچی دەتەوێت بەشدار بیت؟";
"Scene.Register.Input.Password.Accessibility.Checked" = "هەڵبژێردراو";
"Scene.Register.Input.Password.Accessibility.Unchecked" = "هەڵنەبژێردراو";
"Scene.Register.Input.Password.CharacterLimit" = "8 پیت";
"Scene.Register.Input.Password.Hint" = "دەبێت تێپەڕوشەکەت لایەنی کەم هەشت نووسە بێت";
"Scene.Register.Input.Password.Placeholder" = "تێپەڕوشە";
"Scene.Register.Input.Password.Require" = "تێپەڕوشەکەت لایەنی کەم پێویستیی هەیە بە:";
"Scene.Register.Input.Username.DuplicatePrompt" = "ئەم ناوە گیراوە.";
"Scene.Register.Input.Username.Placeholder" = "ناوی بەکارهێنەر";
"Scene.Register.Title" = "خۆت تۆمار بکە لە %@";
"Scene.Report.Content1" = "پۆستی تر هەیە بتەوێت سکاڵایان لێ بکەیت؟";
"Scene.Report.Content2" = "هیچ شتێکی هەیە بە چاودێرەکان بیزانن دەربارەی ئەم سکاڵایە؟";
"Scene.Report.ReportSentTitle" = "سپاس بۆ سکاڵاکات، پێیدا دەچینەوە.";
"Scene.Report.Reported" = "سکاڵای لێ کرا";
"Scene.Report.Send" = "سکاڵاکە بنێرە";
"Scene.Report.SkipToSend" = "بەبێ لێدوان بینێرە";
"Scene.Report.Step1" = "هەنگاوی 1 لە 2";
"Scene.Report.Step2" = "هەنگاوی 2 لە 2";
"Scene.Report.TextPlaceholder" = "ڕوونکردنەوەی زۆرتر بدە";
"Scene.Report.Title" = "سکاڵا لە %@ بکە";
"Scene.Report.TitleReport" = "سکاڵای لێ بکە";
"Scene.Search.Recommend.Accounts.Description" = "لەوانەیە بتەوێت شوێنی ئەم هەژمارانە بکەویت";
"Scene.Search.Recommend.Accounts.Follow" = "شوێنی بکەوە";
"Scene.Search.Recommend.Accounts.Title" = "لەوانەیە حەزت لەمانە بێت";
"Scene.Search.Recommend.ButtonText" = "هەمووی ببینە";
"Scene.Search.Recommend.HashTag.Description" = "ئەو هاشتاگانەی سەرنجی زۆریان لەسەرە";
"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ کەس باسی دەکەن";
"Scene.Search.Recommend.HashTag.Title" = "ڕۆژەڤ";
"Scene.Search.SearchBar.Cancel" = "بگەڕێوە";
"Scene.Search.SearchBar.Placeholder" = "بۆ هاشتاگ و بەکارهێنەر بگەڕێ";
"Scene.Search.Searching.Clear" = "بیانسڕەوە";
"Scene.Search.Searching.EmptyState.NoResults" = "هیچ ئەنجامێک نەدۆزرایەوە";
"Scene.Search.Searching.RecentSearch" = "گەڕانەکانی پێشترت";
"Scene.Search.Searching.Segment.All" = "هەمووی";
"Scene.Search.Searching.Segment.Hashtags" = "هاشتاگ";
"Scene.Search.Searching.Segment.People" = "خەڵک";
"Scene.Search.Searching.Segment.Posts" = "پۆست";
"Scene.Search.Title" = "بگەڕێ";
"Scene.ServerPicker.Button.Category.Academia" = "ئەکادیمیا";
"Scene.ServerPicker.Button.Category.Activism" = "چالاکی";
"Scene.ServerPicker.Button.Category.All" = "هەموو";
"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "بەش: هەموو";
"Scene.ServerPicker.Button.Category.Art" = "هونەر";
"Scene.ServerPicker.Button.Category.Food" = "خواردن";
"Scene.ServerPicker.Button.Category.Furry" = "furry";
"Scene.ServerPicker.Button.Category.Games" = "یاری";
"Scene.ServerPicker.Button.Category.General" = "گشتی";
"Scene.ServerPicker.Button.Category.Journalism" = "ڕۆژنامەوانی";
"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt";
"Scene.ServerPicker.Button.Category.Music" = "موزیک";
"Scene.ServerPicker.Button.Category.Regional" = "هەرێمی";
"Scene.ServerPicker.Button.Category.Tech" = "تەکنۆلۆژیا";
"Scene.ServerPicker.Button.SeeLess" = "کەمتر ببینە";
"Scene.ServerPicker.Button.SeeMore" = "زیاتر ببینە";
"Scene.ServerPicker.EmptyState.BadNetwork" = "هەڵەیەک ڕوویدا لە کاتی بارکردن. لە هەبوونی هێڵی ئینتەرنێت دڵنیا بە.";
"Scene.ServerPicker.EmptyState.FindingServers" = "ڕاژەکار دەدۆزرێتەوە...";
"Scene.ServerPicker.EmptyState.NoResults" = "ئەنجام نییە";
"Scene.ServerPicker.Input.Placeholder" = "بگەڕێ";
"Scene.ServerPicker.Label.Category" = "بەش";
"Scene.ServerPicker.Label.Language" = "زمان";
"Scene.ServerPicker.Label.Users" = "بەکارهێنەر";
"Scene.ServerPicker.Subtitle" = "ڕاژەکارێکێکی گشتی یان دانەیەک لەسەر بنەمای حەزەکانت و هەرێمەکەت هەڵبژێرە.";
"Scene.ServerPicker.SubtitleExtend" = "ڕاژەکارێکێکی گشتی یان دانەیەک لەسەر بنەمای حەزەکانت و هەرێمەکەت هەڵبژێرە. هەر ڕاژەکارێک لەلایەن ڕێکخراوێک یان تاکەکەسێک بەڕێوە دەبرێت.";
"Scene.ServerPicker.Title" = "ماستۆدۆن لە چەندان بەکارهێنەر پێک دێت کە لە ڕاژەکاری جیاواز دان.";
"Scene.ServerRules.Button.Confirm" = "ڕازیم";
"Scene.ServerRules.PrivacyPolicy" = "سیاسەتی تایبەتێتی";
"Scene.ServerRules.Prompt" = "بەردەوامبوونت واتای ڕازیبوونتە بە مەرجەکانی خزمەتگوزاری و سیاسەتی تایبەتێتیی %@.";
"Scene.ServerRules.Subtitle" = "ئەمانە لەلایەن چاودێرەکانی %@ دانراون و ناچار دەکرێن.";
"Scene.ServerRules.TermsOfService" = "مەرجەکانی بەکارهێنان";
"Scene.ServerRules.Title" = "یاساکانی ڕاژەکار";
"Scene.Settings.Footer.MastodonDescription" = "ماستۆدۆن پڕۆژەیەکی سەرچاوەکراوەیە. دەتوانیت لە گیتهەب لە کێشەکان ئاگادارمان بکەیتەوە: %@ (%@)";
"Scene.Settings.Keyboard.CloseSettingsWindow" = "ڕێخستنەکان دابخە";
"Scene.Settings.Section.Appearance.Automatic" = "خۆکار";
"Scene.Settings.Section.Appearance.Dark" = "تاریک";
"Scene.Settings.Section.Appearance.Light" = "ڕووناک";
"Scene.Settings.Section.Appearance.Title" = "ڕووخسار";
"Scene.Settings.Section.BoringZone.AccountSettings" = "ڕێکخستنەکانی هەژمار";
"Scene.Settings.Section.BoringZone.Privacy" = "سیاسەتی تایبەتێتی";
"Scene.Settings.Section.BoringZone.Terms" = "مەرجەکانی بەکارهێنان";
"Scene.Settings.Section.BoringZone.Title" = "ناوچە بێنازەکە";
"Scene.Settings.Section.LookAndFeel.Light" = "ڕووناک";
"Scene.Settings.Section.LookAndFeel.ReallyDark" = "زۆر تاریک";
"Scene.Settings.Section.LookAndFeel.SortaDark" = "کەم تاریک";
"Scene.Settings.Section.LookAndFeel.Title" = "ڕووخسار و هەست";
"Scene.Settings.Section.LookAndFeel.UseSystem" = "سیستەم";
"Scene.Settings.Section.Notifications.Boosts" = "پۆستەکەم پۆست دەکاتەوە";
"Scene.Settings.Section.Notifications.Favorites" = "پۆستەکەمی بەدڵ دەبێت";
"Scene.Settings.Section.Notifications.Follows" = "شوێنم دەکەوێت";
"Scene.Settings.Section.Notifications.Mentions" = "ئاماژەم پێ دەکات";
"Scene.Settings.Section.Notifications.Title" = "ئاماژەکان نیشان بدە";
"Scene.Settings.Section.Notifications.Trigger.Anyone" = "هەرکەسێک";
"Scene.Settings.Section.Notifications.Trigger.Follow" = "هەرکەسێک شوێنی دەکەوم";
"Scene.Settings.Section.Notifications.Trigger.Follower" = "شوێنکەوتووێکم";
"Scene.Settings.Section.Notifications.Trigger.Noone" = "هیچکەس";
"Scene.Settings.Section.Notifications.Trigger.Title" = "ئاگادارم بکەوە کاتێک";
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "وێنە جووڵاوەکان ناچالاک بکە";
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "ئیمۆجییە جووڵاوەکان ناچالاک بکە";
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "بەستەرەکان لەناو ماستۆدۆن بکەوە";
"Scene.Settings.Section.Preference.Title" = "پەسەندەکان";
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "دۆخی ڕەش";
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "وێبگەڕی بنەڕەت بەکار بهێنە بۆ کردنەوەی بەستەرەکان";
"Scene.Settings.Section.SpicyZone.Clear" = "بیرگە پاک بکەوە";
"Scene.Settings.Section.SpicyZone.Signout" = "دەربچۆ";
"Scene.Settings.Section.SpicyZone.Title" = "ناوچەی گەرم";
"Scene.Settings.Title" = "رێکخستنەکان";
"Scene.SuggestionAccount.FollowExplain" = "کاتێک شوێنی یەکێک دەکەویت، پۆستەکانی دێتە بەردەمت.";
"Scene.SuggestionAccount.Title" = "خەڵک بدۆزەوە";
"Scene.Thread.BackTitle" = "پۆستەکە";
"Scene.Thread.Title" = "پۆستی %@";
"Scene.Welcome.GetStarted" = "دەست پێ بکە";
"Scene.Welcome.LogIn" = "بچۆ ژوورەوە";
"Scene.Welcome.Slogan" = "تۆڕی کۆمەڵایەتی
لەژێر دەستەکانت.";
"Scene.Wizard.AccessibilityHint" = "دوو جار دەستی پیا بنێ بۆ داخستنی";
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "هەژمارەکەت بگۆڕە بە دەستڕاگرتن لەسەر دوگمەی پرۆفایلەکە.";
"Scene.Wizard.NewInMastodon" = "نوێ";

View File

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>a11y.plural.count.unread.notification</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@notification_count_unread_notification@</string>
<key>notification_count_unread_notification</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ئاگاداریی نەبینراو</string>
<key>other</key>
<string>%ld ئاگاداریی نەبینراو</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_exceeds</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>سنووری نووسین %#@character_count@ دەرباز دەکات</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld نووسە</string>
<key>other</key>
<string>%ld نووسە</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_remains</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>سنووری نووسین %#@character_count@ دەمێنێتەوە</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld نووسە</string>
<key>other</key>
<string>%ld نووسە</string>
</dict>
</dict>
<key>plural.count.metric_formatted.post</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%@%#@post_count@</string>
<key>post_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>پۆست</string>
<key>other</key>
<string>پۆست</string>
</dict>
</dict>
<key>plural.count.post</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@post_count@</string>
<key>post_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld پۆست</string>
<key>other</key>
<string>%ld پۆست</string>
</dict>
</dict>
<key>plural.count.favorite</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@favorite_count@</string>
<key>favorite_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld بەدڵبوو</string>
<key>other</key>
<string>%ld بەدڵبوو</string>
</dict>
</dict>
<key>plural.count.reblog</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@reblog_count@</string>
<key>reblog_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld پۆستکردنەوە</string>
<key>other</key>
<string>%ld پۆستکردنەوە</string>
</dict>
</dict>
<key>plural.count.reply</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@reply_count@</string>
<key>reply_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld وەڵام</string>
<key>other</key>
<string>%ld وەڵام</string>
</dict>
</dict>
<key>plural.count.vote</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@vote_count@</string>
<key>vote_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld دەنگ</string>
<key>other</key>
<string>%ld دەنگ</string>
</dict>
</dict>
<key>plural.count.voter</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@voter_count@</string>
<key>voter_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld دەنگدەر</string>
<key>other</key>
<string>%ld دەنگدەر</string>
</dict>
</dict>
<key>plural.people_talking</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_people_talking@</string>
<key>count_people_talking</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld کەس باسی دەکات</string>
<key>other</key>
<string>%ld کەس باسی دەکەن</string>
</dict>
</dict>
<key>plural.count.following</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_following@</string>
<key>count_following</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld شوێنکەوتن</string>
<key>other</key>
<string>%ld شوێنکەوتن</string>
</dict>
</dict>
<key>plural.count.follower</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_follower@</string>
<key>count_follower</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld شوێنکەوتوو</string>
<key>other</key>
<string>%ld شوێنکەوتوو</string>
</dict>
</dict>
<key>date.year.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_year_left@</string>
<key>count_year_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ساڵی ماوە</string>
<key>other</key>
<string>%ld ساڵی ماوە</string>
</dict>
</dict>
<key>date.month.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_month_left@</string>
<key>count_month_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld مانگی ماوە</string>
<key>other</key>
<string>%ld مانگی ماوە</string>
</dict>
</dict>
<key>date.day.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_day_left@</string>
<key>count_day_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ڕۆژی ماوە</string>
<key>other</key>
<string>%ld ڕۆژی ماوە</string>
</dict>
</dict>
<key>date.hour.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_hour_left@</string>
<key>count_hour_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld کاتژمێری ماوە</string>
<key>other</key>
<string>%ld کاتژمێری ماوە</string>
</dict>
</dict>
<key>date.minute.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_minute_left@</string>
<key>count_minute_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld خولەکی ماوە</string>
<key>other</key>
<string>%ld خولەکی ماوە</string>
</dict>
</dict>
<key>date.second.left</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_second_left@</string>
<key>count_second_left</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld چرکەی ماوە</string>
<key>other</key>
<string>%ld چرکەی ماوە</string>
</dict>
</dict>
<key>date.year.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_year_ago_abbr@</string>
<key>count_year_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ساڵ لەمەوبەر</string>
<key>other</key>
<string>%ld ساڵ لەمەوبەر</string>
</dict>
</dict>
<key>date.month.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_month_ago_abbr@</string>
<key>count_month_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld مانگ لەمەوبەر</string>
<key>other</key>
<string>%ld مانگ لەمەوبەر</string>
</dict>
</dict>
<key>date.day.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_day_ago_abbr@</string>
<key>count_day_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld ڕۆژ لەمەوبەر</string>
<key>other</key>
<string>%ld ڕۆژ لەمەوبەر</string>
</dict>
</dict>
<key>date.hour.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_hour_ago_abbr@</string>
<key>count_hour_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld کاتژمێر لەمەوبەر</string>
<key>other</key>
<string>%ld کاتژمێر لەمەوبەر</string>
</dict>
</dict>
<key>date.minute.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_minute_ago_abbr@</string>
<key>count_minute_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld خولەک لەمەوبەر</string>
<key>other</key>
<string>%ld خولەک لەمەوبەر</string>
</dict>
</dict>
<key>date.second.ago.abbr</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@count_second_ago_abbr@</string>
<key>count_second_ago_abbr</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld چرکە لەمەوبەر</string>
<key>other</key>
<string>%ld چرکە لەمەوبەر</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -203,6 +203,7 @@ kann nicht auf Mastodon hochgeladen werden.";
tippe darin auf den Link, um Dein Konto zu bestätigen."; tippe darin auf den Link, um Dein Konto zu bestätigen.";
"Scene.ConfirmEmail.Title" = "Noch eine letzte Sache."; "Scene.ConfirmEmail.Title" = "Noch eine letzte Sache.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; "Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.Community" = "Community";
"Scene.Discovery.Tabs.ForYou" = "Für dich"; "Scene.Discovery.Tabs.ForYou" = "Für dich";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "Nachrichten"; "Scene.Discovery.Tabs.News" = "Nachrichten";

View File

@ -202,6 +202,7 @@ uploaded to Mastodon.";
"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account."; "Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account.";
"Scene.ConfirmEmail.Title" = "One last thing."; "Scene.ConfirmEmail.Title" = "One last thing.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon."; "Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.Community" = "Community";
"Scene.Discovery.Tabs.ForYou" = "For You"; "Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags"; "Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News"; "Scene.Discovery.Tabs.News" = "News";
@ -330,13 +331,13 @@ uploaded to Mastodon.";
"Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection."; "Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection.";
"Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers..."; "Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers...";
"Scene.ServerPicker.EmptyState.NoResults" = "No results"; "Scene.ServerPicker.EmptyState.NoResults" = "No results";
"Scene.ServerPicker.Input.Placeholder" = "Search communities"; "Scene.ServerPicker.Input.Placeholder" = "Search servers";
"Scene.ServerPicker.Label.Category" = "CATEGORY"; "Scene.ServerPicker.Label.Category" = "CATEGORY";
"Scene.ServerPicker.Label.Language" = "LANGUAGE"; "Scene.ServerPicker.Label.Language" = "LANGUAGE";
"Scene.ServerPicker.Label.Users" = "USERS"; "Scene.ServerPicker.Label.Users" = "USERS";
"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; "Scene.ServerPicker.Subtitle" = "Pick a server based on your interests, region, or a general purpose one.";
"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; "Scene.ServerPicker.SubtitleExtend" = "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.";
"Scene.ServerPicker.Title" = "Mastodon is made of users in different communities."; "Scene.ServerPicker.Title" = "Mastodon is made of users in different servers.";
"Scene.ServerRules.Button.Confirm" = "I Agree"; "Scene.ServerRules.Button.Confirm" = "I Agree";
"Scene.ServerRules.PrivacyPolicy" = "privacy policy"; "Scene.ServerRules.PrivacyPolicy" = "privacy policy";
"Scene.ServerRules.Prompt" = "By continuing, youre subject to the terms of service and privacy policy for %@."; "Scene.ServerRules.Prompt" = "By continuing, youre subject to the terms of service and privacy policy for %@.";

View File

@ -203,6 +203,7 @@ y no se puede subir a Mastodon.";
pulsá en el enlace para confirmar tu cuenta."; pulsá en el enlace para confirmar tu cuenta.";
"Scene.ConfirmEmail.Title" = "Una última cosa."; "Scene.ConfirmEmail.Title" = "Una última cosa.";
"Scene.Discovery.Intro" = "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon."; "Scene.Discovery.Intro" = "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon.";
"Scene.Discovery.Tabs.Community" = "Community";
"Scene.Discovery.Tabs.ForYou" = "Para vos"; "Scene.Discovery.Tabs.ForYou" = "Para vos";
"Scene.Discovery.Tabs.Hashtags" = "Etiquetas"; "Scene.Discovery.Tabs.Hashtags" = "Etiquetas";
"Scene.Discovery.Tabs.News" = "Novedades"; "Scene.Discovery.Tabs.News" = "Novedades";

Some files were not shown because too many files have changed in this diff Show More