Merge branch 'main' into develop

This commit is contained in:
CMK 2022-04-29 08:53:12 +08:00
commit 81276aeca9
93 changed files with 3919 additions and 1104 deletions

View File

@ -15,8 +15,8 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.3.1</string>
<string>1.3.3</string>
<key>CFBundleVersion</key>
<string>113</string>
<string>117</string>
</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" = "Posta på Mastodon";
"751xkl" = "Text Content";
"751xkl" = "Textinnehåll";
"CsR7G2" = "Post on Mastodon";
"CsR7G2" = "Posta på Mastodon";
"HZSGTr" = "What content to post?";
"HZSGTr" = "Vilket innehåll ska jag posta?";
"HdGikU" = "Posting failed";
"HdGikU" = "Inlägget misslyckades";
"KDNTJ4" = "Failure Reason";
"KDNTJ4" = "Felorsak";
"RHxKOw" = "Send Post with text content";
"RHxKOw" = "Skicka inlägg med textinnehåll";
"RxSqsb" = "Post";
"RxSqsb" = "Posta";
"WCIR3D" = "Posta ${content} på Mastodon";
"ZKJSNu" = "Post";
"ZKJSNu" = "Posta";
"ZS1XaK" = "${content}";
"ZbSjzC" = "Visibility";
"ZbSjzC" = "Synlighet";
"Zo4jgJ" = "Post Visibility";
"Zo4jgJ" = "Inläggssynlighet";
"apSxMG-dYQ5NN" = "There are ${count} options matching Public.";
"apSxMG-dYQ5NN" = "Det finns ${count} alternativ som matchar Publikt.";
"apSxMG-ehFLjY" = "There are ${count} options matching Followers Only.";
"apSxMG-ehFLjY" = "Det finns ${count} alternativ som matchar Endast följare.";
"ayoYEb-dYQ5NN" = "${content}, Public";
"ayoYEb-dYQ5NN" = "${content}, Publikt";
"ayoYEb-ehFLjY" = "${content}, Followers Only";
"ayoYEb-ehFLjY" = "${content}, Endast följare";
"dUyuGg" = "Post on Mastodon";
"dUyuGg" = "Posta på Mastodon";
"dYQ5NN" = "Publikt";
"ehFLjY" = "Endast följare";
"gfePDu" = "Posting failed. ${failureReason}";
"gfePDu" = "Inlägget misslyckades. ${failureReason}";
"k7dbKQ" = "Post was sent successfully.";
"k7dbKQ" = "Inlägget har postats.";
"oGiqmY-dYQ5NN" = "Just to confirm, you wanted Public?";
"oGiqmY-dYQ5NN" = "Bara för att bekräfta, ville du ha 'Publikt'?";
"oGiqmY-ehFLjY" = "Just to confirm, you wanted Followers Only?";
"oGiqmY-ehFLjY" = "Bara för att bekräfta, ville du ha 'Endast följare'?";
"rM6dvp" = "URL";
"ryJLwG" = "Post was sent successfully. ";
"ryJLwG" = "Inlägget har postats. ";

View File

@ -5,7 +5,7 @@
<key>There are ${count} options matching ${content}. - 2</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${content}.</string>
<string>Det finns %#@count_option@ alternativ som matchar ${content}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
@ -13,15 +13,15 @@
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>1 option</string>
<string>%ld alternativ</string>
<key>other</key>
<string>%ld options</string>
<string>%ld alternativ</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>There are %#@count_option@ matching ${visibility}.</string>
<string>Det finns %#@count_option@ alternativ som matchar ${visibility}.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
@ -29,9 +29,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>1 option</string>
<string>%ld alternativ</string>
<key>other</key>
<string>%ld options</string>
<string>%ld alternativ</string>
</dict>
</dict>
</dict>

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,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>${content} ile eşleşen %#@count_option@ var.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>1 seçenek</string>
<key>other</key>
<string>%ld seçenek</string>
</dict>
</dict>
<key>There are ${count} options matching ${visibility}.</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>${visibility} ile eşleşen %#@count_option@ var.</string>
<key>count_option</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>%ld</string>
<key>one</key>
<string>1 seçenek</string>
<key>other</key>
<string>%ld seçenek</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -62,6 +62,7 @@ private func map(language: String) -> String? {
case "gd_GB": return "gd-GB" // Scottish Gaelic
case "es_ES": return "es" // Spanish
case "es_AR": return "es-419" // Spanish, Argentina
case "sv-SE": return "sv" // Swedish
case "sv_FI": return "sv_FI" // Swedish, Finland
case "th_TH": return "th" // Thai
case "vi_VN": return "vi" // Vietnamese

View File

@ -129,6 +129,7 @@
"show_post": "أظْهِر مَنشور",
"show_user_profile": "أظْهِر المِلَفَّ التَّعريفِيَّ لِلمُستَخدِم",
"content_warning": "تحذير المُحتوى",
"sensitive_content": "مُحتَوى حَسَّاس",
"media_content_warning": "اُنقُر لِلكَشف",
"tap_to_reveal": "اُنقُر لِلكَشف",
"poll": {
@ -497,8 +498,9 @@
"posts": "المنشورات",
"hashtags": "الوسوم",
"news": "الأخبار",
"for_you": "For You"
}
"for_you": "لَك"
},
"intro": "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون."
},
"favorite": {
"title": "مُفضَّلَتُك"

View File

@ -129,6 +129,7 @@
"show_post": "Mostra la Publicació",
"show_user_profile": "Mostra el perfil de l'usuari",
"content_warning": "Advertència de Contingut",
"sensitive_content": "Contingut sensible",
"media_content_warning": "Toca qualsevol lloc per a mostrar",
"tap_to_reveal": "Toca per a mostrar",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Etiquetes",
"news": "Notícies",
"for_you": "Per a tu"
}
},
"intro": "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon."
},
"favorite": {
"title": "Els teus Favorits"

View File

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -129,6 +129,7 @@
"show_post": "Beitrag anzeigen",
"show_user_profile": "Benutzerprofil anzeigen",
"content_warning": "Inhaltswarnung",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tippe irgendwo zum Anzeigen",
"tap_to_reveal": "Zum Anzeigen tippen",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "Nachrichten",
"for_you": "Für dich"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Deine Favoriten"

View File

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -113,9 +113,9 @@
"open_author_profile": "Abrir perfil del autor",
"open_reblogger_profile": "Abrir perfil del adherente",
"reply_status": "Responder al mensaje",
"toggle_reblog": "Cambiar la adhesión en el mensaje",
"toggle_favorite": "Cambiar la marca de favorito en el mensaje",
"toggle_content_warning": "Cambiar la advertencia de contenido",
"toggle_reblog": "Cambiar adhesión al mensaje",
"toggle_favorite": "Cambiar marca de favorito del mensaje",
"toggle_content_warning": "Cambiar modo de advertencia de contenido",
"preview_image": "Previsualizar imagen"
},
"segmented_control": {
@ -129,7 +129,8 @@
"show_post": "Mostrar mensaje",
"show_user_profile": "Mostrar perfil de usuario",
"content_warning": "Advertencia de contenido",
"media_content_warning": "Toca en cualquier lugar para mostrar",
"sensitive_content": "Contenido sensible",
"media_content_warning": "Tocá en cualquier parte para mostrar",
"tap_to_reveal": "Tocá para mostrar",
"poll": {
"vote": "Votar",
@ -498,7 +499,8 @@
"hashtags": "Etiquetas",
"news": "Novedades",
"for_you": "Para vos"
}
},
"intro": "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon."
},
"favorite": {
"title": "Tus favoritos"

View File

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

View File

@ -129,8 +129,9 @@
"show_post": "Mostrar Publicación",
"show_user_profile": "Mostrar perfil del usuario",
"content_warning": "Advertencia de Contenido",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Pulsa en cualquier sitio para mostrar",
"tap_to_reveal": "Tap to reveal",
"tap_to_reveal": "Tocar para revelar",
"poll": {
"vote": "Vota",
"closed": "Cerrado"
@ -143,10 +144,10 @@
"unfavorite": "No favorito",
"menu": "Menú",
"hide": "Ocultar",
"show_image": "Show image",
"show_gif": "Show GIF",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
"show_image": "Mostrar imagen",
"show_gif": "Mostrar GIF",
"show_video_player": "Mostrar reproductor de vídeo",
"tap_then_hold_to_show_menu": "Toca, después mantén para mostrar el menú"
},
"tag": {
"url": "URL",
@ -447,10 +448,10 @@
}
},
"accessibility": {
"show_avatar_image": "Show avatar image",
"edit_avatar_image": "Edit avatar image",
"show_banner_image": "Show banner image",
"double_tap_to_open_the_list": "Double tap to open the list"
"show_avatar_image": "Mostrar imagen del avatar",
"edit_avatar_image": "Editar imagen del avatar",
"show_banner_image": "Mostrar imagen de banner",
"double_tap_to_open_the_list": "Pulsa dos veces para abrir la lista"
}
},
"follower": {
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
"posts": "Publicaciones",
"hashtags": "Etiquetas",
"news": "Noticias",
"for_you": "Para Ti"
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Tus Favoritos"
@ -561,7 +563,7 @@
"disable_avatar_animation": "Deshabilitar avatares animados",
"disable_emoji_animation": "Deshabilitar emojis animados",
"using_default_browser": "Usar navegador predeterminado para abrir los enlaces",
"open_links_in_mastodon": "Open links in Mastodon"
"open_links_in_mastodon": "Abrir links en Mastodon"
},
"boring_zone": {
"title": "La Zona Aburrida",

View File

@ -129,6 +129,7 @@
"show_post": "Erakutsi bidalketa",
"show_user_profile": "Erakutsi erabiltzailearen profila",
"content_warning": "Edukiaren abisua",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Ukitu edonon bistaratzeko",
"tap_to_reveal": "Sakatu erakusteko",
"poll": {
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
"posts": "Argitalpenak",
"hashtags": "Traolak",
"news": "Albisteak",
"for_you": "Zuretzat"
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Zure gogokoak"

View File

@ -129,6 +129,7 @@
"show_post": "Montrer la publication",
"show_user_profile": "Montrer le profil de lutilisateur·rice",
"content_warning": "Avertissement de contenu",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tapotez nimporte où pour révéler la publication",
"tap_to_reveal": "Appuyer pour afficher",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "Actualité",
"for_you": "Pour vous"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Vos favoris"

View File

@ -129,6 +129,7 @@
"show_post": "Seall am post",
"show_user_profile": "Seall pròifil a chleachdaiche",
"content_warning": "Rabhadh susbainte",
"sensitive_content": "Susbaint fhrionasach",
"media_content_warning": "Thoir gnogag àite sam bith gus a nochdadh",
"tap_to_reveal": "Thoir gnogag gus a nochdadh",
"poll": {
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
"posts": "Postaichean",
"hashtags": "Tagaichean hais",
"news": "Naidheachdan",
"for_you": "Dhut-sa"
},
"intro": "Seo na postaichean fèillmhor nad cheàrnaidh de Mhastodon."
},
"favorite": {
"title": "Na h-annsachdan agad"

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,618 @@
{
"common": {
"alerts": {
"common": {
"please_try_again": "Inténtao de novo.",
"please_try_again_later": "Inténtao de novo máis tarde."
},
"sign_up_failure": {
"title": "Fallou o rexistro"
},
"server_error": {
"title": "Erro do servidor"
},
"vote_failure": {
"title": "Fallou a votación",
"poll_ended": "A enquisa rematou"
},
"discard_post_content": {
"title": "Descartar Borrador",
"message": "Confirma que queres descartar o contido do borrador."
},
"publish_post_failure": {
"title": "Fallou a publicación",
"message": "Fallou a publicación.\nComproba a conexión a internet.",
"attachments_message": {
"video_attach_with_photo": "Non podes anexar un vídeo a unha publicación que xa contén imaxes.",
"more_than_one_video": "Non podes anexar máis de un vídeo."
}
},
"edit_profile_failure": {
"title": "Erro ao editar o perfil",
"message": "Non se editou o perfil. Inténtao máis tarde."
},
"sign_out": {
"title": "Pechar sesión",
"message": "Tes a certeza de queres pechar a sesión?",
"confirm": "Pechar sesión"
},
"block_domain": {
"title": "Tes a certeza de querer bloquear todo de %s? Na meirande parte dos casos uns bloqueos ou silenciados específicos son suficientes e preferibles. Non verás máis o contido deste dominio en ningunha cronoloxía pública e as túas seguidoras deste dominio serán eliminadas.",
"block_entire_domain": "Bloquear Dominio"
},
"save_photo_failure": {
"title": "Erro ao gardar a fotografía",
"message": "Activa o permiso de acceso á galería de fotos para gardar a foto."
},
"delete_post": {
"title": "Eliminar publicación",
"message": "Tes a certeza de querer eliminar esta publicación?"
},
"clean_cache": {
"title": "Limpar caché",
"message": "Baleirouse %s da caché correctamente."
}
},
"controls": {
"actions": {
"back": "Volver",
"next": "Seguinte",
"previous": "Anterior",
"open": "Abrir",
"add": "Engadir",
"remove": "Eliminar",
"edit": "Editar",
"save": "Gardar",
"ok": "OK",
"done": "Feito",
"confirm": "Confirmar",
"continue": "Continuar",
"compose": "Escribir",
"cancel": "Cancelar",
"discard": "Descartar",
"try_again": "Intentar de novo",
"take_photo": "Facer foto",
"save_photo": "Gardar foto",
"copy_photo": "Copiar foto",
"sign_in": "Acceder",
"sign_up": "Inscribirse",
"see_more": "Ver máis",
"preview": "Vista previa",
"share": "Compartir",
"share_user": "Compartir %s",
"share_post": "Compartir publicación",
"open_in_safari": "Abrir en Safari",
"open_in_browser": "Abrir no navegador",
"find_people": "Atopar persoas para seguir",
"manually_search": "Buscar de xeito manual",
"skip": "Omitir",
"reply": "Responder",
"report_user": "Denunciar a %s",
"block_domain": "Bloquear a %s",
"unblock_domain": "Desbloquear a %s",
"settings": "Axustes",
"delete": "Eliminar"
},
"tabs": {
"home": "Inicio",
"search": "Busca",
"notification": "Notificación",
"profile": "Perfil"
},
"keyboard": {
"common": {
"switch_to_tab": "Cambiar a %s",
"compose_new_post": "Escribir Nova publicación",
"show_favorites": "Mostrar Favoritos",
"open_settings": "Abrir axustes"
},
"timeline": {
"previous_status": "Publicación anterior",
"next_status": "Publicación seguinte",
"open_status": "Abrir publicación",
"open_author_profile": "Ver Perfil da autora",
"open_reblogger_profile": "Ver perfil de quen promoveu",
"reply_status": "Responder á publicación",
"toggle_reblog": "Promover a publicación",
"toggle_favorite": "Engadir publicación a Favoritas",
"toggle_content_warning": "Marcar con Aviso sobre o contido",
"preview_image": "Previsualización da imaxe"
},
"segmented_control": {
"previous_section": "Sección anterior",
"next_section": "Sección seguinte"
}
},
"status": {
"user_reblogged": "%s promoveu",
"user_replied_to": "Respondeu a %s",
"show_post": "Mostrar publicación",
"show_user_profile": "Mostrar perfil da usuaria",
"content_warning": "Aviso sobre o contido",
"sensitive_content": "Contido sensible",
"media_content_warning": "Toca nalgures para mostrar",
"tap_to_reveal": "Toca para mostrar",
"poll": {
"vote": "Votar",
"closed": "Pechada"
},
"actions": {
"reply": "Responder",
"reblog": "Promover",
"unreblog": "Retirar promoción",
"favorite": "Favorecer",
"unfavorite": "Eliminar dos favoritos",
"menu": "Menú",
"hide": "Agochar",
"show_image": "Mostrar a imaxe",
"show_gif": "Show GIF",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
},
"tag": {
"url": "URL",
"mention": "Mention",
"link": "Link",
"hashtag": "Hashtag",
"email": "Email",
"emoji": "Emoji"
},
"visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.",
"private": "Only their followers can see this post.",
"private_from_me": "Only my followers can see this post.",
"direct": "Only mentioned user can see this post."
}
},
"friendship": {
"follow": "Follow",
"following": "Following",
"request": "Request",
"pending": "Pending",
"block": "Block",
"block_user": "Block %s",
"block_domain": "Block %s",
"unblock": "Unblock",
"unblock_user": "Unblock %s",
"blocked": "Blocked",
"mute": "Mute",
"mute_user": "Mute %s",
"unmute": "Unmute",
"unmute_user": "Unmute %s",
"muted": "Muted",
"edit_info": "Edit Info"
},
"timeline": {
"filtered": "Filtered",
"timestamp": {
"now": "Now"
},
"loader": {
"load_missing_posts": "Load missing posts",
"loading_missing_posts": "Loading missing posts...",
"show_more_replies": "Show more replies"
},
"header": {
"no_status_found": "No Post Found",
"blocking_warning": "You 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 communities.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.",
"button": {
"category": {
"all": "All",
"all_accessiblity_description": "Category: All",
"academia": "academia",
"activism": "activismo",
"food": "comida",
"furry": "peluxos",
"games": "xogos",
"general": "xeral",
"journalism": "xornalismo",
"lgbt": "lgbt",
"regional": "rexional",
"art": "arte",
"music": "música",
"tech": "tecnoloxía"
},
"see_less": "Ver menos",
"see_more": "Ver máis"
},
"label": {
"language": "IDIOMA",
"users": "USUARIAS",
"category": "CATEGORÍA"
},
"input": {
"placeholder": "Buscar comunidades"
},
"empty_state": {
"finding_servers": "Buscando servidores dispoñibles...",
"bad_network": "Algo fallou ao cargar os datos. Comproba a conexión a internet.",
"no_results": "Sen resultados"
}
},
"register": {
"title": "Imos crear a túa conta en %s",
"input": {
"avatar": {
"delete": "Eliminar"
},
"username": {
"placeholder": "identificador",
"duplicate_prompt": "Este nome de usuaria xa está en uso."
},
"display_name": {
"placeholder": "nome público"
},
"email": {
"placeholder": "email"
},
"password": {
"placeholder": "contrasinal",
"require": "O contrasinal debe ter polo menos:",
"character_limit": "8 caracteres",
"accessibility": {
"checked": "validado",
"unchecked": "non validado"
},
"hint": "O teu contrasinal debe ter cando menos oito caracteres"
},
"invite": {
"registration_user_invite_request": "Por que queres unirte?"
}
},
"error": {
"item": {
"username": "Identificador",
"email": "Email",
"password": "Contrasinal",
"agreement": "Acordo",
"locale": "Locale",
"reason": "Razón"
},
"reason": {
"blocked": "%s é un provedor de email non autorizado",
"unreachable": "%s semella que non existe",
"taken": "%s xa está en uso",
"reserved": "%s é unha palabra reservada",
"accepted": "%s debe ser aceptado",
"blank": "%s é requerido",
"invalid": "%s non é válido",
"too_long": "%s é demasiado longo",
"too_short": "%s é demasiado curto",
"inclusion": "%s non é un valor soportado"
},
"special": {
"username_invalid": "O nome de usuaria só pode ter caracteres alfanuméricos e trazos baixos",
"username_too_long": "Username is too long (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": "Non listado",
"private": "Só para seguidoras",
"direct": "Só para persoas mencionadas"
},
"auto_complete": {
"space_to_add": "Barra de espazo engade"
},
"accessibility": {
"append_attachment": "Engadir anexo",
"append_poll": "Engadir enquisa",
"remove_poll": "Eliminar enquisa",
"custom_emoji_picker": "Selector emoji personalizado",
"enable_content_warning": "Marcar con Aviso sobre o contido",
"disable_content_warning": "Retirar Aviso sobre o contido",
"post_visibility_menu": "Visibilidade da publicación"
},
"keyboard": {
"discard_post": "Descartar publicación",
"publish_post": "Publicar",
"toggle_poll": "Activar enquisa",
"toggle_content_warning": "Marcar con Aviso sobre o contido",
"append_attachment_entry": "Engadir anexo - %s",
"select_visibility_entry": "Elexir visibilidade - %s"
}
},
"profile": {
"dashboard": {
"posts": "publicacións",
"following": "following",
"followers": "followers"
},
"fields": {
"add_row": "Add Row",
"placeholder": {
"label": "Label",
"content": "Content"
}
},
"segmented_control": {
"posts": "Posts",
"replies": "Replies",
"posts_and_replies": "Posts and Replies",
"media": "Media",
"about": "About"
},
"relationship_action_alert": {
"confirm_mute_user": {
"title": "Mute Account",
"message": "Confirm to mute %s"
},
"confirm_unmute_user": {
"title": "Unmute Account",
"message": "Confirm to unmute %s"
},
"confirm_block_user": {
"title": "Block Account",
"message": "Confirm to block %s"
},
"confirm_unblock_user": {
"title": "Unblock Account",
"message": "Confirm to unblock %s"
}
},
"accessibility": {
"show_avatar_image": "Show avatar image",
"edit_avatar_image": "Edit avatar image",
"show_banner_image": "Show banner image",
"double_tap_to_open_the_list": "Double tap to open the list"
}
},
"follower": {
"footer": "Followers from other servers are not displayed."
},
"following": {
"footer": "Follows from other servers are not displayed."
},
"search": {
"title": "Search",
"search_bar": {
"placeholder": "Search hashtags and users",
"cancel": "Cancel"
},
"recommend": {
"button_text": "See All",
"hash_tag": {
"title": "Trending on Mastodon",
"description": "Hashtags that are getting quite a bit of attention",
"people_talking": "%s people are talking"
},
"accounts": {
"title": "Accounts you might like",
"description": "You may like to follow these accounts",
"follow": "Follow"
}
},
"searching": {
"segment": {
"all": "All",
"people": "People",
"hashtags": "Hashtags",
"posts": "Posts"
},
"empty_state": {
"no_results": "No results"
},
"recent_search": "Recent searches",
"clear": "Clear"
}
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"
},
"notification": {
"title": {
"Everything": "Everything",
"Mentions": "Mentions"
},
"notification_description": {
"followed_you": "followed you",
"favorited_your_post": "favorited your post",
"reblogged_your_post": "reblogged your post",
"mentioned_you": "mentioned you",
"request_to_follow_you": "request to follow you",
"poll_has_ended": "poll has ended"
},
"keyobard": {
"show_everything": "Show Everything",
"show_mentions": "Show Mentions"
}
},
"thread": {
"back_title": "Post",
"title": "Post from %s"
},
"settings": {
"title": "Settings",
"section": {
"appearance": {
"title": "Appearance",
"automatic": "Automatic",
"light": "Always Light",
"dark": "Always Dark"
},
"look_and_feel": {
"title": "Look and Feel",
"use_system": "Use System",
"really_dark": "Really Dark",
"sorta_dark": "Sorta Dark",
"light": "Light"
},
"notifications": {
"title": "Notifications",
"favorites": "Favorites my post",
"follows": "Follows me",
"boosts": "Reblogs my post",
"mentions": "Mentions me",
"trigger": {
"anyone": "anyone",
"follower": "a follower",
"follow": "anyone I follow",
"noone": "no one",
"title": "Notify me when"
}
},
"preference": {
"title": "Preferences",
"true_black_dark_mode": "True black dark mode",
"disable_avatar_animation": "Disable animated avatars",
"disable_emoji_animation": "Disable animated emojis",
"using_default_browser": "Use default browser to open links",
"open_links_in_mastodon": "Open links in Mastodon"
},
"boring_zone": {
"title": "The Boring Zone",
"account_settings": "Account Settings",
"terms": "Terms of Service",
"privacy": "Privacy Policy"
},
"spicy_zone": {
"title": "The Spicy Zone",
"clear": "Clear Media Cache",
"signout": "Sign Out"
}
},
"footer": {
"mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
},
"keyboard": {
"close_settings_window": "Close Settings Window"
}
},
"report": {
"title_report": "Report",
"title": "Report %s",
"step1": "Step 1 of 2",
"step2": "Step 2 of 2",
"content1": "Are there any other posts 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

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -2,8 +2,8 @@
"common": {
"alerts": {
"common": {
"please_try_again": "Harap coba lagi.",
"please_try_again_later": "Coba lagi nanti."
"please_try_again": "Silakan coba lagi.",
"please_try_again_later": "Silakan coba lagi nanti."
},
"sign_up_failure": {
"title": "Sign Up Failure"
@ -129,6 +129,7 @@
"show_post": "Tampilkan Postingan",
"show_user_profile": "Tampilkan Profil Pengguna",
"content_warning": "Peringatan Konten",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Ketuk di mana saja untuk melihat",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -129,6 +129,7 @@
"show_post": "Mostra il post",
"show_user_profile": "Mostra il profilo dell'utente",
"content_warning": "Avviso sul contenuto",
"sensitive_content": "Contenuto sensibile",
"media_content_warning": "Tocca ovunque per rivelare",
"tap_to_reveal": "Tocca per rivelare",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtag",
"news": "Notizie",
"for_you": "Per Te"
}
},
"intro": "Questi sono i post che stanno guadagnando popolarità nel tuo angolo di Mastodon."
},
"favorite": {
"title": "I tuoi preferiti"

View File

@ -86,7 +86,7 @@
"find_people": "フォローする人を見つける",
"manually_search": "手動で検索する",
"skip": "スキップ",
"reply": "リプライ",
"reply": "返信",
"report_user": "%sを通報",
"block_domain": "%sをブロック",
"unblock_domain": "%sのブロックを解除",
@ -125,10 +125,11 @@
},
"status": {
"user_reblogged": "%sがブースト",
"user_replied_to": "%sがリプライ",
"user_replied_to": "%sに返信",
"show_post": "投稿を見る",
"show_user_profile": "プロフィールを見る",
"content_warning": "コンテンツ警告",
"sensitive_content": "Sensitive Content",
"media_content_warning": "どこかをタップして表示",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -136,7 +137,7 @@
"closed": "クローズド"
},
"actions": {
"reply": "リプライ",
"reply": "返信",
"reblog": "ブースト",
"unreblog": "ブーストを戻す",
"favorite": "お気に入り",
@ -189,7 +190,7 @@
"loader": {
"load_missing_posts": "不足している投稿を読み込む",
"loading_missing_posts": "読込中...",
"show_more_replies": "リプライをもっとみる"
"show_more_replies": "返信をさらに表示"
},
"header": {
"no_status_found": "投稿が見つかりません",
@ -351,7 +352,7 @@
"compose": {
"title": {
"new_post": "新しい投稿",
"new_reply": "新しいリプライ"
"new_reply": "新しい返信"
},
"media_selection": {
"camera": "写真を撮る",
@ -360,7 +361,7 @@
},
"content_input_placeholder": "気になることを入力またはペースト",
"compose_action": "投稿",
"replying_to_user": "%sにリプライ",
"replying_to_user": "%sに返信",
"attachment": {
"photo": "写真",
"video": "動画",
@ -423,10 +424,10 @@
},
"segmented_control": {
"posts": "投稿",
"replies": "リプライ",
"posts_and_replies": "Posts and Replies",
"replies": "返信",
"posts_and_replies": "投稿と返信",
"media": "メディア",
"about": "About"
"about": "概要"
},
"relationship_action_alert": {
"confirm_mute_user": {
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"posts": "投稿",
"hashtags": "ハッシュタグ",
"news": "ニュース",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "お気に入り"
@ -583,17 +585,17 @@
}
},
"report": {
"title_report": "Report",
"title_report": "報告する",
"title": "%sを通報",
"step1": "ステップ 1/2",
"step2": "ステップ 2/2",
"content1": "他に通報したい投稿はありますか?",
"content2": "この通報についてモデレーターに伝達しておきたい事項はありますか?",
"report_sent_title": "Thanks for reporting, well look into this.",
"report_sent_title": "ご報告ありがとうございます、追って確認します。",
"send": "通報を送信",
"skip_to_send": "コメントなしで送信",
"text_placeholder": "追加コメントを入力",
"reported": "REPORTED"
"reported": "報告済み"
},
"preview": {
"keyboard": {

View File

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

View File

@ -129,8 +129,9 @@
"show_post": "Sken-d tasuffeɣt",
"show_user_profile": "Ssken-d amaɣnu n useqdac",
"content_warning": "Alɣu n ugbur",
"sensitive_content": "Agbur amḥulfu",
"media_content_warning": "Sit anida tebɣiḍ i wakken ad twaliḍ",
"tap_to_reveal": "Tap to reveal",
"tap_to_reveal": "Sit i uskan",
"poll": {
"vote": "Dɣeṛ",
"closed": "Ifukk"
@ -143,10 +144,10 @@
"unfavorite": "Kkes seg yismenyifen",
"menu": "Umuɣ",
"hide": "Ffer",
"show_image": "Show image",
"show_gif": "Show GIF",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
"show_image": "Sken tugna",
"show_gif": "Sken GIF",
"show_video_player": "Sken ameɣri n tvidyut",
"tap_then_hold_to_show_menu": "Sit teǧǧeḍ aḍad-ik•im i wakken ad d-iffeɣ wumuɣ"
},
"tag": {
"url": "URL",
@ -220,7 +221,7 @@
"academia": "akadimi",
"activism": "tinuɣmest",
"food": "učči",
"furry": "furry",
"furry": "s taḍut",
"games": "uraren",
"general": "amatu",
"journalism": "taɣamsa",
@ -447,10 +448,10 @@
}
},
"accessibility": {
"show_avatar_image": "Show avatar image",
"edit_avatar_image": "Edit avatar image",
"show_banner_image": "Show banner image",
"double_tap_to_open_the_list": "Double tap to open the list"
"show_avatar_image": "Sken tugna n avaṭar",
"edit_avatar_image": "Ẓreg tugna n avaṭar",
"show_banner_image": "Sken tugna n uɣerrac",
"double_tap_to_open_the_list": "Sin isitiyen i twaledyawt n tebdart"
}
},
"follower": {
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
"posts": "Tisuffaɣ",
"hashtags": "Ihacṭagen",
"news": "Isallen",
"for_you": "I kečč·kem"
},
"intro": "Tigi d tisuffaɣ i d-ijebbden s waṭas deg tama-inek•inem n Mastodon."
},
"favorite": {
"title": "Ismenyifen-ik·im"
@ -561,7 +563,7 @@
"disable_avatar_animation": "Sens ivaṭaren yettembiwilen",
"disable_emoji_animation": "Sens imujiten yettembiwilen",
"using_default_browser": "Seqdec iminig amezwer i twaledyawt n yiseɣwan",
"open_links_in_mastodon": "Open links in Mastodon"
"open_links_in_mastodon": "Ldi iseɣwan deg Mastodon"
},
"boring_zone": {
"title": "Tamnaḍt yessefcalen",

View File

@ -129,6 +129,7 @@
"show_post": "Şandiyê nîşan bide",
"show_user_profile": "Profîla bikarhêner nîşan bide",
"content_warning": "Hişyariya naverokê",
"sensitive_content": "Naveroka hestiyarî",
"media_content_warning": "Ji bo eşkerekirinê li derekî bitikîne",
"tap_to_reveal": "Ji bo dîtinê bitikîne",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtag",
"news": "Nûçe",
"for_you": "Ji bo te"
}
},
"intro": "Ev şandiyên ku di quncika Mastodon balê dikişîne."
},
"favorite": {
"title": "Bijarteyên te"

View File

@ -129,6 +129,7 @@
"show_post": "게시물 보기",
"show_user_profile": "사용자 프로필 보기",
"content_warning": "열람 주의",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -16,37 +16,37 @@
"poll_ended": "De peiling is beëindigd"
},
"discard_post_content": {
"title": "Concept Verwijderen",
"title": "Verwijder concept",
"message": "Bevestig het verwijderen van het concept bericht."
},
"publish_post_failure": {
"title": "Publicatiefout",
"message": "Het publiceren van het bericht is mislukt. Controleer alstublieft uw internetverbinding.",
"message": "Het publiceren van het bericht is mislukt. Controleer je internetverbinding.",
"attachments_message": {
"video_attach_with_photo": "Een video kan niet aan een bericht met afbeeldingen worden gekoppeld.",
"more_than_one_video": "Slechts één video kan aan een bericht worden gekoppeld."
"more_than_one_video": "Kan niet meer dan één video toevoegen."
}
},
"edit_profile_failure": {
"title": "Profiel bewerken mislukt",
"message": "Het profiel kan niet bewerkt worden. Probeer het opnieuw."
"message": "Je profiel kan niet bewerkt worden. Probeer het opnieuw."
},
"sign_out": {
"title": "Afmelden",
"message": "Weet u zeker dat u zich wilt afmelden?",
"confirm": "Afmelden"
"title": "Log-uit",
"message": "Weet je zeker dat je wilt uitloggen?",
"confirm": "Log-uit"
},
"block_domain": {
"title": "Weet u zeker dat u alles van %s wilt blokkeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en wenselijker. U zult geen berichten meer zien van dit domein en volgers van dit domein worden verwijderd.",
"block_entire_domain": "Domein blokkeren"
"title": "Weet je het echt heel erg zeker dat je alles van %s wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende. Je zult geen berichten van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.",
"block_entire_domain": "Blokkeer domein"
},
"save_photo_failure": {
"title": "Foto Opslaan Mislukt",
"message": "Geef toestemming om de foto op te slaan."
},
"delete_post": {
"title": "Weet u zeker dat u dit bericht wilt verwijderen?",
"message": "Are you sure you want to delete this post?"
"title": "Verwijder Bericht",
"message": "Weet je zeker dat je dit bericht wilt verwijderen?"
},
"clean_cache": {
"title": "Cache-geheugen Wissen",
@ -59,49 +59,49 @@
"next": "Volgende",
"previous": "Vorige",
"open": "Open",
"add": "Toevoegen",
"remove": "Verwijderen",
"edit": "Bewerken",
"save": "Opslaan",
"ok": "Oké",
"add": "Voeg toe",
"remove": "Verwijder",
"edit": "Bewerk",
"save": "Bewaar",
"ok": "Ok",
"done": "Klaar",
"confirm": "Bevestigen",
"continue": "Doorgaan",
"compose": "Compose",
"cancel": "Annuleren",
"continue": "Ga verder",
"compose": "Schrijf bericht",
"cancel": "Annuleer",
"discard": "Weggooien",
"try_again": "Probeer Opnieuw",
"take_photo": "Foto Maken",
"save_photo": "Foto Opslaan",
"copy_photo": "Foto kopiëren",
"take_photo": "Maak foto",
"save_photo": "Bewaar foto",
"copy_photo": "Kopieer foto",
"sign_in": "Aanmelden",
"sign_up": "Registreren",
"see_more": "Meer",
"preview": "Voorvertoning",
"share": "Delen",
"share": "Deel",
"share_user": "Delen %s",
"share_post": "Bericht Delen",
"share_post": "Deel bericht",
"open_in_safari": "Open in Safari",
"open_in_browser": "Open in Browser",
"open_in_browser": "Open in browser",
"find_people": "Zoek mensen om te volgen",
"manually_search": "Handmatig zoeken",
"skip": "Overslaan",
"reply": "Reageren",
"reply": "Reageer",
"report_user": "Rapporteer %s",
"block_domain": "Blokkeer %s",
"unblock_domain": "Deblokkeer %s",
"settings": "Instellingen",
"delete": "Verwijderen"
"delete": "Verwijder"
},
"tabs": {
"home": "Start",
"search": "Zoeken",
"search": "Zoek",
"notification": "Melding",
"profile": "Profiel"
},
"keyboard": {
"common": {
"switch_to_tab": "Wisselen naar %s",
"switch_to_tab": "Overschakelen naar %s",
"compose_new_post": "Nieuw Bericht Opstellen",
"show_favorites": "Favorieten Weergeven",
"open_settings": "Open Instellingen"
@ -112,10 +112,10 @@
"open_status": "Open Bericht",
"open_author_profile": "Open Auteursprofiel",
"open_reblogger_profile": "Open Delersprofiel",
"reply_status": "Reageren",
"reply_status": "Reageer",
"toggle_reblog": "Delen bij berichten omschakelen",
"toggle_favorite": "Favoriet Omschakelen bij Bericht",
"toggle_content_warning": "Inhoudswaarschuwing Omschakelen",
"toggle_favorite": "Favoriet in-/uitschakelen bij Post",
"toggle_content_warning": "Inhoudswaarschuwing",
"preview_image": "Voorvertoning Afbeelding"
},
"segmented_control": {
@ -124,13 +124,14 @@
}
},
"status": {
"user_reblogged": "%s gedeeld",
"user_reblogged": "%s heeft gedeeld",
"user_replied_to": "Reactie op %s",
"show_post": "Toon Bericht",
"show_user_profile": "Toon Gebruikersprofiel",
"content_warning": "Inhoudswaarschuwing",
"sensitive_content": "Gevoelige inhoud",
"media_content_warning": "Tap hier om te tonen",
"tap_to_reveal": "Tap to reveal",
"tap_to_reveal": "Tik om te onthullen",
"poll": {
"vote": "Stemmen",
"closed": "Gesloten"
@ -142,11 +143,11 @@
"favorite": "Toevoegen aan Favorieten",
"unfavorite": "Verwijderen uit Favorieten",
"menu": "Menu",
"hide": "Hide",
"show_image": "Show image",
"show_gif": "Show GIF",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
"hide": "Verberg",
"show_image": "Toon afbeelding",
"show_gif": "GIF weergeven",
"show_video_player": "Toon videospeler",
"tap_then_hold_to_show_menu": "Tik en houd vast om menu te tonen"
},
"tag": {
"url": "URL",
@ -157,10 +158,10 @@
"emoji": "Emoji"
},
"visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.",
"private": "Only their followers can see this post.",
"private_from_me": "Only my followers can see this post.",
"direct": "Only mentioned user can see this post."
"unlisted": "Iedereen kan dit bericht zien maar het wordt niet in de publieke tijdlijn getoond.",
"private": "Alleen hun volgers kunnen dit bericht zien.",
"private_from_me": "Alleen mijn volgers kunnen dit bericht zien.",
"direct": "Alleen de vermelde persoon kan dit bericht zien."
}
},
"friendship": {
@ -206,13 +207,13 @@
"scene": {
"welcome": {
"slogan": "Sociale media terug in uw handen.",
"get_started": "Get Started",
"log_in": "Log In"
"get_started": "Aan de slag",
"log_in": "Log in"
},
"server_picker": {
"title": "Kies een server, welke dan ook.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.",
"subtitle": "Kies een gemeenschap gebaseerd op jouw interesses, regio of een algemeen doel.",
"subtitle_extend": "Kies een gemeenschap gebaseerd op jouw interesses, regio, of een algemeen doel. Elke gemeenschap wordt beheerd door een volledig onafhankelijke organisatie of individu.",
"button": {
"category": {
"all": "Alles",
@ -265,11 +266,11 @@
},
"password": {
"placeholder": "wachtwoord",
"require": "Your password needs at least:",
"character_limit": "8 characters",
"require": "Je wachtwoord moet ten minste:",
"character_limit": "8 tekens",
"accessibility": {
"checked": "checked",
"unchecked": "unchecked"
"checked": "ingeschakeld",
"unchecked": "uitgeschakeld"
},
"hint": "Uw wachtwoord moet ten minste acht tekens bevatten"
},
@ -321,7 +322,7 @@
"subtitle": "We hebben een e-mail gestuurd naar %s,\nklik op de link om uw account te bevestigen.",
"button": {
"open_email_app": "Email Openen",
"resend": "Resend"
"resend": "Verstuur opnieuw"
},
"dont_receive_email": {
"title": "Controleer uw emailadres",
@ -424,40 +425,40 @@
"segmented_control": {
"posts": "Berichten",
"replies": "Reacties",
"posts_and_replies": "Posts and Replies",
"posts_and_replies": "Berichten en reacties",
"media": "Media",
"about": "About"
"about": "Informatie"
},
"relationship_action_alert": {
"confirm_mute_user": {
"title": "Mute Account",
"message": "Confirm to mute %s"
"title": "Negeer account",
"message": "Bevestig om %s te negeren"
},
"confirm_unmute_user": {
"title": "Account Negeren",
"message": "Bevestig om %s te negeren"
},
"confirm_block_user": {
"title": "Block Account",
"message": "Confirm to block %s"
"title": "Blokkeer account",
"message": "Bevestig om %s te blokkeren"
},
"confirm_unblock_user": {
"title": "Unblock Account",
"message": "Confirm to unblock %s"
"title": "Deblokkeer Account",
"message": "Bevestig om %s te deblokkeren"
}
},
"accessibility": {
"show_avatar_image": "Show avatar image",
"edit_avatar_image": "Edit avatar image",
"show_banner_image": "Show banner image",
"double_tap_to_open_the_list": "Double tap to open the list"
"show_avatar_image": "Toon avatar-afbeelding",
"edit_avatar_image": "Bewerk avatar-afbeelding",
"show_banner_image": "Toon banner-afbeelding",
"double_tap_to_open_the_list": "Dubbel tikken om de lijst te openen"
}
},
"follower": {
"footer": "Followers from other servers are not displayed."
"footer": "Volgers van andere servers worden niet weergegeven."
},
"following": {
"footer": "Follows from other servers are not displayed."
"footer": "Volgers van andere servers worden niet weergegeven."
},
"search": {
"title": "Zoeken",
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "Posts",
"posts": "Berichten",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
"news": "Nieuws",
"for_you": "Voor jou"
},
"intro": "Dit zijn de berichten die populair zijn in jouw Mastodon-kringen."
},
"favorite": {
"title": "Uw favorieten"
@ -509,12 +511,12 @@
"Mentions": "Vermeldingen"
},
"notification_description": {
"followed_you": "followed you",
"favorited_your_post": "favorited your post",
"reblogged_your_post": "reblogged your post",
"mentioned_you": "mentioned you",
"request_to_follow_you": "request to follow you",
"poll_has_ended": "poll has ended"
"followed_you": "volgt je",
"favorited_your_post": "heeft je bericht als favoriet gemrkeerd",
"reblogged_your_post": "deelde je bericht",
"mentioned_you": "noemde je",
"request_to_follow_you": "verzoek je te volgen",
"poll_has_ended": "de peiling is beëindigd"
},
"keyobard": {
"show_everything": "Alles weergeven",
@ -535,11 +537,11 @@
"dark": "Altijd Donker"
},
"look_and_feel": {
"title": "Look and Feel",
"use_system": "Use System",
"really_dark": "Really Dark",
"sorta_dark": "Sorta Dark",
"light": "Light"
"title": "Opmaak",
"use_system": "Gebruik systeem",
"really_dark": "Echt donker",
"sorta_dark": "Donker",
"light": "Licht"
},
"notifications": {
"title": "Meldingen",
@ -583,17 +585,17 @@
}
},
"report": {
"title_report": "Report",
"title_report": "Rapporteer",
"title": "Rapporteer %s",
"step1": "Stap 1 van 2",
"step2": "Stap 2 van 2",
"content1": "Zijn er nog meer berichten die u aan het rapport wilt toevoegen?",
"content2": "Is er iets anders over dit rapport dat de moderators zouden moeten weten?",
"report_sent_title": "Thanks for reporting, well look into this.",
"report_sent_title": "Bedankt voor het rapporteren, we zullen hiernaar kijken.",
"send": "Stuur rapport",
"skip_to_send": "Verstuur zonder opmerkingen",
"text_placeholder": "Schrijf of plak aanvullende opmerkingen",
"reported": "REPORTED"
"reported": "Gerapporteerd"
},
"preview": {
"keyboard": {
@ -603,14 +605,14 @@
}
},
"account_list": {
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
"dismiss_account_switcher": "Dismiss Account Switcher",
"add_account": "Add Account"
"tab_bar_hint": "Huidige geselecteerde profiel: %s. Dubbel-tik en houd vast om account te wisselen",
"dismiss_account_switcher": "Annuleer account wisselen",
"add_account": "Voeg account toe"
},
"wizard": {
"new_in_mastodon": "New in Mastodon",
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
"accessibility_hint": "Double tap to dismiss this wizard"
"new_in_mastodon": "Nieuw in Mastodon",
"multiple_account_switch_intro_description": "Schakel tussen meerdere accounts door de profielknop in te drukken en vast te houden.",
"accessibility_hint": "Tik tweemaal om het popup-scherm te sluiten"
}
}
}

View File

@ -2,5 +2,5 @@
"NSCameraUsageDescription": "Gebruikt om foto's te nemen voor je berichten",
"NSPhotoLibraryAddUsageDescription": "Gebruikt om foto's op te slaan in de fotobibliotheek",
"NewPostShortcutItemTitle": "Nieuw Bericht",
"SearchShortcutItemTitle": "Zoeken"
"SearchShortcutItemTitle": "Zoek"
}

View File

@ -13,15 +13,15 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 unread notification</string>
<string>1 notificação não lida</string>
<key>other</key>
<string>%ld unread notification</string>
<string>%ld notificações não lidas</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_exceeds</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Input limit exceeds %#@character_count@</string>
<string>Limite de caracteres excedido %#@character_count@</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
@ -29,15 +29,15 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 character</string>
<string>1 carácter</string>
<key>other</key>
<string>%ld characters</string>
<string>%ld caracteres</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_remains</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Input limit remains %#@character_count@</string>
<string>Limite de caracteres continua excedido %#@character_count@</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
@ -45,9 +45,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 character</string>
<string>1 carácter</string>
<key>other</key>
<string>%ld characters</string>
<string>%ld caracteres</string>
</dict>
</dict>
<key>plural.count.metric_formatted.post</key>
@ -77,9 +77,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 post</string>
<string>1 toot</string>
<key>other</key>
<string>%ld posts</string>
<string>%ld toots</string>
</dict>
</dict>
<key>plural.count.favorite</key>
@ -93,9 +93,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 favorite</string>
<string>1 favorito</string>
<key>other</key>
<string>%ld favorites</string>
<string>%ld favoritos</string>
</dict>
</dict>
<key>plural.count.reblog</key>
@ -125,9 +125,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 reply</string>
<string>1 resposta</string>
<key>other</key>
<string>%ld replies</string>
<string>%ld respostas</string>
</dict>
</dict>
<key>plural.count.vote</key>
@ -141,9 +141,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 vote</string>
<string>1 voto</string>
<key>other</key>
<string>%ld votes</string>
<string>%ld votos</string>
</dict>
</dict>
<key>plural.count.voter</key>
@ -157,9 +157,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 voter</string>
<string>1 votante</string>
<key>other</key>
<string>%ld voters</string>
<string>%ld votantes</string>
</dict>
</dict>
<key>plural.people_talking</key>
@ -173,9 +173,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 people talking</string>
<string>1 pessoa falando</string>
<key>other</key>
<string>%ld people talking</string>
<string>%ld pessoas falando</string>
</dict>
</dict>
<key>plural.count.following</key>
@ -189,9 +189,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 following</string>
<string>1 seguindo</string>
<key>other</key>
<string>%ld following</string>
<string>%ld seguindo</string>
</dict>
</dict>
<key>plural.count.follower</key>
@ -205,9 +205,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 follower</string>
<string>1 seguidor</string>
<key>other</key>
<string>%ld followers</string>
<string>%ld seguidores</string>
</dict>
</dict>
<key>date.year.left</key>
@ -221,9 +221,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 year left</string>
<string>1 ano restante</string>
<key>other</key>
<string>%ld years left</string>
<string>%ld anos restantes</string>
</dict>
</dict>
<key>date.month.left</key>
@ -237,9 +237,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 months left</string>
<string>1 mês restante</string>
<key>other</key>
<string>%ld months left</string>
<string>%ld meses restantes</string>
</dict>
</dict>
<key>date.day.left</key>
@ -253,9 +253,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 day left</string>
<string>1 dia restante</string>
<key>other</key>
<string>%ld days left</string>
<string>%ld dias restantes</string>
</dict>
</dict>
<key>date.hour.left</key>
@ -269,9 +269,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 hour left</string>
<string>1 hora restante</string>
<key>other</key>
<string>%ld hours left</string>
<string>%ld horas restantes</string>
</dict>
</dict>
<key>date.minute.left</key>
@ -285,9 +285,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 minute left</string>
<string>1 minuto restante</string>
<key>other</key>
<string>%ld minutes left</string>
<string>%ld minutos restantes</string>
</dict>
</dict>
<key>date.second.left</key>
@ -301,9 +301,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 second left</string>
<string>1 segundo restante</string>
<key>other</key>
<string>%ld seconds left</string>
<string>%ld segundos restantes</string>
</dict>
</dict>
<key>date.year.ago.abbr</key>
@ -317,9 +317,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1y ago</string>
<string>1 ano atrás</string>
<key>other</key>
<string>%ldy ago</string>
<string>%ldy anos atrás</string>
</dict>
</dict>
<key>date.month.ago.abbr</key>
@ -333,9 +333,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1M ago</string>
<string>1 mês atrás</string>
<key>other</key>
<string>%ldM ago</string>
<string>%ldM meses atrás</string>
</dict>
</dict>
<key>date.day.ago.abbr</key>
@ -349,9 +349,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1d ago</string>
<string>1 dia atrás</string>
<key>other</key>
<string>%ldd ago</string>
<string>%ldd dias atrás</string>
</dict>
</dict>
<key>date.hour.ago.abbr</key>
@ -365,9 +365,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1h ago</string>
<string>1h atrás</string>
<key>other</key>
<string>%ldh ago</string>
<string>%ldh horas atrás</string>
</dict>
</dict>
<key>date.minute.ago.abbr</key>
@ -381,9 +381,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1m ago</string>
<string>Há 1 min</string>
<key>other</key>
<string>%ldm ago</string>
<string>Há %ldm minutos</string>
</dict>
</dict>
<key>date.second.ago.abbr</key>
@ -397,9 +397,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1s ago</string>
<string>Há 1 segundo</string>
<key>other</key>
<string>%lds ago</string>
<string>Há %lds segundos</string>
</dict>
</dict>
</dict>

View File

@ -2,84 +2,84 @@
"common": {
"alerts": {
"common": {
"please_try_again": "Please try again.",
"please_try_again_later": "Please try again later."
"please_try_again": "Por favor tente novamente.",
"please_try_again_later": "Tente novamente mais tarde."
},
"sign_up_failure": {
"title": "Sign Up Failure"
},
"server_error": {
"title": "Server Error"
"title": "Erro do servidor"
},
"vote_failure": {
"title": "Vote Failure",
"poll_ended": "The poll has ended"
"title": "Falha ao votar",
"poll_ended": "Essa enquete terminou"
},
"discard_post_content": {
"title": "Discard Draft",
"title": "Deletar Rascunho",
"message": "Confirm to discard composed post content."
},
"publish_post_failure": {
"title": "Publish Failure",
"message": "Failed to publish the post.\nPlease check your internet connection.",
"title": "Falha ao publicar",
"message": "Falha ao publicar o post.\nPor favor verifique a sua conexão de internet.",
"attachments_message": {
"video_attach_with_photo": "Cannot attach a video to a post that already contains images.",
"more_than_one_video": "Cannot attach more than one video."
"video_attach_with_photo": "Não é possível adicionar um vídeo à um toot que já contém imagens.",
"more_than_one_video": "Não é possível adicionar mais de um vídeo."
}
},
"edit_profile_failure": {
"title": "Edit Profile Error",
"message": "Cannot edit profile. Please try again."
"title": "Falha ao atualizar perfil",
"message": "Não foi possível atualizar o perfil. Por favor tente novamente."
},
"sign_out": {
"title": "Sign Out",
"message": "Are you sure you want to sign out?",
"confirm": "Sign Out"
"title": "Sair",
"message": "Você tem certeza que deseja sair?",
"confirm": "Sair"
},
"block_domain": {
"title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.",
"block_entire_domain": "Block Domain"
"title": "Você tem absoluta certeza de que quer bloquear todo %s? Na maioria dos casos é suficiente e preferível bloquear ou ignorar algumas contas específicas. Você não verá conteúdos desse domínio, e todos os seus seguidores desse domínio serão removidos.",
"block_entire_domain": "Bloquear Domínio"
},
"save_photo_failure": {
"title": "Save Photo Failure",
"title": "Falha ao salvar foto",
"message": "Please enable the photo library access permission to save the photo."
},
"delete_post": {
"title": "Delete Post",
"message": "Are you sure you want to delete this post?"
"title": "Deletar Toot",
"message": "Você tem certeza que deseja deletar esse toot?"
},
"clean_cache": {
"title": "Clean Cache",
"message": "Successfully cleaned %s cache."
"title": "Limpar Cache",
"message": "%s do cache removidos com sucesso."
}
},
"controls": {
"actions": {
"back": "Back",
"next": "Next",
"previous": "Previous",
"open": "Open",
"add": "Add",
"remove": "Remove",
"edit": "Edit",
"save": "Save",
"back": "Voltar",
"next": "Próximo",
"previous": "Anterior",
"open": "Abrir",
"add": "Adicionar",
"remove": "Remover",
"edit": "Editar",
"save": "Salvar",
"ok": "OK",
"done": "Done",
"confirm": "Confirm",
"continue": "Continue",
"compose": "Compose",
"cancel": "Cancel",
"discard": "Discard",
"try_again": "Try Again",
"done": "Concluir",
"confirm": "Confirmar",
"continue": "Continuar",
"compose": "Compor",
"cancel": "Cancelar",
"discard": "Descartar",
"try_again": "Tente novamente",
"take_photo": "Take Photo",
"save_photo": "Save Photo",
"copy_photo": "Copy Photo",
"save_photo": "Salvar foto",
"copy_photo": "Copiar foto",
"sign_in": "Sign In",
"sign_up": "Sign Up",
"see_more": "See More",
"preview": "Preview",
"share": "Share",
"share_user": "Share %s",
"share": "Compartilhar",
"share_user": "Compartilhar %s",
"share_post": "Share Post",
"open_in_safari": "Open in Safari",
"open_in_browser": "Open in Browser",
@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -136,7 +137,7 @@
"closed": "Closed"
},
"actions": {
"reply": "Reply",
"reply": "Responder",
"reblog": "Reblog",
"unreblog": "Undo reblog",
"favorite": "Favorite",
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -129,6 +129,7 @@
"show_post": "Показать пост",
"show_user_profile": "Показать профиль пользователя",
"content_warning": "Предупреждение о содержании",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Нажмите в любом месте, чтобы показать",
"tap_to_reveal": "Нажмите, чтобы показать",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Ваше избранное"

View File

@ -129,6 +129,7 @@
"show_post": "Näytä julkaisu",
"show_user_profile": "Näytä tili",
"content_warning": "Sisältövaroitus",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Napauta mistä tahansa paljastaaksesi",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Omat suosikit"

View File

@ -13,15 +13,15 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 unread notification</string>
<string>1 oläst notis</string>
<key>other</key>
<string>%ld unread notification</string>
<string>%ld olästa notiser</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_exceeds</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Input limit exceeds %#@character_count@</string>
<string>Inmatningsgränsen överskrider %#@character_count@</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
@ -37,7 +37,7 @@
<key>a11y.plural.count.input_limit_remains</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Input limit remains %#@character_count@</string>
<string>Inmatningsgränsen återstår %#@character_count@</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
@ -61,9 +61,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>post</string>
<string>inlägg</string>
<key>other</key>
<string>posts</string>
<string>inläggen</string>
</dict>
</dict>
<key>plural.count.post</key>
@ -77,9 +77,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 post</string>
<string>1 inlägg</string>
<key>other</key>
<string>%ld posts</string>
<string>%ld inlägg</string>
</dict>
</dict>
<key>plural.count.favorite</key>
@ -93,9 +93,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 favorite</string>
<string>1 favorit</string>
<key>other</key>
<string>%ld favorites</string>
<string>%ld favoriter</string>
</dict>
</dict>
<key>plural.count.reblog</key>
@ -109,9 +109,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 reblog</string>
<string>%ld ompostning</string>
<key>other</key>
<string>%ld reblogs</string>
<string>%ld ompostningar</string>
</dict>
</dict>
<key>plural.count.reply</key>
@ -125,9 +125,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 reply</string>
<string>1 svar</string>
<key>other</key>
<string>%ld replies</string>
<string>%ld svar</string>
</dict>
</dict>
<key>plural.count.vote</key>
@ -157,9 +157,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 voter</string>
<string>%ld röst</string>
<key>other</key>
<string>%ld voters</string>
<string>%ld röster</string>
</dict>
</dict>
<key>plural.people_talking</key>
@ -173,9 +173,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 people talking</string>
<string>%ld person diskuterar</string>
<key>other</key>
<string>%ld people talking</string>
<string>%ld personer diskuterar</string>
</dict>
</dict>
<key>plural.count.following</key>
@ -189,9 +189,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 following</string>
<string>%ld följer</string>
<key>other</key>
<string>%ld following</string>
<string>%ld följer</string>
</dict>
</dict>
<key>plural.count.follower</key>
@ -221,9 +221,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 year left</string>
<string>%ld år kvar</string>
<key>other</key>
<string>%ld years left</string>
<string>%ld år kvar</string>
</dict>
</dict>
<key>date.month.left</key>
@ -237,9 +237,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 months left</string>
<string>%ld månad kvar</string>
<key>other</key>
<string>%ld months left</string>
<string>%ld månader kvar</string>
</dict>
</dict>
<key>date.day.left</key>
@ -253,9 +253,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 day left</string>
<string>%ld dag kvar</string>
<key>other</key>
<string>%ld days left</string>
<string>%ld dagar kvar</string>
</dict>
</dict>
<key>date.hour.left</key>
@ -269,9 +269,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 hour left</string>
<string>%ld timme kvar</string>
<key>other</key>
<string>%ld hours left</string>
<string>%ld timmar kvar</string>
</dict>
</dict>
<key>date.minute.left</key>
@ -285,9 +285,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 minute left</string>
<string>%ld minut kvar</string>
<key>other</key>
<string>%ld minutes left</string>
<string>%ld minuter kvar</string>
</dict>
</dict>
<key>date.second.left</key>
@ -301,9 +301,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 second left</string>
<string>%ld sekund kvar</string>
<key>other</key>
<string>%ld seconds left</string>
<string>%ld sekunder kvar</string>
</dict>
</dict>
<key>date.year.ago.abbr</key>
@ -317,9 +317,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1y ago</string>
<string>%ldå sedan</string>
<key>other</key>
<string>%ldy ago</string>
<string>%ldå sedan</string>
</dict>
</dict>
<key>date.month.ago.abbr</key>
@ -333,9 +333,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1M ago</string>
<string>%ldmån sedan</string>
<key>other</key>
<string>%ldM ago</string>
<string>%ld mån sedan</string>
</dict>
</dict>
<key>date.day.ago.abbr</key>
@ -349,9 +349,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1d ago</string>
<string>%ldd sedan</string>
<key>other</key>
<string>%ldd ago</string>
<string>%ldd sedan</string>
</dict>
</dict>
<key>date.hour.ago.abbr</key>
@ -365,9 +365,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1h ago</string>
<string>%ldt sedan</string>
<key>other</key>
<string>%ldh ago</string>
<string>%ldt sedan</string>
</dict>
</dict>
<key>date.minute.ago.abbr</key>
@ -381,9 +381,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1m ago</string>
<string>%ld min sedan</string>
<key>other</key>
<string>%ldm ago</string>
<string>%ld min sedan</string>
</dict>
</dict>
<key>date.second.ago.abbr</key>
@ -397,9 +397,9 @@
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1s sedan</string>
<string>%lds sedan</string>
<key>other</key>
<string>%lds ago</string>
<string>%lds sedan</string>
</dict>
</dict>
</dict>

View File

@ -6,232 +6,233 @@
"please_try_again_later": "Var god försök igen senare."
},
"sign_up_failure": {
"title": "Sign Up Failure"
"title": "Registrering misslyckades"
},
"server_error": {
"title": "Serverfel"
},
"vote_failure": {
"title": "Vote Failure",
"title": "Röstning misslyckades",
"poll_ended": "Omröstningen har avslutats"
},
"discard_post_content": {
"title": "Discard Draft",
"message": "Confirm to discard composed post content."
"title": "Släng utkast",
"message": "Bekräfta för att slänga inläggsutkast."
},
"publish_post_failure": {
"title": "Publish Failure",
"message": "Failed to publish the post.\nPlease check your internet connection.",
"title": "Publicering misslyckades",
"message": "Det gick inte att publicera inlägget.\nKontrollera din internetanslutning.",
"attachments_message": {
"video_attach_with_photo": "Cannot attach a video to a post that already contains images.",
"more_than_one_video": "Cannot attach more than one video."
"video_attach_with_photo": "Det går inte att bifoga en video till en status som redan innehåller bilder.",
"more_than_one_video": "Det går inte att bifoga mer än en video."
}
},
"edit_profile_failure": {
"title": "Edit Profile Error",
"message": "Cannot edit profile. Please try again."
"title": "Fel vid profilredigering",
"message": "Kan inte redigera profil. Försök igen."
},
"sign_out": {
"title": "Sign Out",
"title": "Logga ut",
"message": "Är du säker på att du vill logga ut?",
"confirm": "Sign Out"
"confirm": "Logga ut"
},
"block_domain": {
"title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.",
"block_entire_domain": "Block Domain"
"title": "Är du verkligen, verkligen säker på att du vill blockera hela %s? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen och dina följare från den domänen kommer att tas bort.",
"block_entire_domain": "Blockera domän"
},
"save_photo_failure": {
"title": "Save Photo Failure",
"message": "Please enable the photo library access permission to save the photo."
"title": "Kunde inte spara foto",
"message": "Aktivera åtkomst till Bilder för att spara bilden."
},
"delete_post": {
"title": "Delete Post",
"message": "Are you sure you want to delete this post?"
"title": "Radera inlägg",
"message": "Är du säker på att du vill radera detta inlägg?"
},
"clean_cache": {
"title": "Rensa cache",
"message": "Successfully cleaned %s cache."
"message": "Rensade %s cache."
}
},
"controls": {
"actions": {
"back": "Back",
"next": "Next",
"previous": "Previous",
"open": "Open",
"add": "Add",
"remove": "Remove",
"back": "Tillbaka",
"next": "Nästa",
"previous": "Tidigare",
"open": "Öppna",
"add": "Lägg till",
"remove": "Radera",
"edit": "Redigera",
"save": "Spara",
"ok": "OK",
"done": "Klar",
"confirm": "Confirm",
"confirm": "Bekräfta",
"continue": "Fortsätt",
"compose": "Compose",
"compose": "Skriv",
"cancel": "Avbryt",
"discard": "Discard",
"discard": "Kasta",
"try_again": "Försök igen",
"take_photo": "Take Photo",
"take_photo": "Ta foto",
"save_photo": "Spara foto",
"copy_photo": "Kopiera foto",
"sign_in": "Sign In",
"sign_up": "Sign Up",
"see_more": "See More",
"preview": "Preview",
"sign_in": "Logga in",
"sign_up": "Registrera dig",
"see_more": "Visa mer",
"preview": "Förhandstitt",
"share": "Dela",
"share_user": "Dela %s",
"share_post": "Share Post",
"share_post": "Dela inlägg",
"open_in_safari": "Öppna i Safari",
"open_in_browser": "Open in Browser",
"find_people": "Find people to follow",
"manually_search": "Manually search instead",
"skip": "Skip",
"reply": "Reply",
"open_in_browser": "Öppna i webbläsare",
"find_people": "Hitta personer att följa",
"manually_search": "Sök manuellt istället",
"skip": "Hoppa över",
"reply": "Svara",
"report_user": "Rapportera %s",
"block_domain": "Block %s",
"unblock_domain": "Unblock %s",
"block_domain": "Blockera %s",
"unblock_domain": "Avblockera %s",
"settings": "Inställningar",
"delete": "Radera"
},
"tabs": {
"home": "Home",
"search": "Search",
"notification": "Notification",
"home": "Hem",
"search": "Sök",
"notification": "Avisering",
"profile": "Profil"
},
"keyboard": {
"common": {
"switch_to_tab": "Switch to %s",
"compose_new_post": "Compose New Post",
"show_favorites": "Show Favorites",
"open_settings": "Open Settings"
"switch_to_tab": "Växla till %s",
"compose_new_post": "Skriv nytt inlägg",
"show_favorites": "Visa favoriter",
"open_settings": "Öppna inställningar"
},
"timeline": {
"previous_status": "Previous Post",
"next_status": "Next Post",
"open_status": "Open Post",
"open_author_profile": "Open Author's Profile",
"open_reblogger_profile": "Open Reblogger's Profile",
"reply_status": "Reply to Post",
"toggle_reblog": "Toggle Reblog on Post",
"toggle_favorite": "Toggle Favorite on Post",
"toggle_content_warning": "Toggle Content Warning",
"preview_image": "Preview Image"
"previous_status": "Föregående inlägg",
"next_status": "Nästa inlägg",
"open_status": "Öppna inlägg",
"open_author_profile": "Öppna författarens profil",
"open_reblogger_profile": "Öppna ompostarens profil",
"reply_status": "Svara på inlägg",
"toggle_reblog": "Växla ompostning på inlägg",
"toggle_favorite": "Växla favorit på inlägg",
"toggle_content_warning": "Växla innehållsvarning",
"preview_image": "Förhandsgranska bild"
},
"segmented_control": {
"previous_section": "Previous Section",
"next_section": "Next Section"
"previous_section": "Föregående avsnitt",
"next_section": "Nästa avsnitt"
}
},
"status": {
"user_reblogged": "%s reblogged",
"user_replied_to": "Replied to %s",
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"user_reblogged": "%s ompostade",
"user_replied_to": "Svarade på %s",
"show_post": "Visa inlägg",
"show_user_profile": "Visa användarprofil",
"content_warning": "Innehållsvarning",
"sensitive_content": "Känsligt innehåll",
"media_content_warning": "Tryck var som helst för att visa",
"tap_to_reveal": "Tryck för att visa",
"poll": {
"vote": "Vote",
"closed": "Closed"
"vote": "Rösta",
"closed": "Stängd"
},
"actions": {
"reply": "Reply",
"reblog": "Reblog",
"unreblog": "Undo reblog",
"favorite": "Favorite",
"unfavorite": "Unfavorite",
"reply": "Svara",
"reblog": "Omposta",
"unreblog": "Ångra ompostning",
"favorite": "Favorit",
"unfavorite": "Ta bort favorit",
"menu": "Meny",
"hide": "Dölj",
"show_image": "Show image",
"show_gif": "Show GIF",
"show_video_player": "Show video player",
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
"show_image": "Visa bild",
"show_gif": "Visa GIF",
"show_video_player": "Visa videospelare",
"tap_then_hold_to_show_menu": "Tryck och håll ned för att visa menyn"
},
"tag": {
"url": "URL",
"mention": "Mention",
"link": "Link",
"hashtag": "Hashtag",
"email": "Email",
"mention": "Nämn",
"link": "Länk",
"hashtag": "Hashtagg",
"email": "E-post",
"emoji": "Emoji"
},
"visibility": {
"unlisted": "Everyone can see this post but not display in the public timeline.",
"private": "Only their followers can see this post.",
"private_from_me": "Only my followers can see this post.",
"direct": "Only mentioned user can see this post."
"unlisted": "Alla kan se detta inlägg men det visas inte i den offentliga tidslinjen.",
"private": "Endast deras följare kan se detta inlägg.",
"private_from_me": "Bara mina följare kan se det här inlägget.",
"direct": "Endast nämnda användare kan se detta inlägg."
}
},
"friendship": {
"follow": "Följ",
"following": "Följer",
"request": "Request",
"pending": "Pending",
"block": "Block",
"block_user": "Block %s",
"block_domain": "Block %s",
"unblock": "Unblock",
"unblock_user": "Unblock %s",
"blocked": "Blocked",
"mute": "Mute",
"mute_user": "Mute %s",
"unmute": "Unmute",
"unmute_user": "Unmute %s",
"muted": "Muted",
"edit_info": "Edit Info"
"request": "Begäran",
"pending": "Väntande",
"block": "Blockera",
"block_user": "Blockera %s",
"block_domain": "Blockera %s",
"unblock": "Avblockera",
"unblock_user": "Avblockera %s",
"blocked": "Blockerad",
"mute": "Tysta",
"mute_user": "Tysta %s",
"unmute": "Avtysta",
"unmute_user": "Avtysta %s",
"muted": "Tystad",
"edit_info": "Redigera info"
},
"timeline": {
"filtered": "Filtered",
"filtered": "Filtrerat",
"timestamp": {
"now": "Nu"
},
"loader": {
"load_missing_posts": "Load missing posts",
"loading_missing_posts": "Loading missing posts...",
"load_missing_posts": "Ladda saknade inlägg",
"loading_missing_posts": "Laddar saknade inlägg...",
"show_more_replies": "Visa fler svar"
},
"header": {
"no_status_found": "No Post Found",
"blocking_warning": "You 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."
"no_status_found": "Inga inlägg hittades",
"blocking_warning": "Du kan inte visa användarens profil\nförrän du avblockerar dem.\nDin profil ser ut så här för dem.",
"user_blocking_warning": "Du kan inte visa %ss profil\nförrän du avblockerar dem.\nDin profil ser ut så här för dem.",
"blocked_warning": "Du kan inte visa den här användarens profil\nförrän de avblockerar dig.",
"user_blocked_warning": "Du kan inte visa %ss profil\nförrän de avblockerar dig.",
"suspended_warning": "Denna användare har stängts av.",
"user_suspended_warning": "%ss konto har blivit avstängt."
}
}
}
},
"scene": {
"welcome": {
"slogan": "Social networking\nback in your hands.",
"slogan": "Socialt nätverkande\ntillbaka i dina händer.",
"get_started": "Kom igång",
"log_in": "Logga in"
},
"server_picker": {
"title": "Mastodon is made of users in different communities.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.",
"title": "Mastodon utgörs av användare i olika gemenskaper.",
"subtitle": "Välj en gemenskap baserad på dina intressen, region eller ett allmänt syfte.",
"subtitle_extend": "Välj en gemenskap baserad på dina intressen, region eller ett allmänt syfte. Varje gemenskap drivs av en helt oberoende organisation eller individ.",
"button": {
"category": {
"all": "All",
"all": "Alla",
"all_accessiblity_description": "Kategori: Alla",
"academia": "academia",
"activism": "activism",
"food": "food",
"academia": "vetenskap",
"activism": "aktivism",
"food": "mat",
"furry": "furry",
"games": "games",
"general": "general",
"journalism": "journalism",
"games": "spel",
"general": "allmänt",
"journalism": "journalistik",
"lgbt": "lgbt",
"regional": "regional",
"art": "art",
"music": "music",
"tech": "tech"
"regional": "regionalt",
"art": "konst",
"music": "musik",
"tech": "teknik"
},
"see_less": "See Less",
"see_more": "See More"
"see_less": "Visa mindre",
"see_more": "Visa mer"
},
"label": {
"language": "SPRÅK",
@ -239,378 +240,379 @@
"category": "KATEGORI"
},
"input": {
"placeholder": "Search communities"
"placeholder": "Sök gemenskaper"
},
"empty_state": {
"finding_servers": "Finding available servers...",
"bad_network": "Something went wrong while loading the data. Check your internet connection.",
"finding_servers": "Söker tillgängliga servrar...",
"bad_network": "Något gick fel när data laddades. Försök igen eller kontrollera din internetanslutning.",
"no_results": "Inga resultat"
}
},
"register": {
"title": "Lets get you set up on %s",
"title": "Låt oss få igång dig på %s",
"input": {
"avatar": {
"delete": "Radera"
},
"username": {
"placeholder": "username",
"duplicate_prompt": "This username is taken."
"placeholder": "användarnamn",
"duplicate_prompt": "Det här användarnamnet är redan taget."
},
"display_name": {
"placeholder": "display name"
"placeholder": "visningsnamn"
},
"email": {
"placeholder": "email"
"placeholder": "e-post"
},
"password": {
"placeholder": "password",
"require": "Your password needs at least:",
"character_limit": "8 characters",
"placeholder": "lösenord",
"require": "Ditt lösenord behöver minst:",
"character_limit": "8 tecken",
"accessibility": {
"checked": "checked",
"unchecked": "unchecked"
"checked": "markerad",
"unchecked": "avmarkerad"
},
"hint": "Your password needs at least eight characters"
"hint": "Ditt lösenord måste bestå av minst 8 tecken"
},
"invite": {
"registration_user_invite_request": "Why do you want to join?"
"registration_user_invite_request": "Varför vill du gå med?"
}
},
"error": {
"item": {
"username": "Användarnamn",
"email": "Email",
"email": "E-post",
"password": "Lösenord",
"agreement": "Agreement",
"locale": "Locale",
"reason": "Reason"
"agreement": "Avtal",
"locale": "Språk",
"reason": "Anledning"
},
"reason": {
"blocked": "%s contains a disallowed email provider",
"unreachable": "%s does not seem to exist",
"taken": "%s is already in use",
"reserved": "%s is a reserved keyword",
"accepted": "%s must be accepted",
"blank": "%s is required",
"invalid": "%s is invalid",
"too_long": "%s is too long",
"too_short": "%s is too short",
"inclusion": "%s is not a supported value"
"blocked": "%s innehåller en icke tillåten e-postleverantör",
"unreachable": "%s verkar inte existera",
"taken": "%s används redan",
"reserved": "%s är ett reserverat nyckelord",
"accepted": "%s måste godkännas",
"blank": "%s krävs",
"invalid": "%s är ogiltig",
"too_long": "%s är för långt",
"too_short": "%s är för kort",
"inclusion": "%s är inte ett värde som stöds"
},
"special": {
"username_invalid": "Username must only contain alphanumeric characters and underscores",
"username_too_long": "Username is too long (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)"
"username_invalid": "Användarnamnet kan bara innehålla alfanumeriska tecken och understreck",
"username_too_long": "Användarnamnet är för långt (kan inte vara längre än 30 tecken)",
"email_invalid": "Detta är inte en giltig e-postadress",
"password_too_short": "Lösenordet är för kort (det måste vara minst 8 tecken)"
}
}
},
"server_rules": {
"title": "Some ground rules.",
"subtitle": "These are set and enforced by the %s moderators.",
"prompt": "By continuing, youre subject to the terms of service and privacy policy for %s.",
"terms_of_service": "terms of service",
"title": "Några grundregler.",
"subtitle": "Dessa sätts och verkställs av moderatorerna på %s.",
"prompt": "Genom att fortsätta omfattas du av villkoren för tjänsten och sekretesspolicyn för %s.",
"terms_of_service": "användarvillkor",
"privacy_policy": "integritetspolicy",
"button": {
"confirm": "I Agree"
"confirm": "Jag godkänner"
}
},
"confirm_email": {
"title": "One last thing.",
"subtitle": "Tap the link we emailed to you to verify your account.",
"title": "En sista sak.",
"subtitle": "Tryck på länken vi e-postade till dig för att verifiera ditt konto.",
"button": {
"open_email_app": "Open Email App",
"resend": "Resend"
"open_email_app": "Öppna epostappen",
"resend": "Skicka igen"
},
"dont_receive_email": {
"title": "Check your email",
"description": "Check if your email address is correct as well as your junk folder if you havent.",
"resend_email": "Resend Email"
"title": "Kolla din e-post",
"description": "Kontrollera om din e-postadress är korrekt samt din skräppostmapp om du inte har gjort det.",
"resend_email": "Skicka e-postmeddelande igen"
},
"open_email_app": {
"title": "Check your inbox.",
"description": "We just sent you an email. Check your junk folder if you havent.",
"mail": "Mail",
"open_email_client": "Open Email Client"
"title": "Kolla din inkorg.",
"description": "Vi har precis skickat ett e-postmeddelande till dig. Kontrollera din skräpmapp om du inte har gjort det.",
"mail": "E-post",
"open_email_client": "Öppna e-postklient"
}
},
"home_timeline": {
"title": "Home",
"title": "Hem",
"navigation_bar_state": {
"offline": "Offline",
"new_posts": "See new posts",
"published": "Published!",
"Publishing": "Publishing post..."
"new_posts": "Se nya inlägg",
"published": "Publicerad!",
"Publishing": "Publicerar inlägget..."
}
},
"suggestion_account": {
"title": "Find People to Follow",
"follow_explain": "When you follow someone, youll see their posts in your home feed."
"title": "Hitta personer att följa",
"follow_explain": "När du följer någon, kommer du att se deras inlägg i ditt hemflöde."
},
"compose": {
"title": {
"new_post": "New Post",
"new_reply": "New Reply"
"new_post": "Nytt inlägg",
"new_reply": "Nytt svar"
},
"media_selection": {
"camera": "Take Photo",
"camera": "Ta foto",
"photo_library": "Fotobibliotek",
"browse": "Bläddra"
},
"content_input_placeholder": "Type or paste whats on your mind",
"content_input_placeholder": "Skriv eller klistra in vad du har på hjärtat",
"compose_action": "Publicera",
"replying_to_user": "replying to %s",
"replying_to_user": "svarar %s",
"attachment": {
"photo": "photo",
"photo": "foto",
"video": "video",
"attachment_broken": "This %s is broken and cant be\nuploaded to Mastodon.",
"description_photo": "Describe the photo for the visually-impaired...",
"description_video": "Describe the video for the visually-impaired..."
"attachment_broken": "Denna %s är trasig och kan inte\nladdas upp till Mastodon.",
"description_photo": "Beskriv fotot för synskadade...",
"description_video": "Beskriv videon för de synskadade..."
},
"poll": {
"duration_time": "Varaktighet: %s",
"thirty_minutes": "30 minuter",
"one_hour": "1 Hour",
"six_hours": "6 Hours",
"one_day": "1 Day",
"three_days": "3 Days",
"seven_days": "7 Days",
"option_number": "Option %ld"
"one_hour": "1 timme",
"six_hours": "6 timmar",
"one_day": "1dag",
"three_days": "3 dagar",
"seven_days": "7 dagar",
"option_number": "Alternativ %ld"
},
"content_warning": {
"placeholder": "Write an accurate warning here..."
"placeholder": "Skriv en noggrann varning här..."
},
"visibility": {
"public": "Public",
"unlisted": "Unlisted",
"private": "Followers only",
"direct": "Only people I mention"
"public": "Publik",
"unlisted": "Olistad",
"private": "Endast följare",
"direct": "Bara personer jag nämner"
},
"auto_complete": {
"space_to_add": "Space to add"
"space_to_add": "Mellanslag att lägga till"
},
"accessibility": {
"append_attachment": "Add Attachment",
"append_poll": "Add Poll",
"remove_poll": "Remove Poll",
"custom_emoji_picker": "Custom Emoji Picker",
"enable_content_warning": "Enable Content Warning",
"disable_content_warning": "Disable Content Warning",
"post_visibility_menu": "Post Visibility Menu"
"append_attachment": "Lägg till bilaga",
"append_poll": "Lägg till omröstning",
"remove_poll": "Ta bort omröstning",
"custom_emoji_picker": "Anpassad emoji-väljare",
"enable_content_warning": "Aktivera innehållsvarning",
"disable_content_warning": "Inaktivera innehållsvarning",
"post_visibility_menu": "Inläggssynlighetsmeny"
},
"keyboard": {
"discard_post": "Discard Post",
"publish_post": "Publish Post",
"toggle_poll": "Toggle Poll",
"toggle_content_warning": "Toggle Content Warning",
"append_attachment_entry": "Add Attachment - %s",
"select_visibility_entry": "Select Visibility - %s"
"discard_post": "Kasta inlägget",
"publish_post": "Publicerar inlägget",
"toggle_poll": "Växla omröstning",
"toggle_content_warning": "Växla innehållsvarning",
"append_attachment_entry": "Lägg till bilaga - %s",
"select_visibility_entry": "Välj synlighet - %s"
}
},
"profile": {
"dashboard": {
"posts": "posts",
"following": "following",
"followers": "followers"
"posts": "inlägg",
"following": "följer",
"followers": "följare"
},
"fields": {
"add_row": "Add Row",
"add_row": "Lägg till rad",
"placeholder": {
"label": "Label",
"content": "Content"
"label": "Etikett",
"content": "Innehåll"
}
},
"segmented_control": {
"posts": "Posts",
"replies": "Replies",
"posts_and_replies": "Posts and Replies",
"posts": "Inlägg",
"replies": "Svar",
"posts_and_replies": "Inlägg och svar",
"media": "Media",
"about": "Om"
},
"relationship_action_alert": {
"confirm_mute_user": {
"title": "Mute Account",
"message": "Confirm to mute %s"
"title": "Tysta konto",
"message": "Bekräfta för att tysta %s"
},
"confirm_unmute_user": {
"title": "Unmute Account",
"message": "Confirm to unmute %s"
"title": "Avtysta konto",
"message": "Bekräfta för att avtysta %s"
},
"confirm_block_user": {
"title": "Block Account",
"message": "Confirm to block %s"
"title": "Blockera konto",
"message": "Bekräfta för att blockera %s"
},
"confirm_unblock_user": {
"title": "Unblock Account",
"message": "Confirm to unblock %s"
"title": "Avblockera konto",
"message": "Bekräfta för att avblockera %s"
}
},
"accessibility": {
"show_avatar_image": "Show avatar image",
"edit_avatar_image": "Edit avatar image",
"show_banner_image": "Show banner image",
"double_tap_to_open_the_list": "Double tap to open the list"
"show_avatar_image": "Visa profilbild",
"edit_avatar_image": "Redigera profilbild",
"show_banner_image": "Visa banner",
"double_tap_to_open_the_list": "Dubbeltryck för att öppna listan"
}
},
"follower": {
"footer": "Followers from other servers are not displayed."
"footer": "Följare från andra servrar visas inte."
},
"following": {
"footer": "Follows from other servers are not displayed."
"footer": "Följda på andra servrar visas inte."
},
"search": {
"title": "Search",
"title": "Sök",
"search_bar": {
"placeholder": "Search hashtags and users",
"placeholder": "Sök hashtaggar och användare",
"cancel": "Avbryt"
},
"recommend": {
"button_text": "See All",
"button_text": "Visa alla",
"hash_tag": {
"title": "Trending on Mastodon",
"description": "Hashtags that are getting quite a bit of attention",
"people_talking": "%s people are talking"
"title": "Trendar på Mastodon",
"description": "Hashtaggar som får en hel del uppmärksamhet",
"people_talking": "%s personer diskuterar"
},
"accounts": {
"title": "Accounts you might like",
"description": "You may like to follow these accounts",
"title": "Konton som du kanske gillar",
"description": "Du kanske vill följa dessa konton",
"follow": "Följ"
}
},
"searching": {
"segment": {
"all": "All",
"people": "People",
"hashtags": "Hashtags",
"posts": "Posts"
"all": "Allt",
"people": "Personer",
"hashtags": "Hashtaggar",
"posts": "Inlägg"
},
"empty_state": {
"no_results": "Inga resultat"
},
"recent_search": "Recent searches",
"recent_search": "Senaste sökningarna",
"clear": "Rensa"
}
},
"discovery": {
"tabs": {
"posts": "Posts",
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
"posts": "Inlägg",
"hashtags": "Hashtaggar",
"news": "Nyheter",
"for_you": "För dig"
},
"intro": "Detta är de inlägg som engagerar i ditt hörn av Mastodon."
},
"favorite": {
"title": "Your Favorites"
"title": "Dina favoriter"
},
"notification": {
"title": {
"Everything": "Everything",
"Mentions": "Mentions"
"Everything": "Allting",
"Mentions": "Omnämningar"
},
"notification_description": {
"followed_you": "followed you",
"favorited_your_post": "favorited your post",
"reblogged_your_post": "reblogged your post",
"followed_you": "följde dig",
"favorited_your_post": "favoriserade ditt inlägg",
"reblogged_your_post": "ompostade ditt inlägg",
"mentioned_you": "nämnde dig",
"request_to_follow_you": "request to follow you",
"poll_has_ended": "poll has ended"
"request_to_follow_you": "begär att följa dig",
"poll_has_ended": "omröstningen har avslutats"
},
"keyobard": {
"show_everything": "Show Everything",
"show_mentions": "Show Mentions"
"show_everything": "Visa allt",
"show_mentions": "Visa omnämningar"
}
},
"thread": {
"back_title": "Post",
"title": "Post from %s"
"back_title": "Inlägg",
"title": "Inlägg från %s"
},
"settings": {
"title": "Inställningar",
"section": {
"appearance": {
"title": "Appearance",
"automatic": "Automatic",
"light": "Always Light",
"dark": "Always Dark"
"title": "Utseende",
"automatic": "Automatisk",
"light": "Alltid ljus",
"dark": "Alltid mörk"
},
"look_and_feel": {
"title": "Look and Feel",
"use_system": "Use System",
"really_dark": "Really Dark",
"sorta_dark": "Sorta Dark",
"title": "Utseende och känsla",
"use_system": "Följ systeminställningarna",
"really_dark": "Verkligen mörk",
"sorta_dark": "Ganska mörk",
"light": "Ljust"
},
"notifications": {
"title": "Notifications",
"favorites": "Favorites my post",
"follows": "Follows me",
"boosts": "Reblogs my post",
"mentions": "Mentions me",
"title": "Aviseringar",
"favorites": "Favoriserar mitt inlägg",
"follows": "Följer mig",
"boosts": "Ompostar mitt inlägg",
"mentions": "Nämner mig",
"trigger": {
"anyone": "anyone",
"follower": "a follower",
"follow": "anyone I follow",
"noone": "no one",
"title": "Notify me when"
"anyone": "alla",
"follower": "en följare",
"follow": "någon jag följer",
"noone": "ingen",
"title": "Meddela mig när"
}
},
"preference": {
"title": "Preferences",
"true_black_dark_mode": "True black dark mode",
"title": "Inställningar",
"true_black_dark_mode": "True black-mörkt läge",
"disable_avatar_animation": "Inaktivera animerade avatarer",
"disable_emoji_animation": "Inaktivera animerade emojis",
"using_default_browser": "Use default browser to open links",
"open_links_in_mastodon": "Open links in Mastodon"
"using_default_browser": "Använd standardwebbläsare för att öppna länkar",
"open_links_in_mastodon": "Öppna länkar i Mastodon"
},
"boring_zone": {
"title": "The Boring Zone",
"title": "Den tråkiga zonen",
"account_settings": "Kontoinställningar",
"terms": "Användarvillkor",
"privacy": "Integritetspolicy"
},
"spicy_zone": {
"title": "The Spicy Zone",
"clear": "Clear Media Cache",
"title": "Den spännande zonen",
"clear": "Rensa mediacache",
"signout": "Logga ut"
}
},
"footer": {
"mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
"mastodon_description": "Mastodon är programvara med öppen källkod. Du kan rapportera problem via GitHub på %s (%s)"
},
"keyboard": {
"close_settings_window": "Close Settings Window"
"close_settings_window": "Stäng inställningsfönstret"
}
},
"report": {
"title_report": "Report",
"title_report": "Rapportera",
"title": "Rapportera %s",
"step1": "Steg 1 av 2",
"step2": "Steg 2 av 2",
"content1": "Are there any other posts 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.",
"content1": "Finns det några andra inlägg du vill lägga till i rapporten?",
"content2": "Finns det något som moderatorerna borde känna till om denna rapport?",
"report_sent_title": "Tack för din rapport, vi ska titta på det.",
"send": "Skicka rapport",
"skip_to_send": "Send without comment",
"text_placeholder": "Type or paste additional comments",
"reported": "REPORTED"
"skip_to_send": "Skicka utan kommentar",
"text_placeholder": "Skriv eller klistra in ytterligare kommentarer",
"reported": "RAPPORTERAD"
},
"preview": {
"keyboard": {
"close_preview": "Close Preview",
"show_next": "Show Next",
"show_previous": "Show Previous"
"close_preview": "Stäng förhandsvisning",
"show_next": "Visa nästa",
"show_previous": "Visa föregående"
}
},
"account_list": {
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
"dismiss_account_switcher": "Dismiss Account Switcher",
"tab_bar_hint": "Nuvarande vald profil: %s. Dubbeltryck och håll för att visa kontoväxlare",
"dismiss_account_switcher": "Stäng kontoväxlare",
"add_account": "Lägg till konto"
},
"wizard": {
"new_in_mastodon": "New in Mastodon",
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
"accessibility_hint": "Double tap to dismiss this wizard"
"new_in_mastodon": "Nytt i Mastodon",
"multiple_account_switch_intro_description": "Växla mellan flera konton genom att hålla inne profilknappen.",
"accessibility_hint": "Dubbeltryck för att avvisa den här guiden"
}
}
}

View File

@ -1,6 +1,6 @@
{
"NSCameraUsageDescription": "Used to take photo for post status",
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
"NewPostShortcutItemTitle": "New Post",
"SearchShortcutItemTitle": "Search"
"NSCameraUsageDescription": "Används för att ta foto till inlägg",
"NSPhotoLibraryAddUsageDescription": "Används för att spara foto till Bilder",
"NewPostShortcutItemTitle": "Nytt inlägg",
"SearchShortcutItemTitle": "Sök"
}

View File

@ -129,6 +129,7 @@
"show_post": "แสดงโพสต์",
"show_user_profile": "แสดงโปรไฟล์ผู้ใช้",
"content_warning": "คำเตือนเนื้อหา",
"sensitive_content": "เนื้อหาที่ละเอียดอ่อน",
"media_content_warning": "แตะที่ใดก็ตามเพื่อเปิดเผย",
"tap_to_reveal": "แตะเพื่อเปิดเผย",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "แฮชแท็ก",
"news": "ข่าว",
"for_you": "สำหรับคุณ"
}
},
"intro": "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ"
},
"favorite": {
"title": "รายการโปรดของคุณ"

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>Okunmamış 1 bildirim</string>
<key>other</key>
<string>Okunmamış %ld bildirim</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_exceeds</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@character_count@ karakter limiti aşıyor</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 karakter</string>
<key>other</key>
<string>%ld karakter</string>
</dict>
</dict>
<key>a11y.plural.count.input_limit_remains</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@character_count@ karakter limiti var</string>
<key>character_count</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>1 karakter</string>
<key>other</key>
<string>%ld karakter</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>gönderi</string>
<key>other</key>
<string>gönderi</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 gönderi</string>
<key>other</key>
<string>%ld gönderi</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 favori</string>
<key>other</key>
<string>%ld favori</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 yeniden paylaşım</string>
<key>other</key>
<string>%ld yeniden paylaşım</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 yanıt</string>
<key>other</key>
<string>%ld yanıt</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 oy</string>
<key>other</key>
<string>%ld oy</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 oy veren</string>
<key>other</key>
<string>%ld oy veren</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 kişi konuşuyor</string>
<key>other</key>
<string>%ld kişi konuşuyor</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 takip edilen</string>
<key>other</key>
<string>%ld takip edilen</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 takipçi</string>
<key>other</key>
<string>%ld takipçi</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 yıl kaldı</string>
<key>other</key>
<string>%ld yıl kaldı</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 ay kaldı</string>
<key>other</key>
<string>%ld ay kaldı</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 gün kaldı</string>
<key>other</key>
<string>%ld gün kaldı</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 saat kaldı</string>
<key>other</key>
<string>%ld saat kaldı</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 dakika kaldı</string>
<key>other</key>
<string>%ld dakika kaldı</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 saniye kaldı</string>
<key>other</key>
<string>%ld saniye kaldı</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>1 yıl önce</string>
<key>other</key>
<string>%ld yıl önce</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>1 ay önce</string>
<key>other</key>
<string>%ld ay önce</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>1 gün önce</string>
<key>other</key>
<string>%ld gün önce</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>1 saat önce</string>
<key>other</key>
<string>%ld saat önce</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>1 dakika önce</string>
<key>other</key>
<string>%ld dakika önce</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>1 saniye önce</string>
<key>other</key>
<string>%ld saniye önce</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,618 @@
{
"common": {
"alerts": {
"common": {
"please_try_again": "Lütfen tekrar deneyin.",
"please_try_again_later": "Lütfen daha sonra tekrar deneyin."
},
"sign_up_failure": {
"title": "Kaydolma Başarısız"
},
"server_error": {
"title": "Sunucu Hatası"
},
"vote_failure": {
"title": "Oy Verme Başarısız",
"poll_ended": "Anket bitti"
},
"discard_post_content": {
"title": "Taslağı Sil",
"message": "Yazdığın gönderiyi paylaşmadan silmek istiyor musun?"
},
"publish_post_failure": {
"title": "Paylaşılamadı",
"message": "Gönderi paylaşılamadı. Lütfen internet bağlantını kontrol et.",
"attachments_message": {
"video_attach_with_photo": "İçeriğinde görseller olan bir gönderiye video eklenemez.",
"more_than_one_video": "Gönderiye birden fazla video eklenemez."
}
},
"edit_profile_failure": {
"title": "Profil Düzenleme Hatası",
"message": "Profil düzenlenemedi. Lütfen tekrar deneyin."
},
"sign_out": {
"title": "Oturumu Kapat",
"message": "Oturumu kapatmak istediğinize emin misiniz?",
"confirm": "Oturumu Kapat"
},
"block_domain": {
"title": "%s alan adını tamamen engellemek istediğine gerçekten emin misiniz? Pek çok durumda o alan adından birkaç kişiyi engellemek ve sessize almak yeterlidir ve tercih edilir. Engellediğinizde bu alan adından herhangi bir içerik görmeyeceksiniz ve o alan adından olan takipçileriniz silinecek.",
"block_entire_domain": "Alan Adını Engelle"
},
"save_photo_failure": {
"title": "Görsel Kaydetme Hatası",
"message": "Görseli kaydetmek için lütfen galeri erişim iznini aktifleştirin."
},
"delete_post": {
"title": "Gönderiyi Sil",
"message": "Bu gönderiyi silmek istediğinize emin misiniz?"
},
"clean_cache": {
"title": "Önbelleği Temizle",
"message": "%s boyutunda önbellek temizlendi."
}
},
"controls": {
"actions": {
"back": "Geri",
"next": "İleri",
"previous": "Önceki",
"open": "Aç",
"add": "Ekle",
"remove": "Kaldır",
"edit": "Düzenle",
"save": "Kaydet",
"ok": "Tamam",
"done": "Kapat",
"confirm": "Onayla",
"continue": "Devam et",
"compose": "Yaz",
"cancel": "İptal et",
"discard": "Vazgeç",
"try_again": "Tekrar Deneyin",
"take_photo": "Fotoğraf Çek",
"save_photo": "Fotoğrafı Kaydet",
"copy_photo": "Fotoğrafı Kopyala",
"sign_in": "Giriş Yap",
"sign_up": "Kaydol",
"see_more": "Daha Fazla Gör",
"preview": "Önizleme",
"share": "Paylaş",
"share_user": "%s ile paylaş",
"share_post": "Gönderiyi Paylaş",
"open_in_safari": "Safari'de Aç",
"open_in_browser": "Tarayıcıda Aç",
"find_people": "Takip etmek için birkaç kişi bul",
"manually_search": "Onun yerine manuel olarak ara",
"skip": "Atla",
"reply": "Yanıtla",
"report_user": "%s kişisini bildir",
"block_domain": "%s kişisini engelle",
"unblock_domain": "%s kişisinin engelini kaldır",
"settings": "Ayarlar",
"delete": "Sil"
},
"tabs": {
"home": "Ana Sayfa",
"search": "Arama",
"notification": "Bildirimler",
"profile": "Profil"
},
"keyboard": {
"common": {
"switch_to_tab": "Geç: %s",
"compose_new_post": "Yeni Gönderi Yaz",
"show_favorites": "Favorilerimi Göster",
"open_settings": "Ayarları Aç"
},
"timeline": {
"previous_status": "Önceki Gönderi",
"next_status": "Sonraki Gönderi",
"open_status": "Gönderiyi Aç",
"open_author_profile": "Yazarın Profilini Aç",
"open_reblogger_profile": "Yeniden Paylaşanın Profilini Aç",
"reply_status": "Gönderiyi Yanıtla",
"toggle_reblog": "Gönderiyi yeniden paylaşma durumunu değiştir",
"toggle_favorite": "Gönderiyi favorileme durumunu değiştir",
"toggle_content_warning": "İçerik Uyarısı durumunu değiştir",
"preview_image": "Görseli Önizle"
},
"segmented_control": {
"previous_section": "Önceki Seçim",
"next_section": "Sonraki Bölüm"
}
},
"status": {
"user_reblogged": "%s yeniden paylaştı",
"user_replied_to": "%s kullanıcısına yanıt verdi",
"show_post": "Gönderiyi Göster",
"show_user_profile": "Kullanıcı profilini göster",
"content_warning": "İçerik Uyarısı",
"sensitive_content": "Hassas İçerik",
"media_content_warning": "Göstermek için herhangi bir yere basın",
"tap_to_reveal": "Göstermek için basın",
"poll": {
"vote": "Oy ver",
"closed": "Kapandı"
},
"actions": {
"reply": "Yanıtla",
"reblog": "Yeniden paylaş",
"unreblog": "Yeniden paylaşımı geri al",
"favorite": "Favorile",
"unfavorite": "Favorilerden Çıkar",
"menu": "Menü",
"hide": "Gizle",
"show_image": "Görüntüyü göster",
"show_gif": "GIF'i göster",
"show_video_player": "Video oynatıcıyı göster",
"tap_then_hold_to_show_menu": "Menüyü göstermek için dokunun ve basılı tutun"
},
"tag": {
"url": "Bağlantı",
"mention": "Bahset",
"link": "Bağlantı",
"hashtag": "Etiket",
"email": "E-posta",
"emoji": "Emoji"
},
"visibility": {
"unlisted": "Bu gönderiyi herkes görebilir, fakat herkese açık zaman tünelinde gösterilmez.",
"private": "Sadece gönderi sahibinin takipçileri bu gönderiyi görebilir.",
"private_from_me": "Sadece benim takipçilerim bu gönderiyi görebilir.",
"direct": "Sadece bahsedilen kullanıcı bu gönderiyi görebilir."
}
},
"friendship": {
"follow": "Takip et",
"following": "Takip ediliyor",
"request": "İstek",
"pending": "Bekliyor",
"block": "Engelle",
"block_user": "%s kişisini engelle",
"block_domain": "%s kişisini engelle",
"unblock": "Engeli kaldır",
"unblock_user": "%s kişisinin engelini kaldır",
"blocked": "Engellendi",
"mute": "Sessize al",
"mute_user": "Sustur %s",
"unmute": "Susturmayı kaldır",
"unmute_user": "Sesini aç %s",
"muted": "Susturuldu",
"edit_info": "Bilgiyi Düzenle"
},
"timeline": {
"filtered": "Filtrelenmiş",
"timestamp": {
"now": "Şimdi"
},
"loader": {
"load_missing_posts": "Daha fazla gönderi yükle",
"loading_missing_posts": "Daha fazla gönderi yükleniyor...",
"show_more_replies": "Daha fazla yanıt görüntüe"
},
"header": {
"no_status_found": "Hiçbir Gönderi Bulunamadı",
"blocking_warning": "Bu kişinin engelini kaldırana kadar\nonun profilini göremezsiniz.\nBu kişiye göre profiliniz böyle gözüküyor.",
"user_blocking_warning": "%s kişisinin engelini kaldırana kadar\nonun profilini göremezsiniz.\nBu kişiye göre profiliniz böyle gözüküyor.",
"blocked_warning": "Bu kişi sizin engelinizi kaldırana\nkadar onun profilini göremezsiniz.",
"user_blocked_warning": "%s kişisi sizin engelinizi kaldırana\nkadar onun profilini göremezsiniz.",
"suspended_warning": "Bu kullanıcı askıya alındı.",
"user_suspended_warning": "%s kişisinin hesabı askıya alındı."
}
}
}
},
"scene": {
"welcome": {
"slogan": "Sosyal ağ,\ntekrardan ellerinizde.",
"get_started": "Başlayın",
"log_in": "Oturum Aç"
},
"server_picker": {
"title": "Mastodon, farklı topluluklardaki kullanıcılardan oluşur.",
"subtitle": "İlgi alanlarınıza, bölgenize veya genel amaçlı bir topluluk seçin.",
"subtitle_extend": "İlgi alanlarınıza, bölgenize veya genel amaçlı bir topluluk seçin. Her topluluk tamamen bağımsız bir kuruluş veya kişi tarafından işletilmektedir.",
"button": {
"category": {
"all": "Tümü",
"all_accessiblity_description": "Kategori: Tümü",
"academia": "akademi",
"activism": "aktivizm",
"food": "yiyecek",
"furry": "furry",
"games": "oyunlar",
"general": "genel",
"journalism": "gazetecilik",
"lgbt": "lgbt",
"regional": "bölgesel",
"art": "sanat",
"music": "müzik",
"tech": "teknoloji"
},
"see_less": "Daha Az Göster",
"see_more": "Daha Fazla Gör"
},
"label": {
"language": "DİL",
"users": "KULLANICILAR",
"category": "KATEGORİ"
},
"input": {
"placeholder": "Toplulukları ara"
},
"empty_state": {
"finding_servers": "Mevcut sunucular aranıyor...",
"bad_network": "Veriyi yüklerken bir hata oluştu. Lütfen internet bağlantınızı kontrol edin.",
"no_results": "Sonuç yok"
}
},
"register": {
"title": "%s için kurulumunuzu yapalım",
"input": {
"avatar": {
"delete": "Sil"
},
"username": {
"placeholder": "kullanıcı adı",
"duplicate_prompt": "Bu kullanıcı adı alınmış."
},
"display_name": {
"placeholder": "görünen ad"
},
"email": {
"placeholder": "e-posta"
},
"password": {
"placeholder": "parola",
"require": "Parolanızda en azından şunlar olmalı:",
"character_limit": "8 karakter",
"accessibility": {
"checked": "işaretli",
"unchecked": "işaretsiz"
},
"hint": "Parolanız en az sekiz karakter içermelidir"
},
"invite": {
"registration_user_invite_request": "Neden katılmak istiyorsun?"
}
},
"error": {
"item": {
"username": "Kullanıcı adı",
"email": "E-posta",
"password": "Parola",
"agreement": "Anlaşma",
"locale": "Locale",
"reason": "Sebep"
},
"reason": {
"blocked": "%s izin verilmeyen bir e-posta sağlayıcı içeriyor",
"unreachable": "%s mevcut değil",
"taken": "%s zaten kullanımda",
"reserved": "%s rezerve edilen bir kelime",
"accepted": "%s kabul edilmelidir",
"blank": "%s gerekli",
"invalid": "%s geçersiz",
"too_long": "%s çok uzun",
"too_short": "%s çok kısa",
"inclusion": "%s desteklenen bir değer değil"
},
"special": {
"username_invalid": "Kullanıcı adı yalnızca alfasayısal karakterler ve alt çizgiler içerebilir",
"username_too_long": "Kullanıcı adı çok uzun (30 karakterden uzun olamaz)",
"email_invalid": "Bu geçerli bir e-posta adresi değil",
"password_too_short": "Şifre çok kısa (en az 8 karakter olmalı)"
}
}
},
"server_rules": {
"title": "Bazı temel kurallar.",
"subtitle": "Bunlar, %s moderatörleri tarafından ayarlanmış ve uygulanmıştır.",
"prompt": "Devam ederek, %s için kullanım şartlarını ve gizlilik politikasını kabul etmiş olursunuz.",
"terms_of_service": "kullanım şartları",
"privacy_policy": "gizlilik politikası",
"button": {
"confirm": "Kabul Ediyorum"
}
},
"confirm_email": {
"title": "Son bir şey.",
"subtitle": "Hesabınızı doğrulamak için size e-postayla gönderdiğimiz bağlantıya dokunun.",
"button": {
"open_email_app": "E-posta Uygulamasını Aç",
"resend": "Yeniden gönder"
},
"dont_receive_email": {
"title": "Posta kutunuzu kontrol edin",
"description": "E-posta adresinizin doğru olup olmadığını ve doğru ise gereksiz klasörünüzü kontrol edin.",
"resend_email": "E-postayı Yeniden Gönder"
},
"open_email_app": {
"title": "Gelen kutunuzu kontrol edin.",
"description": "Size bir e-posta gönderdik. Eğer e-postayı almadıysanız, gereksiz klasörünü kontrol edin.",
"mail": "Posta",
"open_email_client": "E-posta İstemcisini Aç"
}
},
"home_timeline": {
"title": "Ana Sayfa",
"navigation_bar_state": {
"offline": "Çevrimdışı",
"new_posts": "Yeni gönderiler gör",
"published": "Yayınlandı!",
"Publishing": "Gönderi yayınlanıyor..."
}
},
"suggestion_account": {
"title": "Takip Edecek İnsanlar Bul",
"follow_explain": "Birisini takip ettiğinizde, ana sayfanızda o kişinin gönderilerini görürsünüz."
},
"compose": {
"title": {
"new_post": "Yeni Gönderi",
"new_reply": "Yeni Yanıt"
},
"media_selection": {
"camera": "Fotoğraf Çek",
"photo_library": "Fotoğraf Albümü",
"browse": "Göz at"
},
"content_input_placeholder": "Aklınızdan geçenleri yazın veya yapıştırın",
"compose_action": "Yayınla",
"replying_to_user": "yanıtlanıyor: %s",
"attachment": {
"photo": "fotoğraf",
"video": "video",
"attachment_broken": "Bu %s bozuk ve Mastodon'a\nyüklenemiyor.",
"description_photo": "Görme engelliler için fotoğrafı tarif edin...",
"description_video": "Görme engelliler için videoyu tarif edin..."
},
"poll": {
"duration_time": "Süre: %s",
"thirty_minutes": "30 dakika",
"one_hour": "1 Saat",
"six_hours": "6 Saat",
"one_day": "1 Gün",
"three_days": "3 Gün",
"seven_days": "7 Gün",
"option_number": "Seçenek %ld"
},
"content_warning": {
"placeholder": "Buraya kesin bir uyarı yazın..."
},
"visibility": {
"public": "Herkese açık",
"unlisted": "Listelenmemiş",
"private": "Yalnızca takipçiler",
"direct": "Sadece bahsettiğim insanlar"
},
"auto_complete": {
"space_to_add": "Eklemek için boşluk tuşuna basın"
},
"accessibility": {
"append_attachment": "Dosya Ekle",
"append_poll": "Anket Ekle",
"remove_poll": "Anketi Kaldır",
"custom_emoji_picker": "Özel Emoji Seçici",
"enable_content_warning": "İçerik Uyarısını Etkinleştir",
"disable_content_warning": "İçerik Uyarısını Kapat",
"post_visibility_menu": "Gönderi Görünürlüğü Menüsü"
},
"keyboard": {
"discard_post": "Gönderiyi İptal Et",
"publish_post": "Gönderiyi Yayınla",
"toggle_poll": "Anketi Aç/Kapat",
"toggle_content_warning": "İçerik Uyarısı durumunu değiştir",
"append_attachment_entry": "Dosya Ekle - %s",
"select_visibility_entry": "Görünürlüğü Seç - %s"
}
},
"profile": {
"dashboard": {
"posts": "gönderiler",
"following": "takip ediliyor",
"followers": "takipçi"
},
"fields": {
"add_row": "Satır Ekle",
"placeholder": {
"label": "Etiket",
"content": "İçerik"
}
},
"segmented_control": {
"posts": "Gönderiler",
"replies": "Yanıtlar",
"posts_and_replies": "Gönderiler ve Yanıtlar",
"media": "Medya",
"about": "Hakkında"
},
"relationship_action_alert": {
"confirm_mute_user": {
"title": "Hesabı sustur",
"message": "%s susturmak için onaylayın"
},
"confirm_unmute_user": {
"title": "Susturmayı kaldır",
"message": "%s susturmasını kaldırmak için onaylayın"
},
"confirm_block_user": {
"title": "Hesabı Engelle",
"message": "%s engellemeyi onayla"
},
"confirm_unblock_user": {
"title": "Hesabın Engelini Kaldır",
"message": "%s engellemeyi kaldırmayı onaylayın"
}
},
"accessibility": {
"show_avatar_image": "Profil resmini göster",
"edit_avatar_image": "Profil fotoğrafını düzenle",
"show_banner_image": "Kapak fotoğrafını göster",
"double_tap_to_open_the_list": "Listeyi açmak için çift tıklayın"
}
},
"follower": {
"footer": "Diğer sunucudaki takipçiler gösterilemiyor."
},
"following": {
"footer": "Diğer sunucudaki takip edilenler gösterilemiyor."
},
"search": {
"title": "Arama",
"search_bar": {
"placeholder": "Etiketleri ve kullanıcıları ara",
"cancel": "İptal"
},
"recommend": {
"button_text": "Tümünü Gör",
"hash_tag": {
"title": "Mastodon'da Popüler",
"description": "Oldukça ilgi gören etiketler",
"people_talking": "%s kişi konuşuyor"
},
"accounts": {
"title": "Hoşunuza gidebilecek hesaplar",
"description": "Bu hesapları takip etmek isteyebilirsiniz",
"follow": "Takip et"
}
},
"searching": {
"segment": {
"all": "Tümü",
"people": "İnsanlar",
"hashtags": "Etiketler",
"posts": "Gönderiler"
},
"empty_state": {
"no_results": "Sonuç yok"
},
"recent_search": "Son aramalar",
"clear": "Temizle"
}
},
"discovery": {
"tabs": {
"posts": "Gönderiler",
"hashtags": "Etiketler",
"news": "Haberler",
"for_you": "Senin İçin"
},
"intro": "Bunlar, Mastodon'un köşesinde ilgi çeken gönderilerdir."
},
"favorite": {
"title": "Favorilerin"
},
"notification": {
"title": {
"Everything": "Her şey",
"Mentions": "Bahsetmeler"
},
"notification_description": {
"followed_you": "seni takip etti",
"favorited_your_post": "gönderini favoriledi",
"reblogged_your_post": "gönderini yeniden paylaştı",
"mentioned_you": "senden bahsetti",
"request_to_follow_you": "size takip isteği gönderdi",
"poll_has_ended": "anket sona erdi"
},
"keyobard": {
"show_everything": "Her Şeyi Göster",
"show_mentions": "Bahsetmeleri Göster"
}
},
"thread": {
"back_title": "Gönderi",
"title": "%s kullanıcının gönderisi"
},
"settings": {
"title": "Ayarlar",
"section": {
"appearance": {
"title": "Görünüm",
"automatic": "Otomatik",
"light": "Daima Açık",
"dark": "Daima Koyu"
},
"look_and_feel": {
"title": "Look and Feel",
"use_system": "Sistem İle Aynı",
"really_dark": "Gerçek Koyu",
"sorta_dark": "Hafif Koyu",
"light": "Açık"
},
"notifications": {
"title": "Bildirimler",
"favorites": "Gönderimi favorilerine eklediğinde",
"follows": "Beni takip ettiğinde",
"boosts": "Gönderimi yeniden paylaştığında",
"mentions": "Benden bahsettiğinde",
"trigger": {
"anyone": "herhangi biri",
"follower": "bir takipçim",
"follow": "takip ettiğim biri",
"noone": "bilgilendirme",
"title": "Beni şu durumda bilgilendir: "
}
},
"preference": {
"title": "Tercihler",
"true_black_dark_mode": "Tam siyah koyu modu",
"disable_avatar_animation": "Hareketli avatarları devre dışı bırak",
"disable_emoji_animation": "Hareketli emojileri devre dışı bırak",
"using_default_browser": "Bağlantıları varsayılan tarayıcıda aç",
"open_links_in_mastodon": "Bağlantıları Mastodon içinden aç"
},
"boring_zone": {
"title": "Sıkıcı Bölge",
"account_settings": "Hesap Ayarları",
"terms": "Hizmet Şartları",
"privacy": "Gizlilik Politikası"
},
"spicy_zone": {
"title": "Tehlikeli bölge",
"clear": "Medya Önbelleğini Temizle",
"signout": "Oturumu Kapat"
}
},
"footer": {
"mastodon_description": "Mastodon açık kaynaklı bir yazılımdır. GitHub'dan %s (%s) üzerinden katkıda bulunabilir veya sorunları bildirebilirsiniz"
},
"keyboard": {
"close_settings_window": "Ayarlar Penceresini Kapat"
}
},
"report": {
"title_report": "Raporla",
"title": "%s kişisini bildir",
"step1": "Adım 1/2",
"step2": "Adım 2/2",
"content1": "Bu rapora eklemek istediğiniz başka gönderiler var mı?",
"content2": "Bu rapor hakkında moderatörlerin bilmesi gerektiği bir şey var mı?",
"report_sent_title": "Rapor için teşekkürler, bununla ilgileneceğiz.",
"send": "Raporu Gönder",
"skip_to_send": "Yorum yapmadan gönder",
"text_placeholder": "Ek yorum yazın veya yapıştırın",
"reported": "RAPORLANDI"
},
"preview": {
"keyboard": {
"close_preview": "Önizlemeyi Kapat",
"show_next": "Sonrakini Göster",
"show_previous": "Öncekini Göster"
}
},
"account_list": {
"tab_bar_hint": "Şu anki seçili profil: %s. Hesap değiştiriciyi göstermek için iki kez dokunun ve basılı tutun",
"dismiss_account_switcher": "Hesap Değiştiriciyi Kapat",
"add_account": "Hesap Ekle"
},
"wizard": {
"new_in_mastodon": "Mastodon'da Yeni",
"multiple_account_switch_intro_description": "Profil butonuna basılı tutarak birden fazla hesap arasında geçiş yapın.",
"accessibility_hint": "Bu yardımı kapatmak için çift tıklayın"
}
}
}

View File

@ -0,0 +1,6 @@
{
"NSCameraUsageDescription": "Fotoğraf çekerek durum paylaşmak için kullanılır",
"NSPhotoLibraryAddUsageDescription": "Fotoğraf Albümü'ne fotoğraf kaydetmek için kullanılır",
"NewPostShortcutItemTitle": "Yeni Gönderi",
"SearchShortcutItemTitle": "Arama"
}

View File

@ -16,7 +16,7 @@
"poll_ended": "Cuộc bình chọn đã kết thúc"
},
"discard_post_content": {
"title": "Hủy bản nháp",
"title": "Bỏ bản nháp",
"message": "Xác nhận bỏ qua nội dung tút đã viết."
},
"publish_post_failure": {
@ -129,8 +129,9 @@
"show_post": "Xem tút",
"show_user_profile": "Xem trang hồ sơ",
"content_warning": "Nội dung ẩn",
"sensitive_content": "Nội dung nhạy cảm",
"media_content_warning": "Nhấn để hiển thị",
"tap_to_reveal": "Nhấn để hiển thị",
"tap_to_reveal": "Nhấn để xem",
"poll": {
"vote": "Bình chọn",
"closed": "Kết thúc"
@ -221,7 +222,7 @@
"activism": "hoạt động xã hội",
"food": "ăn uống",
"furry": "furry",
"games": "trò chơi",
"games": "trò chơi điện tử",
"general": "chung",
"journalism": "tin tức",
"lgbt": "lgbt",
@ -360,7 +361,7 @@
},
"content_input_placeholder": "Cho thế giới biết bạn đang nghĩ gì",
"compose_action": "Đăng",
"replying_to_user": "trả lời đến %s",
"replying_to_user": "trả lời %s",
"attachment": {
"photo": "ảnh",
"video": "video",
@ -369,7 +370,7 @@
"description_video": "Mô tả video cho người khiếm thị..."
},
"poll": {
"duration_time": "Thời gian: %s",
"duration_time": "Thời hạn: %s",
"thirty_minutes": "30 phút",
"one_hour": "1 giờ",
"six_hours": "6 giờ",
@ -385,7 +386,7 @@
"public": "Công khai",
"unlisted": "Hạn chế",
"private": "Riêng tư",
"direct": "Chỉ người được nhắc đến"
"direct": "Nhắn riêng"
},
"auto_complete": {
"space_to_add": "Khoảng cách để thêm"
@ -498,7 +499,8 @@
"hashtags": "Hashtag",
"news": "Tin tức",
"for_you": "Dành cho bạn"
}
},
"intro": "Đây là những tút thu hút được sự chú ý trong góc Mastodon của bạn."
},
"favorite": {
"title": "Lượt thích"
@ -549,7 +551,7 @@
"mentions": "Nhắc đến tôi",
"trigger": {
"anyone": "ai đó",
"follower": "người theo dõi",
"follower": "người theo dõi tôi",
"follow": "người tôi theo dõi",
"noone": "không một ai",
"title": "Thông báo khi"

View File

@ -129,6 +129,7 @@
"show_post": "显示帖子",
"show_user_profile": "查看用户个人资料",
"content_warning": "内容警告",
"sensitive_content": "敏感内容",
"media_content_warning": "点击任意位置显示",
"tap_to_reveal": "点击以显示",
"poll": {
@ -494,11 +495,12 @@
},
"discovery": {
"tabs": {
"posts": "帖子",
"hashtags": "话题",
"news": "新闻",
"posts": "嘟文",
"hashtags": "话题标签",
"news": "最新消息",
"for_you": "为你推荐"
}
},
"intro": "这些嘟文在你的长毛象小宇宙中备受关注。"
},
"favorite": {
"title": "你的喜欢"

View File

@ -129,6 +129,7 @@
"show_post": "Show Post",
"show_user_profile": "Show user profile",
"content_warning": "Content Warning",
"sensitive_content": "Sensitive Content",
"media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal",
"poll": {
@ -498,7 +499,8 @@
"hashtags": "Hashtags",
"news": "News",
"for_you": "For You"
}
},
"intro": "These are the posts gaining traction in your corner of Mastodon."
},
"favorite": {
"title": "Your Favorites"

View File

@ -211,9 +211,9 @@
"log_in": "Log In"
},
"server_picker": {
"title": "Mastodon is made of users in different communities.",
"subtitle": "Pick a community based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.",
"title": "Mastodon is made of users in different servers.",
"subtitle": "Pick a server based on your interests, region, or a general purpose one.",
"subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
"button": {
"category": {
"all": "All",
@ -240,7 +240,7 @@
"category": "CATEGORY"
},
"input": {
"placeholder": "Search communities"
"placeholder": "Search servers"
},
"empty_state": {
"finding_servers": "Finding available servers...",

View File

@ -145,8 +145,6 @@
DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */; };
DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618022785A7100030EE79 /* RegisterSection.swift */; };
DB0618052785A73D0030EE79 /* RegisterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618042785A73D0030EE79 /* RegisterItem.swift */; };
DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */; };
DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */; };
DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; };
DB0A322E280EE9FD001729D2 /* DiscoveryIntroBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0A322D280EE9FD001729D2 /* DiscoveryIntroBannerView.swift */; };
DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; };
@ -400,10 +398,10 @@
DB75BF1E263C1C1B00EDBF1F /* CustomScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB75BF1D263C1C1B00EDBF1F /* CustomScheduler.swift */; };
DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB789A0A25F9F2950071ACA0 /* ComposeViewController.swift */; };
DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */; };
DB7A9F912818EAF10016AF98 /* MastodonRegisterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7A9F902818EAF10016AF98 /* MastodonRegisterView.swift */; };
DB7A9F932818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7A9F922818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift */; };
DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */; };
DB8190C62601FF0400020C08 /* AttachmentContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */; };
DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */; };
DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB84811627883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift */; };
DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */; };
DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */; };
DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; };
@ -417,6 +415,7 @@
DB8AF54525C13647002E6C99 /* NeedsDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54325C13647002E6C99 /* NeedsDependency.swift */; };
DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */; };
DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF55C25C138B7002E6C99 /* UIViewController.swift */; };
DB8D8E2F28192EED009FD90F /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = DB8D8E2E28192EED009FD90F /* Introspect */; };
DB8F7076279E954700E1225B /* DataSourceFacade+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */; };
DB8FABC726AEC7B2008E5AF4 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */; };
DB8FABCA26AEC7B2008E5AF4 /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */; };
@ -1146,6 +1145,8 @@
DB75BF1D263C1C1B00EDBF1F /* CustomScheduler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomScheduler.swift; sourceTree = "<group>"; };
DB789A0A25F9F2950071ACA0 /* ComposeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewController.swift; sourceTree = "<group>"; };
DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewModel.swift; sourceTree = "<group>"; };
DB7A9F902818EAF10016AF98 /* MastodonRegisterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterView.swift; sourceTree = "<group>"; };
DB7A9F922818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonServerRulesViewController+Debug.swift"; sourceTree = "<group>"; };
DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderViewModel.swift; sourceTree = "<group>"; };
DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentContainerView.swift; sourceTree = "<group>"; };
DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterTextFieldTableViewCell.swift; sourceTree = "<group>"; };
@ -1164,6 +1165,9 @@
DB8AF54325C13647002E6C99 /* NeedsDependency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeedsDependency.swift; sourceTree = "<group>"; };
DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = "<group>"; };
DB8AF55C25C138B7002E6C99 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = "<group>"; };
DB8D8E3128196FA0009FD90F /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Intents.strings; sourceTree = "<group>"; };
DB8D8E3228196FA0009FD90F /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = "<group>"; };
DB8D8E3328196FA0009FD90F /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Intents.stringsdict; sourceTree = "<group>"; };
DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Follow.swift"; sourceTree = "<group>"; };
DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; };
DB8FABA926AEC3A2008E5AF4 /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; };
@ -1379,6 +1383,7 @@
5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */,
DB6804862637CD4C00430867 /* AppShared.framework in Frameworks */,
DBF96326262EC0A6001D8D25 /* AuthenticationServices.framework in Frameworks */,
DB8D8E2F28192EED009FD90F /* Introspect in Frameworks */,
DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */,
DB552D4F26BBD10C00E481F6 /* OrderedCollections in Frameworks */,
2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */,
@ -2633,6 +2638,7 @@
children = (
DB0618082785B2790030EE79 /* Cell */,
DB72601B25E36A2100235243 /* MastodonServerRulesViewController.swift */,
DB7A9F922818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift */,
DB72602625E36A6F00235243 /* MastodonServerRulesViewModel.swift */,
DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */,
);
@ -3149,6 +3155,7 @@
2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */,
DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */,
DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */,
DB7A9F902818EAF10016AF98 /* MastodonRegisterView.swift */,
);
path = Register;
sourceTree = "<group>";
@ -3324,6 +3331,7 @@
DB552D4E26BBD10C00E481F6 /* OrderedCollections */,
DBA5A52E26F07ED800CACBAA /* PanModal */,
DB02EA0C280D184B00E751C5 /* CommonOSLog */,
DB8D8E2E28192EED009FD90F /* Introspect */,
);
productName = Mastodon;
productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */;
@ -3521,6 +3529,7 @@
ku,
kab,
vi,
sv,
);
mainGroup = DB427DC925BAA00100D1B89D;
packageReferences = (
@ -3540,6 +3549,7 @@
DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */,
DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */,
DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */,
DB8D8E2D28192EED009FD90F /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */,
);
productRefGroup = DB427DD325BAA00100D1B89D /* Products */;
projectDirPath = "";
@ -3904,7 +3914,6 @@
DB63F75A279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift in Sources */,
DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */,
DB71FD5225F8CCAA00512AE1 /* APIService+Status.swift in Sources */,
DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */,
5D0393962612D266007FE196 /* WebViewModel.swift in Sources */,
5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */,
2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */,
@ -3956,7 +3965,6 @@
DBDFF1952805561700557A48 /* DiscoveryPostsViewModel+Diffable.swift in Sources */,
DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */,
DBDFF19C28055BD600557A48 /* DiscoveryViewModel.swift in Sources */,
DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */,
DBB45B6227B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift in Sources */,
DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */,
DB3E6FF32806D97400B035AE /* DiscoveryNewsViewModel+State.swift in Sources */,
@ -4024,6 +4032,7 @@
DB36679F268ABAF20027D07F /* ComposeStatusAttachmentSection.swift in Sources */,
2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */,
DB63F7542799491600455B82 /* DataSourceFacade+SearchHistory.swift in Sources */,
DB7A9F912818EAF10016AF98 /* MastodonRegisterView.swift in Sources */,
DBF1572F27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift in Sources */,
DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */,
2D4AD8A826316D3500613EFC /* SelectedAccountItem.swift in Sources */,
@ -4118,7 +4127,6 @@
5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */,
DB3E6FEF2806D82600B035AE /* DiscoveryNewsViewModel.swift in Sources */,
DBBF1DCB2652539E00E5B703 /* AutoCompleteItem.swift in Sources */,
DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */,
2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */,
DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */,
DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */,
@ -4274,10 +4282,10 @@
DB0FCB6C27950E29006C02E2 /* MastodonMentionContainer.swift in Sources */,
DB6D9F502635761F008423CD /* SubscriptionAlerts.swift in Sources */,
0F20220726134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift in Sources */,
DB7A9F932818F33C0016AF98 /* MastodonServerRulesViewController+Debug.swift in Sources */,
DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */,
2D5A3D2825CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift in Sources */,
DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */,
DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */,
DB6B74FC272FF55800C70B6E /* UserSection.swift in Sources */,
2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */,
DB0FCB862796BDA1006C02E2 /* SearchSection.swift in Sources */,
@ -4527,6 +4535,7 @@
DBEB19E927E4F37B00B0E80E /* ku */,
DBF81C7427F68F5A00004A56 /* kab */,
DBF81C7727F6913300004A56 /* vi */,
DB8D8E3128196FA0009FD90F /* sv */,
);
name = Intents.intentdefinition;
sourceTree = "<group>";
@ -4552,6 +4561,7 @@
DBEB19EA27E4F37B00B0E80E /* ku */,
DBF81C7527F68F5A00004A56 /* kab */,
DBF81C7827F6913300004A56 /* vi */,
DB8D8E3228196FA0009FD90F /* sv */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
@ -4593,6 +4603,7 @@
DBEB19EB27E4F37B00B0E80E /* ku */,
DBF81C7627F68F5A00004A56 /* kab */,
DBF81C7927F6913300004A56 /* vi */,
DB8D8E3328196FA0009FD90F /* sv */,
);
name = Intents.stringsdict;
sourceTree = "<group>";
@ -4737,7 +4748,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = Mastodon/Info.plist;
@ -4766,7 +4777,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = Mastodon/Info.plist;
@ -4874,11 +4885,11 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 113;
DYLIB_CURRENT_VERSION = 117;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = AppShared/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -4905,11 +4916,11 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 113;
DYLIB_CURRENT_VERSION = 117;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = AppShared/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -4934,7 +4945,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = MastodonIntent/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -4959,7 +4970,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = MastodonIntent/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -4984,7 +4995,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = ShareActionExtension/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5009,7 +5020,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = ShareActionExtension/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5095,7 +5106,7 @@
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets";
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = Mastodon/Info.plist;
@ -5162,11 +5173,11 @@
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 113;
DYLIB_CURRENT_VERSION = 117;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = AppShared/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@ -5191,7 +5202,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = NotificationService/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5215,7 +5226,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = ShareActionExtension/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5240,7 +5251,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = MastodonIntent/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5265,7 +5276,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = NotificationService/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5289,7 +5300,7 @@
buildSettings = {
CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 113;
CURRENT_PROJECT_VERSION = 117;
DEVELOPMENT_TEAM = 5Z4GVSS33P;
INFOPLIST_FILE = NotificationService/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
@ -5465,6 +5476,14 @@
minimumVersion = 4.2.2;
};
};
DB8D8E2D28192EED009FD90F /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/siteline/SwiftUI-Introspect.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.1.4;
};
};
DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/MainasuK/UITextView-Placeholder";
@ -5587,6 +5606,11 @@
package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */;
productName = AlamofireImage;
};
DB8D8E2E28192EED009FD90F /* Introspect */ = {
isa = XCSwiftPackageProductDependency;
package = DB8D8E2D28192EED009FD90F /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */;
productName = Introspect;
};
DB9A487D2603456B008B817C /* UITextView+Placeholder */ = {
isa = XCSwiftPackageProductDependency;
package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */;

View File

@ -109,7 +109,7 @@
<key>MastodonIntent.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>30</integer>
<integer>24</integer>
</dict>
<key>MastodonIntents.xcscheme_^#shared#^_</key>
<dict>
@ -124,7 +124,7 @@
<key>NotificationService.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>31</integer>
<integer>22</integer>
</dict>
<key>ShareActionExtension.xcscheme_^#shared#^_</key>
<dict>

View File

@ -30,7 +30,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.3.1</string>
<string>1.3.3</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
@ -43,7 +43,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>113</string>
<string>117</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<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

@ -58,6 +58,10 @@ extension HomeTimelineViewController {
guard let self = self else { return }
self.showWelcomeAction(action)
},
UIAction(title: "Register", image: UIImage(systemName: "list.bullet.rectangle.portrait.fill"), attributes: []) { [weak self] action in
guard let self = self else { return }
self.showRegisterAction(action)
},
UIAction(title: "Confirm Email", image: UIImage(systemName: "envelope"), attributes: []) { [weak self] action in
guard let self = self else { return }
self.showConfirmEmail(action)
@ -295,6 +299,33 @@ extension HomeTimelineViewController {
coordinator.present(scene: .welcome, from: self, transition: .modal(animated: true, completion: nil))
}
@objc private func showRegisterAction(_ sender: UIAction) {
Task { @MainActor in
try await showRegisterController()
} // end Task
}
@MainActor
func showRegisterController(domain: String = "mstdn.jp") async throws {
let viewController = try await MastodonRegisterViewController.create(
context: context,
coordinator: coordinator,
domain: "mstdn.jp"
)
let navigationController = UINavigationController(rootViewController: viewController)
navigationController.modalPresentationStyle = .fullScreen
present(navigationController, animated: true) {
viewController.navigationItem.leftBarButtonItem = UIBarButtonItem(
systemItem: .close,
primaryAction: UIAction(handler: { [weak viewController] _ in
guard let viewController = viewController else { return }
viewController.dismiss(animated: true)
}),
menu: nil
)
}
}
@objc private func showConfirmEmail(_ sender: UIAction) {
let mastodonConfirmEmailViewModel = MastodonConfirmEmailViewModel()
coordinator.present(scene: .mastodonConfirmEmail(viewModel: mastodonConfirmEmailViewModel), from: nil, transition: .modal(animated: true, completion: nil))

View File

@ -341,7 +341,10 @@ extension MastodonPickServerViewController {
) else {
throw APIService.APIError.explicit(.badResponse)
}
return MastodonPickServerViewModel.SignUpResponseSecond(instance: response.instance, authenticateInfo: authenticateInfo)
return MastodonPickServerViewModel.SignUpResponseSecond(
instance: response.instance,
authenticateInfo: authenticateInfo
)
}
.compactMap { [weak self] response -> AnyPublisher<MastodonPickServerViewModel.SignUpResponseThird, Error>? in
guard let self = self else { return nil }
@ -353,7 +356,13 @@ extension MastodonPickServerViewController {
clientSecret: authenticateInfo.clientSecret,
redirectURI: authenticateInfo.redirectURI
)
.map { MastodonPickServerViewModel.SignUpResponseThird(instance: instance, authenticateInfo: authenticateInfo, applicationToken: $0) }
.map {
MastodonPickServerViewModel.SignUpResponseThird(
instance: instance,
authenticateInfo: authenticateInfo,
applicationToken: $0
)
}
.eraseToAnyPublisher()
}
.switchToLatest()

View File

@ -0,0 +1,304 @@
//
// MastodonRegisterView.swift
// Mastodon
//
// Created by MainasuK on 2022-4-27.
//
import UIKit
import SwiftUI
import MastodonLocalization
import MastodonSDK
import MastodonAsset
struct MastodonRegisterView: View {
@ObservedObject var viewModel: MastodonRegisterViewModel
@State var usernameRightViewWidth: CGFloat = 300
var body: some View {
ScrollView(.vertical) {
let margin: CGFloat = 16
// header
HStack {
Text(L10n.Scene.Register.title(viewModel.domain))
.font(Font(MastodonPickServerViewController.largeTitleFont as CTFont))
.foregroundColor(Color(Asset.Colors.Label.primary.color))
Spacer()
}
.padding(.horizontal, margin)
// Avatar selector
Menu {
// Photo Library
Button {
viewModel.avatarMediaMenuActionPublisher.send(.photoLibrary)
} label: {
Label(L10n.Scene.Compose.MediaSelection.photoLibrary, systemImage: "photo")
}
// Camera
if UIImagePickerController.isSourceTypeAvailable(.camera) {
Button {
viewModel.avatarMediaMenuActionPublisher.send(.camera)
} label: {
Label(L10n.Scene.Compose.MediaSelection.camera, systemImage: "camera")
}
}
// Browse
Button {
viewModel.avatarMediaMenuActionPublisher.send(.browse)
} label: {
Label(L10n.Scene.Compose.MediaSelection.browse, systemImage: "folder")
}
// Delete
if viewModel.avatarImage != nil {
Divider()
if #available(iOS 15.0, *) {
Button(role: .destructive) {
viewModel.avatarMediaMenuActionPublisher.send(.delete)
} label: {
Label(L10n.Scene.Register.Input.Avatar.delete, systemImage: "delete.left")
}
} else {
// Fallback on earlier ve rsions
Button {
viewModel.avatarMediaMenuActionPublisher.send(.delete)
} label: {
Label(L10n.Scene.Register.Input.Avatar.delete, systemImage: "delete.left")
}
}
}
} label: {
let avatarImage = viewModel.avatarImage ?? Asset.Scene.Onboarding.avatarPlaceholder.image
Image(uiImage: avatarImage)
.resizable()
.frame(width: 88, height: 88, alignment: .center)
.overlay(ZStack {
Color.black.opacity(0.5)
.frame(height: 22, alignment: .bottom)
Text(L10n.Common.Controls.Actions.edit)
.font(.system(size: 13, weight: .semibold))
.foregroundColor(.white)
}, alignment: .bottom)
.cornerRadius(22)
}
.padding(EdgeInsets(top: 20, leading: 0, bottom: 20, trailing: 0))
// Display Name & Uesrname
VStack(alignment: .leading, spacing: 11) {
TextField(L10n.Scene.Register.Input.DisplayName.placeholder.localizedCapitalized, text: $viewModel.name)
.textContentType(.name)
.disableAutocorrection(true)
.modifier(FormTextFieldModifier(validateState: viewModel.displayNameValidateState))
HStack {
TextField(L10n.Scene.Register.Input.Username.placeholder.localizedCapitalized, text: $viewModel.username)
.textContentType(.username)
.autocapitalization(.none)
.disableAutocorrection(true)
.keyboardType(.asciiCapable)
Text("@\(viewModel.domain)")
.lineLimit(1)
.truncationMode(.middle)
.measureWidth { usernameRightViewWidth = $0 }
.frame(width: min(300.0, usernameRightViewWidth), alignment: .trailing)
}
.modifier(FormTextFieldModifier(validateState: viewModel.usernameValidateState))
.environment(\.layoutDirection, .leftToRight) // force LTR
if let errorPrompt = viewModel.usernameErrorPrompt {
Text(errorPrompt)
.modifier(FormFootnoteModifier())
}
}
.padding(.horizontal, margin)
.padding(.bottom, 22)
// Email & Password & Password hint
VStack(alignment: .leading, spacing: 11) {
TextField(L10n.Scene.Register.Input.Email.placeholder.localizedCapitalized, text: $viewModel.email)
.textContentType(.emailAddress)
.autocapitalization(.none)
.disableAutocorrection(true)
.keyboardType(.emailAddress)
.modifier(FormTextFieldModifier(validateState: viewModel.emailValidateState))
if let errorPrompt = viewModel.emailErrorPrompt {
Text(errorPrompt)
.modifier(FormFootnoteModifier())
}
SecureField(L10n.Scene.Register.Input.Password.placeholder.localizedCapitalized, text: $viewModel.password)
.textContentType(.newPassword)
.modifier(FormTextFieldModifier(validateState: viewModel.passwordValidateState))
Text(L10n.Scene.Register.Input.Password.hint)
.modifier(FormFootnoteModifier(foregroundColor: .secondary))
if let errorPrompt = viewModel.passwordErrorPrompt {
Text(errorPrompt)
.modifier(FormFootnoteModifier())
}
}
.padding(.horizontal, margin)
.padding(.bottom, 22)
// Reason
if viewModel.approvalRequired {
VStack(alignment: .leading, spacing: 11) {
TextField(L10n.Scene.Register.Input.Invite.registrationUserInviteRequest.localizedCapitalized, text: $viewModel.reason)
.modifier(FormTextFieldModifier(validateState: viewModel.reasonValidateState))
if let errorPrompt = viewModel.reasonErrorPrompt {
Text(errorPrompt)
.modifier(FormFootnoteModifier())
}
}
.padding(.horizontal, margin)
}
Spacer()
.frame(minHeight: viewModel.bottomPaddingHeight)
}
.background(
Color(viewModel.backgroundColor)
.onTapGesture {
viewModel.endEditing.send()
}
)
}
struct FormTextFieldModifier: ViewModifier {
var validateState: MastodonRegisterViewModel.ValidateState
func body(content: Content) -> some View {
ZStack {
let shadowColor: Color = {
switch validateState {
case .empty: return .black.opacity(0.125)
case .invalid: return Color(Asset.Colors.TextField.invalid.color)
case .valid: return Color(Asset.Colors.TextField.valid.color)
}
}()
Color(Asset.Scene.Onboarding.textFieldBackground.color)
.cornerRadius(10)
.shadow(color: shadowColor, radius: 1, x: 0, y: 2)
.animation(.easeInOut, value: validateState)
content
.padding()
.background(Color(Asset.Scene.Onboarding.textFieldBackground.color))
.cornerRadius(10)
}
}
}
struct FormFootnoteModifier: ViewModifier {
var foregroundColor = Color(Asset.Colors.TextField.invalid.color)
func body(content: Content) -> some View {
content
.font(.footnote)
.foregroundColor(foregroundColor)
.padding(.horizontal)
}
}
}
struct WidthKey: PreferenceKey {
static let defaultValue: CGFloat = 0
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
value = nextValue()
}
}
extension View {
func measureWidth(_ f: @escaping (CGFloat) -> ()) -> some View {
overlay(GeometryReader { proxy in
Color.clear.preference(key: WidthKey.self, value: proxy.size.width)
}
.onPreferenceChange(WidthKey.self, perform: f))
}
}
#if DEBUG
struct MastodonRegisterView_Previews: PreviewProvider {
static var viewMdoel: MastodonRegisterViewModel {
let domain = "mstdn.jp"
return MastodonRegisterViewModel(
context: .shared,
domain: domain,
authenticateInfo: AuthenticationViewModel.AuthenticateInfo(
domain: domain,
application: Mastodon.Entity.Application(
name: "Preview",
website: nil,
vapidKey: nil,
redirectURI: nil,
clientID: "",
clientSecret: ""
),
redirectURI: ""
)!,
instance: Mastodon.Entity.Instance(domain: "mstdn.jp"),
applicationToken: Mastodon.Entity.Token(
accessToken: "",
tokenType: "",
scope: "",
createdAt: Date()
)
)
}
static var viewMdoel2: MastodonRegisterViewModel {
let domain = "mstdn.jp"
return MastodonRegisterViewModel(
context: .shared,
domain: domain,
authenticateInfo: AuthenticationViewModel.AuthenticateInfo(
domain: domain,
application: Mastodon.Entity.Application(
name: "Preview",
website: nil,
vapidKey: nil,
redirectURI: nil,
clientID: "",
clientSecret: ""
),
redirectURI: ""
)!,
instance: Mastodon.Entity.Instance(domain: "mstdn.jp", approvalRequired: true),
applicationToken: Mastodon.Entity.Token(
accessToken: "",
tokenType: "",
scope: "",
createdAt: Date()
)
)
}
static var previews: some View {
Group {
NavigationView {
MastodonRegisterView(viewModel: viewMdoel)
.navigationBarTitle(Text(""))
.navigationBarTitleDisplayMode(.inline)
}
NavigationView {
MastodonRegisterView(viewModel: viewMdoel)
.navigationBarTitle(Text(""))
.navigationBarTitleDisplayMode(.inline)
}
.preferredColorScheme(.dark)
NavigationView {
MastodonRegisterView(viewModel: viewMdoel)
.navigationBarTitle(Text(""))
.navigationBarTitleDisplayMode(.inline)
}
.environment(\.sizeCategory, .accessibilityExtraLarge)
NavigationView {
MastodonRegisterView(viewModel: viewMdoel2)
.navigationBarTitle(Text(""))
.navigationBarTitleDisplayMode(.inline)
}
}
}
}
#endif

View File

@ -11,6 +11,7 @@ import MastodonSDK
import os.log
import PhotosUI
import UIKit
import SwiftUI
import MastodonUI
import MastodonAsset
import MastodonLocalization
@ -28,6 +29,7 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O
weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } }
var viewModel: MastodonRegisterViewModel!
private(set) lazy var mastodonRegisterView = MastodonRegisterView(viewModel: viewModel)
// picker
private(set) lazy var imagePicker: PHPickerViewController = {
@ -52,22 +54,6 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O
return documentPickerController
}()
let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer
let tableView: UITableView = {
let tableView = UITableView()
tableView.rowHeight = UITableView.automaticDimension
tableView.separatorStyle = .none
tableView.backgroundColor = .clear
tableView.keyboardDismissMode = .onDrag
if #available(iOS 15.0, *) {
tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude
} else {
// Fallback on earlier versions
}
return tableView
}()
let navigationActionView: NavigationActionView = {
let navigationActionView = NavigationActionView()
navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color
@ -88,17 +74,21 @@ extension MastodonRegisterViewController {
navigationItem.leftBarButtonItem = UIBarButtonItem()
setupOnboardingAppearance()
viewModel.backgroundColor = view.backgroundColor ?? .clear
defer {
setupNavigationBarBackgroundView()
}
tableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tableView)
let hostingViewController = UIHostingController(rootView: mastodonRegisterView)
hostingViewController.view.preservesSuperviewLayoutMargins = true
addChild(hostingViewController)
hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(hostingViewController.view)
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: view.topAnchor),
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor),
hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
])
navigationActionView.translatesAutoresizingMaskIntoConstraints = false
@ -116,7 +106,7 @@ extension MastodonRegisterViewController {
.observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in
guard let self = self else { return }
let inset = navigationActionView.frame.height
self.tableView.contentInset.bottom = inset
self.viewModel.bottomPaddingHeight = inset
}
.store(in: &observations)
@ -131,99 +121,36 @@ extension MastodonRegisterViewController {
}
.store(in: &disposeBag)
viewModel.setupDiffableDataSource(tableView: tableView)
KeyboardResponderService
.configure(
scrollView: tableView,
layoutNeedsUpdate: viewModel.viewDidAppear.eraseToAnyPublisher()
)
viewModel.endEditing
.receive(on: DispatchQueue.main)
.sink { [weak self] _ in
guard let self = self else { return }
self.view.endEditing(true)
}
.store(in: &disposeBag)
// gesture
view.addGestureRecognizer(tapGestureRecognizer)
tapGestureRecognizer.addTarget(self, action: #selector(tapGestureRecognizerHandler))
// // return
// if viewModel.approvalRequired {
// reasonTextField.returnKeyType = .done
// } else {
// passwordTextField.returnKeyType = .done
// }
//
// viewModel.usernameValidateState
// .receive(on: DispatchQueue.main)
// .sink { [weak self] validateState in
// guard let self = self else { return }
// self.setTextFieldValidAppearance(self.usernameTextField, validateState: validateState)
// }
// .store(in: &disposeBag)
// viewModel.usernameErrorPrompt
// .receive(on: DispatchQueue.main)
// .sink { [weak self] prompt in
// guard let self = self else { return }
// self.usernameErrorPromptLabel.attributedText = prompt
// }
// .store(in: &disposeBag)
// viewModel.displayNameValidateState
// .receive(on: DispatchQueue.main)
// .sink { [weak self] validateState in
// guard let self = self else { return }
// self.setTextFieldValidAppearance(self.displayNameTextField, validateState: validateState)
// }
// .store(in: &disposeBag)
// viewModel.emailValidateState
// .receive(on: DispatchQueue.main)
// .sink { [weak self] validateState in
// guard let self = self else { return }
// self.setTextFieldValidAppearance(self.emailTextField, validateState: validateState)
// }
// .store(in: &disposeBag)
// viewModel.emailErrorPrompt
// .receive(on: DispatchQueue.main)
// .sink { [weak self] prompt in
// guard let self = self else { return }
// self.emailErrorPromptLabel.attributedText = prompt
// }
// .store(in: &disposeBag)
// viewModel.passwordValidateState
// .receive(on: DispatchQueue.main)
// .sink { [weak self] validateState in
// guard let self = self else { return }
// self.setTextFieldValidAppearance(self.passwordTextField, validateState: validateState)
// self.passwordCheckLabel.attributedText = MastodonRegisterViewModel.attributeStringForPassword(validateState: validateState)
// }
// .store(in: &disposeBag)
// viewModel.passwordErrorPrompt
// .receive(on: DispatchQueue.main)
// .sink { [weak self] prompt in
// guard let self = self else { return }
// self.passwordErrorPromptLabel.attributedText = prompt
// }
// .store(in: &disposeBag)
// viewModel.reasonErrorPrompt
// .receive(on: DispatchQueue.main)
// .sink { [weak self] prompt in
// guard let self = self else { return }
// self.reasonErrorPromptLabel.attributedText = prompt
// }
// .store(in: &disposeBag)
// viewModel.error
// .receive(on: DispatchQueue.main)
// .sink { [weak self] error in
// guard let self = self else { return }
// guard let error = error as? Mastodon.API.Error else { return }
// let alertController = UIAlertController(for: error, title: "Sign Up Failure", preferredStyle: .alert)
// let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil)
// alertController.addAction(okAction)
// self.coordinator.present(
// scene: .alertController(alertController: alertController),
// from: nil,
// transition: .alertController(animated: true, completion: nil)
// )
// }
// .store(in: &disposeBag)
//
viewModel.$error
.receive(on: DispatchQueue.main)
.sink { [weak self] error in
guard let self = self else { return }
guard let error = error as? Mastodon.API.Error else { return }
let alertController = UIAlertController(for: error, title: "Sign Up Failure", preferredStyle: .alert)
let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil)
alertController.addAction(okAction)
self.coordinator.present(
scene: .alertController(alertController: alertController),
from: nil,
transition: .alertController(animated: true, completion: nil)
)
}
.store(in: &disposeBag)
viewModel.avatarMediaMenuActionPublisher
.receive(on: DispatchQueue.main)
@ -261,10 +188,6 @@ extension MastodonRegisterViewController {
extension MastodonRegisterViewController {
@objc private func tapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) {
view.endEditing(true)
}
@objc private func backButtonPressed(_ sender: UIButton) {
logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)")
navigationController?.popViewController(animated: true)

View File

@ -164,51 +164,6 @@ extension MastodonRegisterViewModel {
.store(in: &cell.disposeBag)
}
enum AvatarMediaMenuAction {
case photoLibrary
case camera
case browse
case delete
}
private func createAvatarMediaContextMenu() -> UIMenu {
var children: [UIMenuElement] = []
// Photo Library
let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.photoLibrary)
}
children.append(photoLibraryAction)
// Camera
if UIImagePickerController.isSourceTypeAvailable(.camera) {
let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.camera)
})
children.append(cameraAction)
}
// Browse
let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.browse)
}
children.append(browseAction)
// Delete
if avatarImage != nil {
let deleteAction = UIAction(title: L10n.Scene.Register.Input.Avatar.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.delete)
}
children.append(deleteAction)
}
return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children)
}
private func configureTextFieldCell(
cell: MastodonRegisterTextFieldTableViewCell,
validateState: Published<ValidateState>.Publisher

View File

@ -12,7 +12,7 @@ import UIKit
import MastodonAsset
import MastodonLocalization
final class MastodonRegisterViewModel {
final class MastodonRegisterViewModel: ObservableObject {
var disposeBag = Set<AnyCancellable>()
// input
@ -23,6 +23,7 @@ final class MastodonRegisterViewModel {
let applicationToken: Mastodon.Entity.Token
let viewDidAppear = CurrentValueSubject<Void, Never>(Void())
@Published var backgroundColor: UIColor = Asset.Scene.Onboarding.background.color
@Published var avatarImage: UIImage? = nil
@Published var name = ""
@Published var username = ""
@ -30,10 +31,12 @@ final class MastodonRegisterViewModel {
@Published var password = ""
@Published var reason = ""
let usernameErrorPrompt = CurrentValueSubject<NSAttributedString?, Never>(nil)
let emailErrorPrompt = CurrentValueSubject<NSAttributedString?, Never>(nil)
let passwordErrorPrompt = CurrentValueSubject<NSAttributedString?, Never>(nil)
let reasonErrorPrompt = CurrentValueSubject<NSAttributedString?, Never>(nil)
@Published var usernameErrorPrompt: String? = nil
@Published var emailErrorPrompt: String? = nil
@Published var passwordErrorPrompt: String? = nil
@Published var reasonErrorPrompt: String? = nil
@Published var bottomPaddingHeight: CGFloat = .zero
// output
var diffableDataSource: UITableViewDiffableDataSource<RegisterSection, RegisterItem>?
@ -51,6 +54,7 @@ final class MastodonRegisterViewModel {
@Published var error: Error? = nil
let avatarMediaMenuActionPublisher = PassthroughSubject<AvatarMediaMenuAction, Never>()
let endEditing = PassthroughSubject<Void, Never>()
init(
context: AppContext,
@ -97,45 +101,46 @@ final class MastodonRegisterViewModel {
.assign(to: \.usernameValidateState, on: self)
.store(in: &disposeBag)
// TODO: check username available
// username
// .filter { !$0.isEmpty }
// .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main)
// .removeDuplicates()
// .compactMap { [weak self] text -> AnyPublisher<Result<Mastodon.Response.Content<Mastodon.Entity.Account>, Error>, Never>? in
// guard let self = self else { return nil }
// let query = Mastodon.API.Account.AccountLookupQuery(acct: text)
// return context.apiService.accountLookup(domain: domain, query: query, authorization: self.applicationAuthorization)
// .map {
// response -> Result<Mastodon.Response.Content<Mastodon.Entity.Account>, Error> in
// Result.success(response)
// }
// .catch { error in
// Just(Result.failure(error))
// }
// .eraseToAnyPublisher()
// }
// .switchToLatest()
// .sink { [weak self] result in
// guard let self = self else { return }
// switch result {
// case .success:
// let text = L10n.Scene.Register.Error.Reason.taken(L10n.Scene.Register.Error.Item.username)
// self.usernameErrorPrompt.value = MastodonRegisterViewModel.errorPromptAttributedString(for: text)
// self.usernameValidateState.value = .invalid
// case .failure:
// break
// }
// }
// .store(in: &disposeBag)
//
// usernameValidateState
// .sink { [weak self] validateState in
// if validateState == .valid {
// self?.usernameErrorPrompt.value = nil
// }
// }
// .store(in: &disposeBag)
// check username available
$username
.filter { !$0.isEmpty }
.debounce(for: .milliseconds(300), scheduler: DispatchQueue.main)
.removeDuplicates()
.compactMap { [weak self] text -> AnyPublisher<Result<Mastodon.Response.Content<Mastodon.Entity.Account>, Error>, Never>? in
guard let self = self else { return nil }
let query = Mastodon.API.Account.AccountLookupQuery(acct: text)
return context.apiService.accountLookup(domain: domain, query: query, authorization: self.applicationAuthorization)
.map {
response -> Result<Mastodon.Response.Content<Mastodon.Entity.Account>, Error> in
Result.success(response)
}
.catch { error in
Just(Result.failure(error))
}
.eraseToAnyPublisher()
}
.switchToLatest()
.receive(on: DispatchQueue.main)
.sink { [weak self] result in
guard let self = self else { return }
switch result {
case .success:
let text = L10n.Scene.Register.Error.Reason.taken(L10n.Scene.Register.Error.Item.username)
self.usernameErrorPrompt = text
self.usernameValidateState = .invalid
case .failure:
break
}
}
.store(in: &disposeBag)
$usernameValidateState
.sink { [weak self] validateState in
if validateState == .valid {
self?.usernameErrorPrompt = nil
}
}
.store(in: &disposeBag)
$email
.map { email in
@ -163,27 +168,31 @@ final class MastodonRegisterViewModel {
.store(in: &disposeBag)
}
// error
// .sink { [weak self] error in
// guard let self = self else { return }
// let error = error as? Mastodon.API.Error
// let mastodonError = error?.mastodonError
// if case let .generic(genericMastodonError) = mastodonError,
// let details = genericMastodonError.details
// {
// self.usernameErrorPrompt.value = details.usernameErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) }
// self.emailErrorPrompt.value = details.emailErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) }
// self.passwordErrorPrompt.value = details.passwordErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) }
// self.reasonErrorPrompt.value = details.reasonErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) }
// } else {
// self.usernameErrorPrompt.value = nil
// self.emailErrorPrompt.value = nil
// self.passwordErrorPrompt.value = nil
// self.reasonErrorPrompt.value = nil
// }
// }
// .store(in: &disposeBag)
//
$error
.sink { [weak self] error in
guard let self = self else { return }
let error = error as? Mastodon.API.Error
let mastodonError = error?.mastodonError
if case let .generic(genericMastodonError) = mastodonError,
let details = genericMastodonError.details
{
self.usernameErrorPrompt = details.usernameErrorDescriptions.first
details.usernameErrorDescriptions.first.flatMap { _ in self.usernameValidateState = .invalid }
self.emailErrorPrompt = details.emailErrorDescriptions.first
details.emailErrorDescriptions.first.flatMap { _ in self.emailValidateState = .invalid }
self.passwordErrorPrompt = details.passwordErrorDescriptions.first
details.passwordErrorDescriptions.first.flatMap { _ in self.passwordValidateState = .invalid }
self.reasonErrorPrompt = details.reasonErrorDescriptions.first
details.reasonErrorDescriptions.first.flatMap { _ in self.reasonValidateState = .invalid }
} else {
self.usernameErrorPrompt = nil
self.emailErrorPrompt = nil
self.passwordErrorPrompt = nil
self.reasonErrorPrompt = nil
}
}
.store(in: &disposeBag)
let publisherOne = Publishers.CombineLatest4(
$usernameValidateState,
$displayNameValidateState,
@ -213,7 +222,7 @@ final class MastodonRegisterViewModel {
}
extension MastodonRegisterViewModel {
enum ValidateState {
enum ValidateState: Hashable {
case empty
case invalid
case valid
@ -271,3 +280,52 @@ extension MastodonRegisterViewModel {
return attributeString
}
}
extension MastodonRegisterViewModel {
enum AvatarMediaMenuAction {
case photoLibrary
case camera
case browse
case delete
}
private func createAvatarMediaContextMenu() -> UIMenu {
var children: [UIMenuElement] = []
// Photo Library
let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.photoLibrary)
}
children.append(photoLibraryAction)
// Camera
if UIImagePickerController.isSourceTypeAvailable(.camera) {
let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.camera)
})
children.append(cameraAction)
}
// Browse
let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.browse)
}
children.append(browseAction)
// Delete
if avatarImage != nil {
let deleteAction = UIAction(title: L10n.Scene.Register.Input.Avatar.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) { [weak self] _ in
guard let self = self else { return }
self.avatarMediaMenuActionPublisher.send(.delete)
}
children.append(deleteAction)
}
return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children)
}
}

View File

@ -0,0 +1,50 @@
//
// MastodonServerRulesViewController+Debug.swift
// Mastodon
//
// Created by MainasuK on 2022-4-27.
//
import UIKit
#if DEBUG
extension MastodonRegisterViewController {
@MainActor
static func create(
context: AppContext,
coordinator: SceneCoordinator,
domain: String
) async throws -> MastodonRegisterViewController {
let viewController = MastodonRegisterViewController()
viewController.context = context
viewController.coordinator = coordinator
let instanceResponse = try await context.apiService.instance(domain: domain).singleOutput()
let applicationResponse = try await context.apiService.createApplication(domain: domain).singleOutput()
let accessTokenResponse = try await context.apiService.applicationAccessToken(
domain: domain,
clientID: applicationResponse.value.clientID!,
clientSecret: applicationResponse.value.clientSecret!,
redirectURI: applicationResponse.value.redirectURI!
).singleOutput()
viewController.viewModel = MastodonRegisterViewModel(
context: context,
domain: domain,
authenticateInfo: .init(
domain: domain,
application: applicationResponse.value
)!,
instance: instanceResponse.value,
applicationToken: accessTokenResponse.value
)
return viewController
}
}
#endif

View File

@ -270,7 +270,15 @@ extension MainTabBarController {
updateTabBarDisplay()
#if DEBUG
// selectedIndex = 1
// Debug Register viewController
// Task { @MainActor in
// let _homeTimelineViewController = viewControllers
// .compactMap { $0 as? UINavigationController }
// .compactMap { $0.topViewController }
// .compactMap { $0 as? HomeTimelineViewController }
// .first
// try await _homeTimelineViewController?.showRegisterController()
// } // end Task
#endif
}

View File

@ -1,5 +1,5 @@
//
// APIService+HomeTimeline.swift
// µ.swift
// Mastodon
//
// Created by MainasuK Cirno on 2021/2/3.

View File

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

View File

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

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

@ -270,6 +270,8 @@ public enum L10n {
public static let contentWarning = L10n.tr("Localizable", "Common.Controls.Status.ContentWarning")
/// Tap anywhere to reveal
public static let mediaContentWarning = L10n.tr("Localizable", "Common.Controls.Status.MediaContentWarning")
/// Sensitive Content
public static let sensitiveContent = L10n.tr("Localizable", "Common.Controls.Status.SensitiveContent")
/// Show Post
public static let showPost = L10n.tr("Localizable", "Common.Controls.Status.ShowPost")
/// Show user profile
@ -544,6 +546,8 @@ public enum L10n {
}
}
public enum Discovery {
/// These are the posts gaining traction in your corner of Mastodon.
public static let intro = L10n.tr("Localizable", "Scene.Discovery.Intro")
public enum Tabs {
/// For You
public static let forYou = L10n.tr("Localizable", "Scene.Discovery.Tabs.ForYou")

View File

@ -108,6 +108,7 @@
"Common.Controls.Status.MediaContentWarning" = "اُنقُر لِلكَشف";
"Common.Controls.Status.Poll.Closed" = "انتهى";
"Common.Controls.Status.Poll.Vote" = "صَوِّت";
"Common.Controls.Status.SensitiveContent" = "مُحتَوى حَسَّاس";
"Common.Controls.Status.ShowPost" = "أظْهِر مَنشور";
"Common.Controls.Status.ShowUserProfile" = "أظْهِر المِلَفَّ التَّعريفِيَّ لِلمُستَخدِم";
"Common.Controls.Status.Tag.Email" = "بَريدٌ إلِكتُرُونِيّ";
@ -201,7 +202,8 @@
"Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو بريد إلكتروني إلى %@،
انقر على الرابط لتأكيد حسابك.";
"Scene.ConfirmEmail.Title" = "شيءٌ أخير.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Intro" = "هَذِهِ هِيَ المَنشُوراتُ الَّتي تَكْتَسِبُ شَعبِيَّةً فِي الرُّكنِ الخاصِّ بِكَ مِن مَاستُودون.";
"Scene.Discovery.Tabs.ForYou" = "لَك";
"Scene.Discovery.Tabs.Hashtags" = "الوسوم";
"Scene.Discovery.Tabs.News" = "الأخبار";
"Scene.Discovery.Tabs.Posts" = "المنشورات";

View File

@ -108,6 +108,7 @@ Comprova la teva connexió a Internet.";
"Common.Controls.Status.MediaContentWarning" = "Toca qualsevol lloc per a mostrar";
"Common.Controls.Status.Poll.Closed" = "Finalitzada";
"Common.Controls.Status.Poll.Vote" = "Vota";
"Common.Controls.Status.SensitiveContent" = "Contingut sensible";
"Common.Controls.Status.ShowPost" = "Mostra la Publicació";
"Common.Controls.Status.ShowUserProfile" = "Mostra el perfil de l'usuari";
"Common.Controls.Status.Tag.Email" = "Correu electrònic";
@ -200,6 +201,7 @@ carregat a Mastodon.";
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Comprova la teva safata d'entrada.";
"Scene.ConfirmEmail.Subtitle" = "Toca l'enllaç del correu electrònic que t'hem enviat per a confirmar el teu compte.";
"Scene.ConfirmEmail.Title" = "Una última cosa.";
"Scene.Discovery.Intro" = "Aquestes son les publicacions que criden l'atenció en el teu racó de Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "Per a tu";
"Scene.Discovery.Tabs.Hashtags" = "Etiquetes";
"Scene.Discovery.Tabs.News" = "Notícies";

View File

@ -108,6 +108,7 @@ Bitte überprüfe deine Internetverbindung.";
"Common.Controls.Status.MediaContentWarning" = "Tippe irgendwo zum Anzeigen";
"Common.Controls.Status.Poll.Closed" = "Beendet";
"Common.Controls.Status.Poll.Vote" = "Abstimmen";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Beitrag anzeigen";
"Common.Controls.Status.ShowUserProfile" = "Benutzerprofil anzeigen";
"Common.Controls.Status.Tag.Email" = "E-Mail";
@ -201,6 +202,7 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.ConfirmEmail.Subtitle" = "Wir haben gerade eine E-Mail an %@ gesendet,
tippe darin auf den Link, um Dein Konto zu bestätigen.";
"Scene.ConfirmEmail.Title" = "Noch eine letzte Sache.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "Für dich";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "Nachrichten";

View File

@ -108,6 +108,7 @@ Please check your internet connection.";
"Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal";
"Common.Controls.Status.Poll.Closed" = "Closed";
"Common.Controls.Status.Poll.Vote" = "Vote";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Show Post";
"Common.Controls.Status.ShowUserProfile" = "Show user profile";
"Common.Controls.Status.Tag.Email" = "Email";
@ -200,6 +201,7 @@ uploaded to Mastodon.";
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox.";
"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account.";
"Scene.ConfirmEmail.Title" = "One last thing.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";

View File

@ -90,9 +90,9 @@ Por favor, revisá tu conexión a Internet.";
"Common.Controls.Keyboard.Timeline.PreviewImage" = "Previsualizar imagen";
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Mensaje anterior";
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Responder al mensaje";
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Cambiar la advertencia de contenido";
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Cambiar la marca de favorito en el mensaje";
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Cambiar la adhesión en el mensaje";
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Cambiar modo de advertencia de contenido";
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Cambiar marca de favorito del mensaje";
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Cambiar adhesión al mensaje";
"Common.Controls.Status.Actions.Favorite" = "Marcar como favorito";
"Common.Controls.Status.Actions.Hide" = "Ocultar";
"Common.Controls.Status.Actions.Menu" = "Menú";
@ -105,9 +105,10 @@ Por favor, revisá tu conexión a Internet.";
"Common.Controls.Status.Actions.Unfavorite" = "Dejar de marcar como favorito";
"Common.Controls.Status.Actions.Unreblog" = "Deshacer adhesión";
"Common.Controls.Status.ContentWarning" = "Advertencia de contenido";
"Common.Controls.Status.MediaContentWarning" = "Toca en cualquier lugar para mostrar";
"Common.Controls.Status.MediaContentWarning" = "Tocá en cualquier parte para mostrar";
"Common.Controls.Status.Poll.Closed" = "Cerrada";
"Common.Controls.Status.Poll.Vote" = "Votar";
"Common.Controls.Status.SensitiveContent" = "Contenido sensible";
"Common.Controls.Status.ShowPost" = "Mostrar mensaje";
"Common.Controls.Status.ShowUserProfile" = "Mostrar perfil de usuario";
"Common.Controls.Status.Tag.Email" = "Correo electrónico";
@ -201,6 +202,7 @@ y no se puede subir a Mastodon.";
"Scene.ConfirmEmail.Subtitle" = "Acabamos de enviar un correo electrónico a %@,
pulsá en el enlace para confirmar tu cuenta.";
"Scene.ConfirmEmail.Title" = "Una última cosa.";
"Scene.Discovery.Intro" = "Estos son los mensajes que están ganando tracción en tu rincón de Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "Para vos";
"Scene.Discovery.Tabs.Hashtags" = "Etiquetas";
"Scene.Discovery.Tabs.News" = "Novedades";

View File

@ -98,16 +98,17 @@ Por favor, revise su conexión a internet.";
"Common.Controls.Status.Actions.Menu" = "Menú";
"Common.Controls.Status.Actions.Reblog" = "Rebloguear";
"Common.Controls.Status.Actions.Reply" = "Responder";
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
"Common.Controls.Status.Actions.ShowImage" = "Show image";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
"Common.Controls.Status.Actions.ShowGif" = "Mostrar GIF";
"Common.Controls.Status.Actions.ShowImage" = "Mostrar imagen";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Mostrar reproductor de vídeo";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Toca, después mantén para mostrar el menú";
"Common.Controls.Status.Actions.Unfavorite" = "No favorito";
"Common.Controls.Status.Actions.Unreblog" = "Deshacer reblogueo";
"Common.Controls.Status.ContentWarning" = "Advertencia de Contenido";
"Common.Controls.Status.MediaContentWarning" = "Pulsa en cualquier sitio para mostrar";
"Common.Controls.Status.Poll.Closed" = "Cerrado";
"Common.Controls.Status.Poll.Vote" = "Vota";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Mostrar Publicación";
"Common.Controls.Status.ShowUserProfile" = "Mostrar perfil del usuario";
"Common.Controls.Status.Tag.Email" = "E-mail";
@ -116,7 +117,7 @@ Por favor, revise su conexión a internet.";
"Common.Controls.Status.Tag.Link" = "Enlace";
"Common.Controls.Status.Tag.Mention" = "Mención";
"Common.Controls.Status.Tag.Url" = "URL";
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
"Common.Controls.Status.TapToReveal" = "Tocar para revelar";
"Common.Controls.Status.UserReblogged" = "%@ lo reblogueó";
"Common.Controls.Status.UserRepliedTo" = "En respuesta a %@";
"Common.Controls.Status.Visibility.Direct" = "Sólo el usuario mencionado puede ver este mensaje.";
@ -201,10 +202,11 @@ subirse a Mastodon.";
"Scene.ConfirmEmail.Subtitle" = "Te acabamos de enviar un correo a %@,
pulsa en el enlace para confirmar tu cuenta.";
"Scene.ConfirmEmail.Title" = "Una última cosa.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";
"Scene.Discovery.Tabs.Posts" = "Posts";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "Para Ti";
"Scene.Discovery.Tabs.Hashtags" = "Etiquetas";
"Scene.Discovery.Tabs.News" = "Noticias";
"Scene.Discovery.Tabs.Posts" = "Publicaciones";
"Scene.Favorite.Title" = "Tus Favoritos";
"Scene.Follower.Footer" = "No se muestran los seguidores de otros servidores.";
"Scene.Following.Footer" = "No se muestran los seguidos de otros servidores.";
@ -226,10 +228,10 @@ pulsa en el enlace para confirmar tu cuenta.";
"Scene.Preview.Keyboard.ClosePreview" = "Cerrar Previsualización";
"Scene.Preview.Keyboard.ShowNext" = "Mostrar Siguiente";
"Scene.Preview.Keyboard.ShowPrevious" = "Mostrar Anterior";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Pulsa dos veces para abrir la lista";
"Scene.Profile.Accessibility.EditAvatarImage" = "Editar imagen del avatar";
"Scene.Profile.Accessibility.ShowAvatarImage" = "Mostrar imagen del avatar";
"Scene.Profile.Accessibility.ShowBannerImage" = "Mostrar imagen de banner";
"Scene.Profile.Dashboard.Followers" = "seguidores";
"Scene.Profile.Dashboard.Following" = "siguiendo";
"Scene.Profile.Dashboard.Posts" = "publicaciones";
@ -370,7 +372,7 @@ cualquier servidor.";
"Scene.Settings.Section.Notifications.Trigger.Title" = "Recibir notificación cuando";
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Deshabilitar avatares animados";
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Deshabilitar emojis animados";
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Abrir links en Mastodon";
"Scene.Settings.Section.Preference.Title" = "Preferencias";
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Modo oscuro negro real";
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Usar navegador predeterminado para abrir los enlaces";

View File

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

View File

@ -108,6 +108,7 @@ Egiaztatu Interneteko konexioa.";
"Common.Controls.Status.MediaContentWarning" = "Ukitu edonon bistaratzeko";
"Common.Controls.Status.Poll.Closed" = "Itxita";
"Common.Controls.Status.Poll.Vote" = "Bozkatu";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Erakutsi bidalketa";
"Common.Controls.Status.ShowUserProfile" = "Erakutsi erabiltzailearen profila";
"Common.Controls.Status.Tag.Email" = "Eposta";
@ -201,10 +202,11 @@ Mastodonera igo.";
"Scene.ConfirmEmail.Subtitle" = "Eposta bat bidali dizugu %@ helbidera,
sakatu kontua berresteko esteka.";
"Scene.ConfirmEmail.Title" = "Eta azkenik...";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";
"Scene.Discovery.Tabs.Posts" = "Posts";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "Zuretzat";
"Scene.Discovery.Tabs.Hashtags" = "Traolak";
"Scene.Discovery.Tabs.News" = "Albisteak";
"Scene.Discovery.Tabs.Posts" = "Argitalpenak";
"Scene.Favorite.Title" = "Zure gogokoak";
"Scene.Follower.Footer" = "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen.";
"Scene.Following.Footer" = "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen.";

View File

@ -108,6 +108,7 @@ Veuillez vérifier votre accès à Internet.";
"Common.Controls.Status.MediaContentWarning" = "Tapotez nimporte où pour révéler la publication";
"Common.Controls.Status.Poll.Closed" = "Fermé";
"Common.Controls.Status.Poll.Vote" = "Voter";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Montrer la publication";
"Common.Controls.Status.ShowUserProfile" = "Montrer le profil de lutilisateur·rice";
"Common.Controls.Status.Tag.Email" = "Courriel";
@ -201,6 +202,7 @@ téléversé sur Mastodon.";
"Scene.ConfirmEmail.Subtitle" = "Nous venons denvoyer un courriel à %@,
tapotez le lien pour confirmer votre compte.";
"Scene.ConfirmEmail.Title" = "Une dernière chose.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "Pour vous";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "Actualité";

View File

@ -108,6 +108,7 @@ Thoir sùil air a cheangal agad ris an eadar-lìon.";
"Common.Controls.Status.MediaContentWarning" = "Thoir gnogag àite sam bith gus a nochdadh";
"Common.Controls.Status.Poll.Closed" = "Dùinte";
"Common.Controls.Status.Poll.Vote" = "Cuir bhòt";
"Common.Controls.Status.SensitiveContent" = "Susbaint fhrionasach";
"Common.Controls.Status.ShowPost" = "Seall am post";
"Common.Controls.Status.ShowUserProfile" = "Seall pròifil a chleachdaiche";
"Common.Controls.Status.Tag.Email" = "Post-d";
@ -201,10 +202,11 @@ a luchdadh suas gu Mastodon.";
"Scene.ConfirmEmail.Subtitle" = "Tha sinn air post-d a chur gu %@,
thoir gnogag air a chunntas a dhearbhadh a chunntais agad.";
"Scene.ConfirmEmail.Title" = "Aon rud eile.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";
"Scene.Discovery.Tabs.Posts" = "Posts";
"Scene.Discovery.Intro" = "Seo na postaichean fèillmhor nad cheàrnaidh de Mhastodon.";
"Scene.Discovery.Tabs.ForYou" = "Dhut-sa";
"Scene.Discovery.Tabs.Hashtags" = "Tagaichean hais";
"Scene.Discovery.Tabs.News" = "Naidheachdan";
"Scene.Discovery.Tabs.Posts" = "Postaichean";
"Scene.Favorite.Title" = "Na h-annsachdan agad";
"Scene.Follower.Footer" = "Cha dèid luchd-leantainn o fhrithealaichean eile a shealltainn.";
"Scene.Following.Footer" = "Cha dèid cò air a leanas tu air frithealaichean eile a shealltainn.";

View File

@ -46,7 +46,7 @@
"Common.Controls.Actions.Preview" = "プレビュー";
"Common.Controls.Actions.Previous" = "前";
"Common.Controls.Actions.Remove" = "消去";
"Common.Controls.Actions.Reply" = "リプライ";
"Common.Controls.Actions.Reply" = "返信";
"Common.Controls.Actions.ReportUser" = "%@を通報";
"Common.Controls.Actions.Save" = "保存";
"Common.Controls.Actions.SavePhoto" = "写真を撮る";
@ -97,7 +97,7 @@
"Common.Controls.Status.Actions.Hide" = "非表示";
"Common.Controls.Status.Actions.Menu" = "メニュー";
"Common.Controls.Status.Actions.Reblog" = "ブースト";
"Common.Controls.Status.Actions.Reply" = "リプライ";
"Common.Controls.Status.Actions.Reply" = "返信";
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
"Common.Controls.Status.Actions.ShowImage" = "Show image";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
@ -108,6 +108,7 @@
"Common.Controls.Status.MediaContentWarning" = "どこかをタップして表示";
"Common.Controls.Status.Poll.Closed" = "クローズド";
"Common.Controls.Status.Poll.Vote" = "投票";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "投稿を見る";
"Common.Controls.Status.ShowUserProfile" = "プロフィールを見る";
"Common.Controls.Status.Tag.Email" = "メール";
@ -118,7 +119,7 @@
"Common.Controls.Status.Tag.Url" = "URL";
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
"Common.Controls.Status.UserReblogged" = "%@がブースト";
"Common.Controls.Status.UserRepliedTo" = "%@がリプライ";
"Common.Controls.Status.UserRepliedTo" = "%@に返信";
"Common.Controls.Status.Visibility.Direct" = "この投稿はメンションされたユーザーに限り見ることができます。";
"Common.Controls.Status.Visibility.Private" = "この投稿はフォロワーに限り見ることができます。";
"Common.Controls.Status.Visibility.PrivateFromMe" = "この投稿はフォロワーに限り見ることができます。";
@ -139,7 +140,7 @@
"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@のアカウントは停止されました。";
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "不足している投稿を読み込む";
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "読込中...";
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "リプライをもっとみる";
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "返信をさらに表示";
"Common.Controls.Timeline.Timestamp.Now" = "今";
"Scene.AccountList.AddAccount" = "アカウントを追加";
"Scene.AccountList.DismissAccountSwitcher" = "アカウント切替画面を閉じます";
@ -177,9 +178,9 @@
"Scene.Compose.Poll.SixHours" = "6時間";
"Scene.Compose.Poll.ThirtyMinutes" = "30分";
"Scene.Compose.Poll.ThreeDays" = "3日";
"Scene.Compose.ReplyingToUser" = "%@にリプライ";
"Scene.Compose.ReplyingToUser" = "%@に返信";
"Scene.Compose.Title.NewPost" = "新しい投稿";
"Scene.Compose.Title.NewReply" = "新しいリプライ";
"Scene.Compose.Title.NewReply" = "新しい返信";
"Scene.Compose.Visibility.Direct" = "ダイレクト";
"Scene.Compose.Visibility.Private" = "フォロワーのみ";
"Scene.Compose.Visibility.Public" = "パブリック";
@ -195,10 +196,11 @@
"Scene.ConfirmEmail.OpenEmailApp.Title" = "メールを確認";
"Scene.ConfirmEmail.Subtitle" = "先程 %@ にメールを送信しました。リンクをタップしてアカウントを確認してください。";
"Scene.ConfirmEmail.Title" = "さいごにもうひとつ。";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";
"Scene.Discovery.Tabs.Posts" = "Posts";
"Scene.Discovery.Tabs.Hashtags" = "ハッシュタグ";
"Scene.Discovery.Tabs.News" = "ニュース";
"Scene.Discovery.Tabs.Posts" = "投稿";
"Scene.Favorite.Title" = "お気に入り";
"Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。";
"Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。";
@ -238,11 +240,11 @@
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "%@をミュートしますか?";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "ミュートを解除";
"Scene.Profile.SegmentedControl.About" = "About";
"Scene.Profile.SegmentedControl.About" = "概要";
"Scene.Profile.SegmentedControl.Media" = "メディア";
"Scene.Profile.SegmentedControl.Posts" = "投稿";
"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies";
"Scene.Profile.SegmentedControl.Replies" = "リプライ";
"Scene.Profile.SegmentedControl.PostsAndReplies" = "投稿と返信";
"Scene.Profile.SegmentedControl.Replies" = "返信";
"Scene.Register.Error.Item.Agreement" = "契約";
"Scene.Register.Error.Item.Email" = "メール";
"Scene.Register.Error.Item.Locale" = "地域";
@ -278,15 +280,15 @@
"Scene.Register.Title" = "あなたのことを教えてください";
"Scene.Report.Content1" = "他に通報したい投稿はありますか?";
"Scene.Report.Content2" = "この通報についてモデレーターに伝達しておきたい事項はありますか?";
"Scene.Report.ReportSentTitle" = "Thanks for reporting, well look into this.";
"Scene.Report.Reported" = "REPORTED";
"Scene.Report.ReportSentTitle" = "ご報告ありがとうございます、追って確認します。";
"Scene.Report.Reported" = "報告済み";
"Scene.Report.Send" = "通報を送信";
"Scene.Report.SkipToSend" = "コメントなしで送信";
"Scene.Report.Step1" = "ステップ 1/2";
"Scene.Report.Step2" = "ステップ 2/2";
"Scene.Report.TextPlaceholder" = "追加コメントを入力";
"Scene.Report.Title" = "%@を通報";
"Scene.Report.TitleReport" = "Report";
"Scene.Report.TitleReport" = "報告する";
"Scene.Search.Recommend.Accounts.Description" = "以下のアカウントをフォローしてみてはいかがでしょうか?";
"Scene.Search.Recommend.Accounts.Follow" = "フォロー";
"Scene.Search.Recommend.Accounts.Title" = "おすすめのアカウント";

View File

@ -98,16 +98,17 @@ Ma ulac aɣilif, senqed tuqqna-inek internet.";
"Common.Controls.Status.Actions.Menu" = "Umuɣ";
"Common.Controls.Status.Actions.Reblog" = "Aɛiwed n usuffeɣ";
"Common.Controls.Status.Actions.Reply" = "Err";
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
"Common.Controls.Status.Actions.ShowImage" = "Show image";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
"Common.Controls.Status.Actions.ShowGif" = "Sken GIF";
"Common.Controls.Status.Actions.ShowImage" = "Sken tugna";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Sken ameɣri n tvidyut";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Sit teǧǧeḍ aḍad-ik•im i wakken ad d-iffeɣ wumuɣ";
"Common.Controls.Status.Actions.Unfavorite" = "Kkes seg yismenyifen";
"Common.Controls.Status.Actions.Unreblog" = "Sefsex allus n usuffeɣ";
"Common.Controls.Status.ContentWarning" = "Alɣu n ugbur";
"Common.Controls.Status.MediaContentWarning" = "Sit anida tebɣiḍ i wakken ad twaliḍ";
"Common.Controls.Status.Poll.Closed" = "Ifukk";
"Common.Controls.Status.Poll.Vote" = "Dɣeṛ";
"Common.Controls.Status.SensitiveContent" = "Agbur amḥulfu";
"Common.Controls.Status.ShowPost" = "Sken-d tasuffeɣt";
"Common.Controls.Status.ShowUserProfile" = "Ssken-d amaɣnu n useqdac";
"Common.Controls.Status.Tag.Email" = "Imayl";
@ -116,7 +117,7 @@ Ma ulac aɣilif, senqed tuqqna-inek internet.";
"Common.Controls.Status.Tag.Link" = "Aseɣwen";
"Common.Controls.Status.Tag.Mention" = "Tabdart";
"Common.Controls.Status.Tag.Url" = "URL";
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
"Common.Controls.Status.TapToReveal" = "Sit i uskan";
"Common.Controls.Status.UserReblogged" = "Tettwasuffeɣ-d %@ i tikkelt-nniḍen";
"Common.Controls.Status.UserRepliedTo" = "Yerra ɣef %@";
"Common.Controls.Status.Visibility.Direct" = "D ineḍfaren-is kan i izemren ad walin tsuffeɣ-a.";
@ -200,10 +201,11 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Sefqed Tanaka-inek.";
"Scene.ConfirmEmail.Subtitle" = "Sit ɣef useɣwen i ak-n-uznen i wakken ad tesneqdeḍ amiḍan-ik.";
"Scene.ConfirmEmail.Title" = "Taɣawsa taneggarut.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";
"Scene.Discovery.Tabs.Posts" = "Posts";
"Scene.Discovery.Intro" = "Tigi d tisuffaɣ i d-ijebbden s waṭas deg tama-inek•inem n Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "I kečč·kem";
"Scene.Discovery.Tabs.Hashtags" = "Ihacṭagen";
"Scene.Discovery.Tabs.News" = "Isallen";
"Scene.Discovery.Tabs.Posts" = "Tisuffaɣ";
"Scene.Favorite.Title" = "Ismenyifen-ik·im";
"Scene.Follower.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
"Scene.Following.Footer" = "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara.";
@ -225,10 +227,10 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.Preview.Keyboard.ClosePreview" = "Mdel timeẓri";
"Scene.Preview.Keyboard.ShowNext" = "Sken uḍfir";
"Scene.Preview.Keyboard.ShowPrevious" = "Sken udfir";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Sin isitiyen i twaledyawt n tebdart";
"Scene.Profile.Accessibility.EditAvatarImage" = "Ẓreg tugna n avaṭar";
"Scene.Profile.Accessibility.ShowAvatarImage" = "Sken tugna n avaṭar";
"Scene.Profile.Accessibility.ShowBannerImage" = "Sken tugna n uɣerrac";
"Scene.Profile.Dashboard.Followers" = "imeḍfaren";
"Scene.Profile.Dashboard.Following" = "iṭafaṛ";
"Scene.Profile.Dashboard.Posts" = "tisuffaɣ";
@ -315,7 +317,7 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Taggayt: Akk";
"Scene.ServerPicker.Button.Category.Art" = "taẓuri";
"Scene.ServerPicker.Button.Category.Food" = "učči";
"Scene.ServerPicker.Button.Category.Furry" = "furry";
"Scene.ServerPicker.Button.Category.Furry" = "s taḍut";
"Scene.ServerPicker.Button.Category.Games" = "uraren";
"Scene.ServerPicker.Button.Category.General" = "amatu";
"Scene.ServerPicker.Button.Category.Journalism" = "taɣamsa";
@ -368,7 +370,7 @@ Ad d-yettwasali ɣef Mastodon.";
"Scene.Settings.Section.Notifications.Trigger.Title" = "Selɣu-yi-d mi ara";
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Sens ivaṭaren yettembiwilen";
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Sens imujiten yettembiwilen";
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Ldi iseɣwan deg Mastodon";
"Scene.Settings.Section.Preference.Title" = "Imenyafen";
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Askar aberkan n tidet";
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Seqdec iminig amezwer i twaledyawt n yiseɣwan";

View File

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

View File

@ -108,6 +108,7 @@ Jkx girêdana înternetê xwe kontrol bike.";
"Common.Controls.Status.MediaContentWarning" = "Ji bo eşkerekirinê li derekî bitikîne";
"Common.Controls.Status.Poll.Closed" = "Girtî";
"Common.Controls.Status.Poll.Vote" = "Deng bide";
"Common.Controls.Status.SensitiveContent" = "Naveroka hestiyarî";
"Common.Controls.Status.ShowPost" = "Şandiyê nîşan bide";
"Common.Controls.Status.ShowUserProfile" = "Profîla bikarhêner nîşan bide";
"Common.Controls.Status.Tag.Email" = "E-name";
@ -201,6 +202,7 @@ Profîla te ji wan ra wiha xuya dike.";
"Scene.ConfirmEmail.Subtitle" = "Me tenê e-nameyek ji %@ re şand,
girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.";
"Scene.ConfirmEmail.Title" = "Tiştekî dawî.";
"Scene.Discovery.Intro" = "Ev şandiyên ku di quncika Mastodon balê dikişîne.";
"Scene.Discovery.Tabs.ForYou" = "Ji bo te";
"Scene.Discovery.Tabs.Hashtags" = "Hashtag";
"Scene.Discovery.Tabs.News" = "Nûçe";

View File

@ -1,63 +1,63 @@
"Common.Alerts.BlockDomain.BlockEntireDomain" = "Domein blokkeren";
"Common.Alerts.BlockDomain.Title" = "Weet u zeker dat u alles van %@ wilt blokkeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en wenselijker. U zult geen berichten meer zien van dit domein en volgers van dit domein worden verwijderd.";
"Common.Alerts.BlockDomain.BlockEntireDomain" = "Blokkeer domein";
"Common.Alerts.BlockDomain.Title" = "Weet je het echt heel erg zeker dat je alles van %@ wilt negeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende. Je zult geen berichten van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.";
"Common.Alerts.CleanCache.Message" = "Cache-geheugen (%@) succesvol gewist.";
"Common.Alerts.CleanCache.Title" = "Cache-geheugen Wissen";
"Common.Alerts.Common.PleaseTryAgain" = "Probeer het opnieuw.";
"Common.Alerts.Common.PleaseTryAgainLater" = "Probeer het later nog eens.";
"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?";
"Common.Alerts.DeletePost.Title" = "Weet u zeker dat u dit bericht wilt verwijderen?";
"Common.Alerts.DeletePost.Message" = "Weet je zeker dat je dit bericht wilt verwijderen?";
"Common.Alerts.DeletePost.Title" = "Verwijder Bericht";
"Common.Alerts.DiscardPostContent.Message" = "Bevestig het verwijderen van het concept bericht.";
"Common.Alerts.DiscardPostContent.Title" = "Concept Verwijderen";
"Common.Alerts.EditProfileFailure.Message" = "Het profiel kan niet bewerkt worden. Probeer het opnieuw.";
"Common.Alerts.DiscardPostContent.Title" = "Verwijder concept";
"Common.Alerts.EditProfileFailure.Message" = "Je profiel kan niet bewerkt worden. Probeer het opnieuw.";
"Common.Alerts.EditProfileFailure.Title" = "Profiel bewerken mislukt";
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Slechts één video kan aan een bericht worden gekoppeld.";
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Kan niet meer dan één video toevoegen.";
"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Een video kan niet aan een bericht met afbeeldingen worden gekoppeld.";
"Common.Alerts.PublishPostFailure.Message" = "Het publiceren van het bericht is mislukt. Controleer alstublieft uw internetverbinding.";
"Common.Alerts.PublishPostFailure.Message" = "Het publiceren van het bericht is mislukt. Controleer je internetverbinding.";
"Common.Alerts.PublishPostFailure.Title" = "Publicatiefout";
"Common.Alerts.SavePhotoFailure.Message" = "Geef toestemming om de foto op te slaan.";
"Common.Alerts.SavePhotoFailure.Title" = "Foto Opslaan Mislukt";
"Common.Alerts.ServerError.Title" = "Serverfout";
"Common.Alerts.SignOut.Confirm" = "Afmelden";
"Common.Alerts.SignOut.Message" = "Weet u zeker dat u zich wilt afmelden?";
"Common.Alerts.SignOut.Title" = "Afmelden";
"Common.Alerts.SignOut.Confirm" = "Log-uit";
"Common.Alerts.SignOut.Message" = "Weet je zeker dat je wilt uitloggen?";
"Common.Alerts.SignOut.Title" = "Log-uit";
"Common.Alerts.SignUpFailure.Title" = "Registratiefout";
"Common.Alerts.VoteFailure.PollEnded" = "De peiling is beëindigd";
"Common.Alerts.VoteFailure.Title" = "Stemmen Mislukt";
"Common.Controls.Actions.Add" = "Toevoegen";
"Common.Controls.Actions.Add" = "Voeg toe";
"Common.Controls.Actions.Back" = "Terug";
"Common.Controls.Actions.BlockDomain" = "Blokkeer %@";
"Common.Controls.Actions.Cancel" = "Annuleren";
"Common.Controls.Actions.Compose" = "Compose";
"Common.Controls.Actions.Cancel" = "Annuleer";
"Common.Controls.Actions.Compose" = "Schrijf bericht";
"Common.Controls.Actions.Confirm" = "Bevestigen";
"Common.Controls.Actions.Continue" = "Doorgaan";
"Common.Controls.Actions.CopyPhoto" = "Foto kopiëren";
"Common.Controls.Actions.Delete" = "Verwijderen";
"Common.Controls.Actions.Continue" = "Ga verder";
"Common.Controls.Actions.CopyPhoto" = "Kopieer foto";
"Common.Controls.Actions.Delete" = "Verwijder";
"Common.Controls.Actions.Discard" = "Weggooien";
"Common.Controls.Actions.Done" = "Klaar";
"Common.Controls.Actions.Edit" = "Bewerken";
"Common.Controls.Actions.Edit" = "Bewerk";
"Common.Controls.Actions.FindPeople" = "Zoek mensen om te volgen";
"Common.Controls.Actions.ManuallySearch" = "Handmatig zoeken";
"Common.Controls.Actions.Next" = "Volgende";
"Common.Controls.Actions.Ok" = "Oké";
"Common.Controls.Actions.Ok" = "Ok";
"Common.Controls.Actions.Open" = "Open";
"Common.Controls.Actions.OpenInBrowser" = "Open in Browser";
"Common.Controls.Actions.OpenInBrowser" = "Open in browser";
"Common.Controls.Actions.OpenInSafari" = "Open in Safari";
"Common.Controls.Actions.Preview" = "Voorvertoning";
"Common.Controls.Actions.Previous" = "Vorige";
"Common.Controls.Actions.Remove" = "Verwijderen";
"Common.Controls.Actions.Reply" = "Reageren";
"Common.Controls.Actions.Remove" = "Verwijder";
"Common.Controls.Actions.Reply" = "Reageer";
"Common.Controls.Actions.ReportUser" = "Rapporteer %@";
"Common.Controls.Actions.Save" = "Opslaan";
"Common.Controls.Actions.SavePhoto" = "Foto Opslaan";
"Common.Controls.Actions.Save" = "Bewaar";
"Common.Controls.Actions.SavePhoto" = "Bewaar foto";
"Common.Controls.Actions.SeeMore" = "Meer";
"Common.Controls.Actions.Settings" = "Instellingen";
"Common.Controls.Actions.Share" = "Delen";
"Common.Controls.Actions.SharePost" = "Bericht Delen";
"Common.Controls.Actions.Share" = "Deel";
"Common.Controls.Actions.SharePost" = "Deel bericht";
"Common.Controls.Actions.ShareUser" = "Delen %@";
"Common.Controls.Actions.SignIn" = "Aanmelden";
"Common.Controls.Actions.SignUp" = "Registreren";
"Common.Controls.Actions.Skip" = "Overslaan";
"Common.Controls.Actions.TakePhoto" = "Foto Maken";
"Common.Controls.Actions.TakePhoto" = "Maak foto";
"Common.Controls.Actions.TryAgain" = "Probeer Opnieuw";
"Common.Controls.Actions.UnblockDomain" = "Deblokkeer %@";
"Common.Controls.Friendship.Block" = "Blokkeren";
@ -79,7 +79,7 @@
"Common.Controls.Keyboard.Common.ComposeNewPost" = "Nieuw Bericht Opstellen";
"Common.Controls.Keyboard.Common.OpenSettings" = "Open Instellingen";
"Common.Controls.Keyboard.Common.ShowFavorites" = "Favorieten Weergeven";
"Common.Controls.Keyboard.Common.SwitchToTab" = "Wisselen naar %@";
"Common.Controls.Keyboard.Common.SwitchToTab" = "Overschakelen naar %@";
"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Volgende Sectie";
"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Vorige Sectie";
"Common.Controls.Keyboard.Timeline.NextStatus" = "Volgend Bericht";
@ -88,25 +88,26 @@
"Common.Controls.Keyboard.Timeline.OpenStatus" = "Open Bericht";
"Common.Controls.Keyboard.Timeline.PreviewImage" = "Voorvertoning Afbeelding";
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Vorig Bericht";
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reageren";
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Inhoudswaarschuwing Omschakelen";
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favoriet Omschakelen bij Bericht";
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reageer";
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Inhoudswaarschuwing";
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favoriet in-/uitschakelen bij Post";
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Delen bij berichten omschakelen";
"Common.Controls.Status.Actions.Favorite" = "Toevoegen aan Favorieten";
"Common.Controls.Status.Actions.Hide" = "Hide";
"Common.Controls.Status.Actions.Hide" = "Verberg";
"Common.Controls.Status.Actions.Menu" = "Menu";
"Common.Controls.Status.Actions.Reblog" = "Delen";
"Common.Controls.Status.Actions.Reply" = "Reageren";
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
"Common.Controls.Status.Actions.ShowImage" = "Show image";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
"Common.Controls.Status.Actions.ShowGif" = "GIF weergeven";
"Common.Controls.Status.Actions.ShowImage" = "Toon afbeelding";
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Toon videospeler";
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tik en houd vast om menu te tonen";
"Common.Controls.Status.Actions.Unfavorite" = "Verwijderen uit Favorieten";
"Common.Controls.Status.Actions.Unreblog" = "Delen ongedaan maken";
"Common.Controls.Status.ContentWarning" = "Inhoudswaarschuwing";
"Common.Controls.Status.MediaContentWarning" = "Tap hier om te tonen";
"Common.Controls.Status.Poll.Closed" = "Gesloten";
"Common.Controls.Status.Poll.Vote" = "Stemmen";
"Common.Controls.Status.SensitiveContent" = "Gevoelige inhoud";
"Common.Controls.Status.ShowPost" = "Toon Bericht";
"Common.Controls.Status.ShowUserProfile" = "Toon Gebruikersprofiel";
"Common.Controls.Status.Tag.Email" = "Email";
@ -115,17 +116,17 @@
"Common.Controls.Status.Tag.Link" = "Link";
"Common.Controls.Status.Tag.Mention" = "Vermelden";
"Common.Controls.Status.Tag.Url" = "URL";
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
"Common.Controls.Status.UserReblogged" = "%@ gedeeld";
"Common.Controls.Status.TapToReveal" = "Tik om te onthullen";
"Common.Controls.Status.UserReblogged" = "%@ heeft gedeeld";
"Common.Controls.Status.UserRepliedTo" = "Reactie op %@";
"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post.";
"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post.";
"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post.";
"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline.";
"Common.Controls.Status.Visibility.Direct" = "Alleen de vermelde persoon kan dit bericht zien.";
"Common.Controls.Status.Visibility.Private" = "Alleen hun volgers kunnen dit bericht zien.";
"Common.Controls.Status.Visibility.PrivateFromMe" = "Alleen mijn volgers kunnen dit bericht zien.";
"Common.Controls.Status.Visibility.Unlisted" = "Iedereen kan dit bericht zien maar het wordt niet in de publieke tijdlijn getoond.";
"Common.Controls.Tabs.Home" = "Start";
"Common.Controls.Tabs.Notification" = "Melding";
"Common.Controls.Tabs.Profile" = "Profiel";
"Common.Controls.Tabs.Search" = "Zoeken";
"Common.Controls.Tabs.Search" = "Zoek";
"Common.Controls.Timeline.Filtered" = "Gefilterd";
"Common.Controls.Timeline.Header.BlockedWarning" = "U kunt het profiel van deze gebruiker niet bekijken zolang u geblokkeerd bent.";
"Common.Controls.Timeline.Header.BlockingWarning" = "U kunt het profiel van deze geblokkeerde gebruiker niet bekijken.
@ -140,9 +141,9 @@ Uw profiel ziet er zo uit voor hen.";
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Resterende berichten laden...";
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Toon meer reacties";
"Common.Controls.Timeline.Timestamp.Now" = "Nu";
"Scene.AccountList.AddAccount" = "Add Account";
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
"Scene.AccountList.AddAccount" = "Voeg account toe";
"Scene.AccountList.DismissAccountSwitcher" = "Annuleer account wisselen";
"Scene.AccountList.TabBarHint" = "Huidige geselecteerde profiel: %@. Dubbel-tik en houd vast om account te wisselen";
"Scene.Compose.Accessibility.AppendAttachment" = "Bijlage Toevoegen";
"Scene.Compose.Accessibility.AppendPoll" = "Peiling Toevoegen";
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Eigen Emojikiezer";
@ -184,7 +185,7 @@ Uw profiel ziet er zo uit voor hen.";
"Scene.Compose.Visibility.Public" = "Openbaar";
"Scene.Compose.Visibility.Unlisted" = "Niet-vermeld";
"Scene.ConfirmEmail.Button.OpenEmailApp" = "Email Openen";
"Scene.ConfirmEmail.Button.Resend" = "Resend";
"Scene.ConfirmEmail.Button.Resend" = "Verstuur opnieuw";
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Controleer of uw emailadres correct is en of the email in de ongewenste email filter terecht is gekomen.";
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Email Opnieuw Versturen";
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Controleer uw emailadres";
@ -195,13 +196,14 @@ Uw profiel ziet er zo uit voor hen.";
"Scene.ConfirmEmail.Subtitle" = "We hebben een e-mail gestuurd naar %@,
klik op de link om uw account te bevestigen.";
"Scene.ConfirmEmail.Title" = "Nog één ding.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Intro" = "Dit zijn de berichten die populair zijn in jouw Mastodon-kringen.";
"Scene.Discovery.Tabs.ForYou" = "Voor jou";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";
"Scene.Discovery.Tabs.Posts" = "Posts";
"Scene.Discovery.Tabs.News" = "Nieuws";
"Scene.Discovery.Tabs.Posts" = "Berichten";
"Scene.Favorite.Title" = "Uw favorieten";
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
"Scene.Follower.Footer" = "Volgers van andere servers worden niet weergegeven.";
"Scene.Following.Footer" = "Volgers van andere servers worden niet weergegeven.";
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Bekijk nieuwe berichten";
"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline";
"Scene.HomeTimeline.NavigationBarState.Published" = "Gepubliceerd!";
@ -209,39 +211,39 @@ klik op de link om uw account te bevestigen.";
"Scene.HomeTimeline.Title" = "Start";
"Scene.Notification.Keyobard.ShowEverything" = "Alles weergeven";
"Scene.Notification.Keyobard.ShowMentions" = "Vermeldingen weergeven";
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post";
"Scene.Notification.NotificationDescription.FollowedYou" = "followed you";
"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you";
"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended";
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post";
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you";
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "heeft je bericht als favoriet gemrkeerd";
"Scene.Notification.NotificationDescription.FollowedYou" = "volgt je";
"Scene.Notification.NotificationDescription.MentionedYou" = "noemde je";
"Scene.Notification.NotificationDescription.PollHasEnded" = "de peiling is beëindigd";
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "deelde je bericht";
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "verzoek je te volgen";
"Scene.Notification.Title.Everything" = "Alles";
"Scene.Notification.Title.Mentions" = "Vermeldingen";
"Scene.Preview.Keyboard.ClosePreview" = "Voorbeeldweergave Sluiten";
"Scene.Preview.Keyboard.ShowNext" = "Volgende";
"Scene.Preview.Keyboard.ShowPrevious" = "Vorige";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Dubbel tikken om de lijst te openen";
"Scene.Profile.Accessibility.EditAvatarImage" = "Bewerk avatar-afbeelding";
"Scene.Profile.Accessibility.ShowAvatarImage" = "Toon avatar-afbeelding";
"Scene.Profile.Accessibility.ShowBannerImage" = "Toon banner-afbeelding";
"Scene.Profile.Dashboard.Followers" = "volgers";
"Scene.Profile.Dashboard.Following" = "volgend";
"Scene.Profile.Dashboard.Posts" = "berichten";
"Scene.Profile.Fields.AddRow" = "Rij Toevoegen";
"Scene.Profile.Fields.Placeholder.Content" = "Inhoud";
"Scene.Profile.Fields.Placeholder.Label" = "Etiket";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Bevestig om %@ te blokkeren";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Blokkeer account";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Bevestig om %@ te negeren";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Negeer account";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Bevestig om %@ te deblokkeren";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Deblokkeer Account";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bevestig om %@ te negeren";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Account Negeren";
"Scene.Profile.SegmentedControl.About" = "About";
"Scene.Profile.SegmentedControl.About" = "Informatie";
"Scene.Profile.SegmentedControl.Media" = "Media";
"Scene.Profile.SegmentedControl.Posts" = "Berichten";
"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies";
"Scene.Profile.SegmentedControl.PostsAndReplies" = "Berichten en reacties";
"Scene.Profile.SegmentedControl.Replies" = "Reacties";
"Scene.Register.Error.Item.Agreement" = "Overeenkomst";
"Scene.Register.Error.Item.Email" = "Email";
@ -267,26 +269,26 @@ klik op de link om uw account te bevestigen.";
"Scene.Register.Input.DisplayName.Placeholder" = "weergavenaam";
"Scene.Register.Input.Email.Placeholder" = "email";
"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Waarom wil u zich hier registreren?";
"Scene.Register.Input.Password.Accessibility.Checked" = "checked";
"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked";
"Scene.Register.Input.Password.CharacterLimit" = "8 characters";
"Scene.Register.Input.Password.Accessibility.Checked" = "ingeschakeld";
"Scene.Register.Input.Password.Accessibility.Unchecked" = "uitgeschakeld";
"Scene.Register.Input.Password.CharacterLimit" = "8 tekens";
"Scene.Register.Input.Password.Hint" = "Uw wachtwoord moet ten minste acht tekens bevatten";
"Scene.Register.Input.Password.Placeholder" = "wachtwoord";
"Scene.Register.Input.Password.Require" = "Your password needs at least:";
"Scene.Register.Input.Password.Require" = "Je wachtwoord moet ten minste:";
"Scene.Register.Input.Username.DuplicatePrompt" = "Deze gebruikersnaam is al in gebruik.";
"Scene.Register.Input.Username.Placeholder" = "gebruikersnaam";
"Scene.Register.Title" = "Vertel ons over uzelf.";
"Scene.Report.Content1" = "Zijn er nog meer berichten die u aan het rapport wilt toevoegen?";
"Scene.Report.Content2" = "Is er iets anders over dit rapport dat de moderators zouden moeten weten?";
"Scene.Report.ReportSentTitle" = "Thanks for reporting, well look into this.";
"Scene.Report.Reported" = "REPORTED";
"Scene.Report.ReportSentTitle" = "Bedankt voor het rapporteren, we zullen hiernaar kijken.";
"Scene.Report.Reported" = "Gerapporteerd";
"Scene.Report.Send" = "Stuur rapport";
"Scene.Report.SkipToSend" = "Verstuur zonder opmerkingen";
"Scene.Report.Step1" = "Stap 1 van 2";
"Scene.Report.Step2" = "Stap 2 van 2";
"Scene.Report.TextPlaceholder" = "Schrijf of plak aanvullende opmerkingen";
"Scene.Report.Title" = "Rapporteer %@";
"Scene.Report.TitleReport" = "Report";
"Scene.Report.TitleReport" = "Rapporteer";
"Scene.Search.Recommend.Accounts.Description" = "Misschien dat u geïnteresseerd bent in deze accounts";
"Scene.Search.Recommend.Accounts.Follow" = "Volgen";
"Scene.Search.Recommend.Accounts.Title" = "Interessante accounts voor u";
@ -327,8 +329,8 @@ klik op de link om uw account te bevestigen.";
"Scene.ServerPicker.Label.Category" = "CATEGORIE";
"Scene.ServerPicker.Label.Language" = "TAAL";
"Scene.ServerPicker.Label.Users" = "GEBRUIKERS";
"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one.";
"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.";
"Scene.ServerPicker.Subtitle" = "Kies een gemeenschap gebaseerd op jouw interesses, regio of een algemeen doel.";
"Scene.ServerPicker.SubtitleExtend" = "Kies een gemeenschap gebaseerd op jouw interesses, regio, of een algemeen doel. Elke gemeenschap wordt beheerd door een volledig onafhankelijke organisatie of individu.";
"Scene.ServerPicker.Title" = "Kies een server, welke dan ook.";
"Scene.ServerRules.Button.Confirm" = "Ik Ga Akkoord";
"Scene.ServerRules.PrivacyPolicy" = "privacybeleid";
@ -346,11 +348,11 @@ klik op de link om uw account te bevestigen.";
"Scene.Settings.Section.BoringZone.Privacy" = "Privacybeleid";
"Scene.Settings.Section.BoringZone.Terms" = "Servicevoorwaarden";
"Scene.Settings.Section.BoringZone.Title" = "De Saaie Instellingen";
"Scene.Settings.Section.LookAndFeel.Light" = "Light";
"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark";
"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark";
"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel";
"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System";
"Scene.Settings.Section.LookAndFeel.Light" = "Licht";
"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Echt donker";
"Scene.Settings.Section.LookAndFeel.SortaDark" = "Donker";
"Scene.Settings.Section.LookAndFeel.Title" = "Opmaak";
"Scene.Settings.Section.LookAndFeel.UseSystem" = "Gebruik systeem";
"Scene.Settings.Section.Notifications.Boosts" = "Mijn bericht deelt";
"Scene.Settings.Section.Notifications.Favorites" = "Mijn bericht als favoriet toevoegt";
"Scene.Settings.Section.Notifications.Follows" = "Mij volgt";
@ -375,9 +377,9 @@ klik op de link om uw account te bevestigen.";
"Scene.SuggestionAccount.Title" = "Zoek Mensen om te Volgen";
"Scene.Thread.BackTitle" = "Bericht";
"Scene.Thread.Title" = "Bericht van %@";
"Scene.Welcome.GetStarted" = "Get Started";
"Scene.Welcome.LogIn" = "Log In";
"Scene.Welcome.GetStarted" = "Aan de slag";
"Scene.Welcome.LogIn" = "Log in";
"Scene.Welcome.Slogan" = "Sociale media terug in uw handen.";
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
"Scene.Wizard.AccessibilityHint" = "Tik tweemaal om het popup-scherm te sluiten";
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Schakel tussen meerdere accounts door de profielknop in te drukken en vast te houden.";
"Scene.Wizard.NewInMastodon" = "Nieuw in Mastodon";

View File

@ -108,6 +108,7 @@
"Common.Controls.Status.MediaContentWarning" = "Нажмите в любом месте, чтобы показать";
"Common.Controls.Status.Poll.Closed" = "Завершён";
"Common.Controls.Status.Poll.Vote" = "Проголосовать";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Показать пост";
"Common.Controls.Status.ShowUserProfile" = "Показать профиль пользователя";
"Common.Controls.Status.Tag.Email" = "E-mail";
@ -211,6 +212,7 @@
Нажмите на ссылку в нём, чтобы
подтвердить свою учётную запись.";
"Scene.ConfirmEmail.Title" = "И ещё кое-что.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";

View File

@ -108,6 +108,7 @@ Tarkista internet-yhteytesi.";
"Common.Controls.Status.MediaContentWarning" = "Napauta mistä tahansa paljastaaksesi";
"Common.Controls.Status.Poll.Closed" = "Suljettu";
"Common.Controls.Status.Poll.Vote" = "Vote";
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
"Common.Controls.Status.ShowPost" = "Näytä julkaisu";
"Common.Controls.Status.ShowUserProfile" = "Näytä tili";
"Common.Controls.Status.Tag.Email" = "Sähköposti";
@ -200,6 +201,7 @@ uploaded to Mastodon.";
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Tarkasta postilaatikkosi.";
"Scene.ConfirmEmail.Subtitle" = "Lähetimme juuri sähköpostin osoitteeseen %@, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.";
"Scene.ConfirmEmail.Title" = "Viimeinen asia.";
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
"Scene.Discovery.Tabs.ForYou" = "For You";
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
"Scene.Discovery.Tabs.News" = "News";

View File

@ -108,6 +108,7 @@
"Common.Controls.Status.MediaContentWarning" = "แตะที่ใดก็ตามเพื่อเปิดเผย";
"Common.Controls.Status.Poll.Closed" = "ปิดแล้ว";
"Common.Controls.Status.Poll.Vote" = "ลงคะแนน";
"Common.Controls.Status.SensitiveContent" = "เนื้อหาที่ละเอียดอ่อน";
"Common.Controls.Status.ShowPost" = "แสดงโพสต์";
"Common.Controls.Status.ShowUserProfile" = "แสดงโปรไฟล์ผู้ใช้";
"Common.Controls.Status.Tag.Email" = "อีเมล";
@ -200,6 +201,7 @@
"Scene.ConfirmEmail.OpenEmailApp.Title" = "ตรวจสอบกล่องขาเข้าของคุณ";
"Scene.ConfirmEmail.Subtitle" = "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ";
"Scene.ConfirmEmail.Title" = "หนึ่งสิ่งสุดท้าย";
"Scene.Discovery.Intro" = "นี่คือโพสต์ที่กำลังได้รับความสนใจในมุมของ Mastodon ของคุณ";
"Scene.Discovery.Tabs.ForYou" = "สำหรับคุณ";
"Scene.Discovery.Tabs.Hashtags" = "แฮชแท็ก";
"Scene.Discovery.Tabs.News" = "ข่าว";

View File

@ -7,7 +7,7 @@
"Common.Alerts.DeletePost.Message" = "Bạn có chắc muốn xóa tút này không?";
"Common.Alerts.DeletePost.Title" = "Xóa tút";
"Common.Alerts.DiscardPostContent.Message" = "Xác nhận bỏ qua nội dung tút đã viết.";
"Common.Alerts.DiscardPostContent.Title" = "Hủy bản nháp";
"Common.Alerts.DiscardPostContent.Title" = "Bỏ bản nháp";
"Common.Alerts.EditProfileFailure.Message" = "Không thể chỉnh sửa hồ sơ. Vui lòng thử lại.";
"Common.Alerts.EditProfileFailure.Title" = "Lỗi chỉnh sửa hồ sơ";
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Không thể đính kèm nhiều video.";
@ -108,6 +108,7 @@ Vui lòng kiểm tra kết nối mạng.";
"Common.Controls.Status.MediaContentWarning" = "Nhấn để hiển thị";
"Common.Controls.Status.Poll.Closed" = "Kết thúc";
"Common.Controls.Status.Poll.Vote" = "Bình chọn";
"Common.Controls.Status.SensitiveContent" = "Nội dung nhạy cảm";
"Common.Controls.Status.ShowPost" = "Xem tút";
"Common.Controls.Status.ShowUserProfile" = "Xem trang hồ sơ";
"Common.Controls.Status.Tag.Email" = "Email";
@ -116,7 +117,7 @@ Vui lòng kiểm tra kết nối mạng.";
"Common.Controls.Status.Tag.Link" = "Liên kết";
"Common.Controls.Status.Tag.Mention" = "Nhắc đến";
"Common.Controls.Status.Tag.Url" = "URL";
"Common.Controls.Status.TapToReveal" = "Nhấn để hiển thị";
"Common.Controls.Status.TapToReveal" = "Nhấn để xem";
"Common.Controls.Status.UserReblogged" = "%@ đăng lại";
"Common.Controls.Status.UserRepliedTo" = "Trả lời %@";
"Common.Controls.Status.Visibility.Direct" = "Chỉ người được nhắc đến có thể thấy tút.";
@ -174,7 +175,7 @@ tải lên Mastodon.";
"Scene.Compose.MediaSelection.Browse" = "Chọn";
"Scene.Compose.MediaSelection.Camera" = "Chụp ảnh";
"Scene.Compose.MediaSelection.PhotoLibrary" = "Thư viện hình ảnh";
"Scene.Compose.Poll.DurationTime" = "Thời gian: %@";
"Scene.Compose.Poll.DurationTime" = "Thời hạn: %@";
"Scene.Compose.Poll.OneDay" = "1 ngày";
"Scene.Compose.Poll.OneHour" = "1 giờ";
"Scene.Compose.Poll.OptionNumber" = "Lựa chọn %ld";
@ -182,10 +183,10 @@ tải lên Mastodon.";
"Scene.Compose.Poll.SixHours" = "6 giờ";
"Scene.Compose.Poll.ThirtyMinutes" = "30 phút";
"Scene.Compose.Poll.ThreeDays" = "3 ngày";
"Scene.Compose.ReplyingToUser" = "trả lời đến %@";
"Scene.Compose.ReplyingToUser" = "trả lời %@";
"Scene.Compose.Title.NewPost" = "Viết tút";
"Scene.Compose.Title.NewReply" = "Viết trả lời";
"Scene.Compose.Visibility.Direct" = "Chỉ người được nhắc đến";
"Scene.Compose.Visibility.Direct" = "Nhắn riêng";
"Scene.Compose.Visibility.Private" = "Riêng tư";
"Scene.Compose.Visibility.Public" = "Công khai";
"Scene.Compose.Visibility.Unlisted" = "Hạn chế";
@ -200,6 +201,7 @@ tải lên Mastodon.";
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Kiểm tra hộp thư của bạn.";
"Scene.ConfirmEmail.Subtitle" = "Nhấn vào liên kết chúng tôi gửi qua email để xác thực tài khoản.";
"Scene.ConfirmEmail.Title" = "Còn điều này nữa.";
"Scene.Discovery.Intro" = "Đây là những tút thu hút được sự chú ý trong góc Mastodon của bạn.";
"Scene.Discovery.Tabs.ForYou" = "Dành cho bạn";
"Scene.Discovery.Tabs.Hashtags" = "Hashtag";
"Scene.Discovery.Tabs.News" = "Tin tức";
@ -316,7 +318,7 @@ tải lên Mastodon.";
"Scene.ServerPicker.Button.Category.Art" = "nghệ thuật";
"Scene.ServerPicker.Button.Category.Food" = "ăn uống";
"Scene.ServerPicker.Button.Category.Furry" = "furry";
"Scene.ServerPicker.Button.Category.Games" = "trò chơi";
"Scene.ServerPicker.Button.Category.Games" = "trò chơi điện tử";
"Scene.ServerPicker.Button.Category.General" = "chung";
"Scene.ServerPicker.Button.Category.Journalism" = "tin tức";
"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt";
@ -363,7 +365,7 @@ tải lên Mastodon.";
"Scene.Settings.Section.Notifications.Title" = "Thông báo";
"Scene.Settings.Section.Notifications.Trigger.Anyone" = "ai đó";
"Scene.Settings.Section.Notifications.Trigger.Follow" = "người tôi theo dõi";
"Scene.Settings.Section.Notifications.Trigger.Follower" = "người theo dõi";
"Scene.Settings.Section.Notifications.Trigger.Follower" = "người theo dõi tôi";
"Scene.Settings.Section.Notifications.Trigger.Noone" = "không một ai";
"Scene.Settings.Section.Notifications.Trigger.Title" = "Thông báo khi";
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Tắt ảnh đại diện GIF";

View File

@ -108,6 +108,7 @@
"Common.Controls.Status.MediaContentWarning" = "点击任意位置显示";
"Common.Controls.Status.Poll.Closed" = "已关闭";
"Common.Controls.Status.Poll.Vote" = "投票";
"Common.Controls.Status.SensitiveContent" = "敏感内容";
"Common.Controls.Status.ShowPost" = "显示帖子";
"Common.Controls.Status.ShowUserProfile" = "查看用户个人资料";
"Common.Controls.Status.Tag.Email" = "电子邮箱";
@ -201,10 +202,11 @@
"Scene.ConfirmEmail.Subtitle" = "我们刚刚向 %@ 发送了一封电子邮件,
点击链接确认你的帐户。";
"Scene.ConfirmEmail.Title" = "最后一件事。";
"Scene.Discovery.Intro" = "这些嘟文在你的长毛象小宇宙中备受关注。";
"Scene.Discovery.Tabs.ForYou" = "为你推荐";
"Scene.Discovery.Tabs.Hashtags" = "话题";
"Scene.Discovery.Tabs.News" = "新闻";
"Scene.Discovery.Tabs.Posts" = "帖子";
"Scene.Discovery.Tabs.Hashtags" = "话题标签";
"Scene.Discovery.Tabs.News" = "最新消息";
"Scene.Discovery.Tabs.Posts" = "嘟文";
"Scene.Favorite.Title" = "你的喜欢";
"Scene.Follower.Footer" = "不会显示来自其它服务器的关注者";
"Scene.Following.Footer" = "不会显示来自其它服务器的关注";

View File

@ -38,7 +38,7 @@ extension Mastodon.Entity {
// https://github.com/mastodon/mastodon/pull/16485
public let configuration: Configuration?
public init(domain: String) {
public init(domain: String, approvalRequired: Bool? = nil) {
self.uri = domain
self.title = domain
self.description = ""
@ -47,7 +47,7 @@ extension Mastodon.Entity {
self.version = nil
self.languages = nil
self.registrations = nil
self.approvalRequired = nil
self.approvalRequired = approvalRequired
self.invitesEnabled = nil
self.urls = nil
self.statistics = nil

View File

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

View File

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

View File

@ -17,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.3.1</string>
<string>1.3.3</string>
<key>CFBundleVersion</key>
<string>113</string>
<string>117</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>

View File

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

View File

@ -54,6 +54,9 @@ public struct StatusEditorView: UIViewRepresentable {
}
public func updateUIView(_ textView: UITextView, context: Context) {
// preserve currently selected text range to prevent cursor jump
let currentlySelectedRange = textView.selectedRange
// update content
// textView.attributedText = attributedString
textView.text = string
@ -66,6 +69,9 @@ public struct StatusEditorView: UIViewRepresentable {
viewDidAppear = false
textView.becomeFirstResponder()
}
// restore selected text range
textView.selectedRange = currentlySelectedRange
}
public func makeCoordinator() -> Coordinator {