Merge branch 'develop' into ios-192-profile-about

# Conflicts:
#	Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift
#	Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController+DataSourceProvider.swift
#	MastodonSDK/Sources/MastodonCore/DataController/FeedDataController.swift
#	MastodonSDK/Sources/MastodonUI/View/Content/StatusView+Configuration.swift
This commit is contained in:
Nathan Mattes 2024-01-31 15:36:53 +01:00
commit b2dbcc8095
138 changed files with 2292 additions and 1391 deletions

View File

@ -12,15 +12,15 @@
"RHxKOw" = "Send Post with text content"; "RHxKOw" = "Send Post with text content";
"RxSqsb" = "Post"; "RxSqsb" = "Գրառում";
"WCIR3D" = "Post ${content} on Mastodon"; "WCIR3D" = "Post ${content} on Mastodon";
"ZKJSNu" = "Post"; "ZKJSNu" = "Գրառում";
"ZS1XaK" = "${content}"; "ZS1XaK" = "${content}";
"ZbSjzC" = "Visibility"; "ZbSjzC" = "Տեսանելիութիւն";
"Zo4jgJ" = "Post Visibility"; "Zo4jgJ" = "Post Visibility";
@ -34,7 +34,7 @@
"dUyuGg" = "Post on Mastodon"; "dUyuGg" = "Post on Mastodon";
"dYQ5NN" = "Public"; "dYQ5NN" = "Հրապարակային";
"ehFLjY" = "Followers Only"; "ehFLjY" = "Followers Only";

View File

@ -29,9 +29,9 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>%ld</string> <string>%ld</string>
<key>one</key> <key>one</key>
<string>1 option</string> <string>1 տարբերակ</string>
<key>other</key> <key>other</key>
<string>%ld options</string> <string>%ld տարբերակ</string>
</dict> </dict>
</dict> </dict>
</dict> </dict>

View File

@ -1,14 +1,14 @@
"16wxgf" = "Post on Mastodon"; "16wxgf" = "Mastodon에 게시하기";
"751xkl" = "Text Content"; "751xkl" = "Text Content";
"CsR7G2" = "Post on Mastodon"; "CsR7G2" = "Mastodon에 게시하기";
"HZSGTr" = "What content to post?"; "HZSGTr" = "What content to post?";
"HdGikU" = "Posting failed"; "HdGikU" = "게시 실패";
"KDNTJ4" = "Failure Reason"; "KDNTJ4" = "실패 원인";
"RHxKOw" = "Send Post with text content"; "RHxKOw" = "Send Post with text content";
@ -16,7 +16,7 @@
"WCIR3D" = "Post ${content} on Mastodon"; "WCIR3D" = "Post ${content} on Mastodon";
"ZKJSNu" = "Post"; "ZKJSNu" = "게시";
"ZS1XaK" = "${content}"; "ZS1XaK" = "${content}";

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pendient", "pending": "Pendient",
"block": "Blocar", "block": "Blocar",
"block_user": "Blocar a %s", "block_user": "Blocar a %s",
"block_domain": "Blocar a %s", "block_domain": "Block domain %s",
"unblock": "Desbloquiar", "unblock": "Desbloquiar",
"unblock_user": "Desbloquiar a %s", "unblock_user": "Desbloquiar a %s",
"blocked": "Blocau", "blocked": "Blocau",
"domain_blocked": "Domain Blocked",
"mute": "Silenciar", "mute": "Silenciar",
"mute_user": "Silenciar a %s", "mute_user": "Silenciar a %s",
"unmute": "Desmutear", "unmute": "Desmutear",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Amagar los reblogs", "title": "Amagar los reblogs",
"message": "Comfirmar pa amagar los reblogs" "message": "Comfirmar pa amagar los reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "قيد المُراجعة", "pending": "قيد المُراجعة",
"block": "حظر", "block": "حظر",
"block_user": "حَظرُ %s", "block_user": "حَظرُ %s",
"block_domain": "حظر %s", "block_domain": "Block domain %s",
"unblock": "رفع الحَظر", "unblock": "رفع الحَظر",
"unblock_user": "رفع الحَظر عن %s", "unblock_user": "رفع الحَظر عن %s",
"blocked": "محظور", "blocked": "محظور",
"domain_blocked": "Domain Blocked",
"mute": "كَتم", "mute": "كَتم",
"mute_user": "كَتمُ %s", "mute_user": "كَتمُ %s",
"unmute": "رفع الكتم", "unmute": "رفع الكتم",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "إخفاء إعادات التدوين", "title": "إخفاء إعادات التدوين",
"message": "التأكيد لِإخفاء إعادات التدوين" "message": "التأكيد لِإخفاء إعادات التدوين"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Чакаецца", "pending": "Чакаецца",
"block": "Заблакіраваць", "block": "Заблакіраваць",
"block_user": "Заблакіраваць %s", "block_user": "Заблакіраваць %s",
"block_domain": "Заблакіраваць %s", "block_domain": "Заблакіраваць дамен %s",
"unblock": "Разблакіраваць", "unblock": "Разблакіраваць",
"unblock_user": "Разблакіраваць %s", "unblock_user": "Разблакіраваць %s",
"blocked": "Заблакіраваны", "blocked": "Заблакіраваны",
"domain_blocked": "Дамен заблакіраваны",
"mute": "Ігнараваць", "mute": "Ігнараваць",
"mute_user": "Ігнараваць %s", "mute_user": "Ігнараваць %s",
"unmute": "Не ігнараваць", "unmute": "Не ігнараваць",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Схаваць пашырэнні", "title": "Схаваць пашырэнні",
"message": "Пацвердзіце, каб схаваць пашырэнні" "message": "Пацвердзіце, каб схаваць пашырэнні"
},
"confirm_block_domain": {
"title": "Заблакіраваць дамен",
"message": "Заблакіраваць дамен %s?"
},
"confirm_unblock_domain": {
"title": "Разблакіраваць дамен",
"message": "Разблакіраваць дамен %s?"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pendent", "pending": "Pendent",
"block": "Bloca", "block": "Bloca",
"block_user": "Bloca %s", "block_user": "Bloca %s",
"block_domain": "Bloca %s", "block_domain": "Block domain %s",
"unblock": "Desbloca", "unblock": "Desbloca",
"unblock_user": "Desbloca %s", "unblock_user": "Desbloca %s",
"blocked": "Blocat", "blocked": "Blocat",
"domain_blocked": "Domain Blocked",
"mute": "Silencia", "mute": "Silencia",
"mute_user": "Silencia %s", "mute_user": "Silencia %s",
"unmute": "Deixa de silenciar", "unmute": "Deixa de silenciar",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Amaga Impulsos", "title": "Amaga Impulsos",
"message": "Confirma per a amagar els impulsos" "message": "Confirma per a amagar els impulsos"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "داوات کردووە", "pending": "داوات کردووە",
"block": "ئاستەنگی بکە", "block": "ئاستەنگی بکە",
"block_user": "%s ئاستەنگ بکە", "block_user": "%s ئاستەنگ بکە",
"block_domain": "%s ئاستەنگ بکە", "block_domain": "Block domain %s",
"unblock": "ئاستەنگی مەکە", "unblock": "ئاستەنگی مەکە",
"unblock_user": "%s ئاستەنگ مەکە", "unblock_user": "%s ئاستەنگ مەکە",
"blocked": "ئاستەنگ کراوە", "blocked": "ئاستەنگ کراوە",
"domain_blocked": "Domain Blocked",
"mute": "بێدەنگی بکە", "mute": "بێدەنگی بکە",
"mute_user": "%s بێدەنگە", "mute_user": "%s بێدەنگە",
"unmute": "بێدەنگی مەکە", "unmute": "بێدەنگی مەکە",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Čekající", "pending": "Čekající",
"block": "Blokovat", "block": "Blokovat",
"block_user": "Blokovat %s", "block_user": "Blokovat %s",
"block_domain": "Blokovat %s", "block_domain": "Block domain %s",
"unblock": "Odblokovat", "unblock": "Odblokovat",
"unblock_user": "Odblokovat %s", "unblock_user": "Odblokovat %s",
"blocked": "Blokovaný", "blocked": "Blokovaný",
"domain_blocked": "Domain Blocked",
"mute": "Skrýt", "mute": "Skrýt",
"mute_user": "Skrýt %s", "mute_user": "Skrýt %s",
"unmute": "Odkrýt", "unmute": "Odkrýt",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Skrýt Reblogy", "title": "Skrýt Reblogy",
"message": "Potvrďte skrytí reblogů" "message": "Potvrďte skrytí reblogů"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Yn aros", "pending": "Yn aros",
"block": "Blocio", "block": "Blocio",
"block_user": "Blocio %s", "block_user": "Blocio %s",
"block_domain": "Blocio %s", "block_domain": "Block domain %s",
"unblock": "Dadflocio", "unblock": "Dadflocio",
"unblock_user": "Dadflocio %s", "unblock_user": "Dadflocio %s",
"blocked": "Wedi blocio", "blocked": "Wedi blocio",
"domain_blocked": "Domain Blocked",
"mute": "Anwybyddu", "mute": "Anwybyddu",
"mute_user": "Anwybyddu %s", "mute_user": "Anwybyddu %s",
"unmute": "Dad-anwybyddu", "unmute": "Dad-anwybyddu",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Cuddio Ailflogiau", "title": "Cuddio Ailflogiau",
"message": "Cadarnhau i guddio ailflogiau" "message": "Cadarnhau i guddio ailflogiau"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "In Warteschlange", "pending": "In Warteschlange",
"block": "Blockieren", "block": "Blockieren",
"block_user": "%s blockieren", "block_user": "%s blockieren",
"block_domain": "%s blockieren", "block_domain": "Domain %s sperren",
"unblock": "Blockierung aufheben", "unblock": "Blockierung aufheben",
"unblock_user": "Blockierung von %s aufheben", "unblock_user": "Blockierung von %s aufheben",
"blocked": "Blockiert", "blocked": "Blockiert",
"domain_blocked": "Domain gesperrt",
"mute": "Stummschalten", "mute": "Stummschalten",
"mute_user": "%s stummschalten", "mute_user": "%s stummschalten",
"unmute": "Nicht mehr stummschalten", "unmute": "Nicht mehr stummschalten",
@ -504,8 +505,8 @@
"option_number": "Auswahlmöglichkeit %ld", "option_number": "Auswahlmöglichkeit %ld",
"the_poll_is_invalid": "Die Umfrage ist ungültig", "the_poll_is_invalid": "Die Umfrage ist ungültig",
"the_poll_has_empty_option": "Die Umfrage hat eine leere Option", "the_poll_has_empty_option": "Die Umfrage hat eine leere Option",
"add_option": "Add Option", "add_option": "Option hinzufügen",
"remove_option": "Remove Option", "remove_option": "Option entfernen",
"move_up": "Nach oben", "move_up": "Nach oben",
"move_down": "Nach unten" "move_down": "Nach unten"
}, },
@ -542,7 +543,7 @@
}, },
"language": { "language": {
"title": "Beitragssprache", "title": "Beitragssprache",
"suggested": "Suggested", "suggested": "Empfohlen",
"recent": "Kürzlich", "recent": "Kürzlich",
"other": "Andere Sprache…" "other": "Andere Sprache…"
} }
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Teilen ausblenden", "title": "Teilen ausblenden",
"message": "Bestätigen, um Teilen auszublenden" "message": "Bestätigen, um Teilen auszublenden"
},
"confirm_block_domain": {
"title": "Domain sperren",
"message": "Bestätigen, um die Domain %s zu sperren"
},
"confirm_unblock_domain": {
"title": "Domain entsperren",
"message": "Bestätigen, um die Sperre der Domäne %s aufzuheben"
} }
}, },
"accessibility": { "accessibility": {
@ -656,8 +665,8 @@
"url": "URL in Mastodon öffnen", "url": "URL in Mastodon öffnen",
"hashtag": "Wechseln zu #%s", "hashtag": "Wechseln zu #%s",
"no_user": { "no_user": {
"title": "No User Account Found", "title": "Kein Benutzerkonto gefunden",
"message": "There's no Useraccount \"%s\" on %s" "message": "Es gibt kein Benutzerkonto „%s” auf %s"
}, },
"empty_state": { "empty_state": {
"no_results": "Keine Ergebnisse" "no_results": "Keine Ergebnisse"
@ -711,17 +720,17 @@
"settings": { "settings": {
"overview": { "overview": {
"title": "Einstellungen", "title": "Einstellungen",
"general": "General", "general": "Allgemein",
"notifications": "Notifications", "notifications": "Benachrichtigungen",
"support_mastodon": "Mastodon unterstützen", "support_mastodon": "Mastodon unterstützen",
"about_mastodon": "About Mastodon", "about_mastodon": "Über Mastodon",
"server_details": "Server Details", "server_details": "Serverdetails",
"logout": "Logout %@" "logout": "%@ abmelden"
}, },
"about_mastodon": { "about_mastodon": {
"title": "Über", "title": "Über",
"more_settings": "Noch mehr Einstellungen", "more_settings": "Noch mehr Einstellungen",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "Zu Mastodon beitragen",
"privacy_policy": "Datenschutzerklärung", "privacy_policy": "Datenschutzerklärung",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "Clear Media Storage"
}, },
@ -735,12 +744,12 @@
} }
}, },
"general": { "general": {
"title": "General", "title": "Allgemein",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "Farbschema",
"dark": "Dark", "dark": "Dunkel",
"light": "Light", "light": "Hell",
"system": "Use Device Appearance" "system": "Einstellungen des Geräts übernehmen"
}, },
"design": { "design": {
"section_title": "Design", "section_title": "Design",
@ -748,18 +757,18 @@
}, },
"links": { "links": {
"section_title": "Links", "section_title": "Links",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "In Mastodon öffnen",
"open_in_browser": "Open in Browser" "open_in_browser": "Im Browser öffnen"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "Mitteilungen",
"policy": { "policy": {
"title": "Get Notifications from", "title": "Mitteilungen erhalten von",
"anyone": "Anyone", "anyone": "Jeder",
"followers": "People who follow you", "followers": "People who follow you",
"follow": "People you follow", "follow": "People you follow",
"noone": "No one" "noone": "Niemand"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "Mentions & Replies",

View File

@ -222,10 +222,11 @@
"pending": "Εκκρεμεί", "pending": "Εκκρεμεί",
"block": "Αποκλεισμός", "block": "Αποκλεισμός",
"block_user": "Αποκλεισμός %s", "block_user": "Αποκλεισμός %s",
"block_domain": "Αποκλεισμός %s", "block_domain": "Αποκλεισμός τομέα %s",
"unblock": "Άρση αποκλεισμού", "unblock": "Άρση αποκλεισμού",
"unblock_user": "Άρση αποκλεισμού %s", "unblock_user": "Άρση αποκλεισμού %s",
"blocked": "Αποκλείστηκε", "blocked": "Αποκλείστηκε",
"domain_blocked": "Ο Τομέας αποκλείστηκε",
"mute": "Σίγαση", "mute": "Σίγαση",
"mute_user": "Σίγαση %s", "mute_user": "Σίγαση %s",
"unmute": "Κατάργηση σίγασης", "unmute": "Κατάργηση σίγασης",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Απόκρυψη Αναδημοσιεύσεων", "title": "Απόκρυψη Αναδημοσιεύσεων",
"message": "Επιβεβαίωση απόκρυψης αναδημοσιεύσεων" "message": "Επιβεβαίωση απόκρυψης αναδημοσιεύσεων"
},
"confirm_block_domain": {
"title": "Αποκλεισμός τομέα",
"message": "Επιβεβαίωση αποκλεισμού τομέα %s"
},
"confirm_unblock_domain": {
"title": "Άρση αποκλεισμού τομέα",
"message": "Επιβεβαίωση άρσης αποκλεισμού τομέα %s"
} }
}, },
"accessibility": { "accessibility": {
@ -656,8 +665,8 @@
"url": "Άνοιγμα URL στο Mastodon", "url": "Άνοιγμα URL στο Mastodon",
"hashtag": "Μετάβαση στο #%s", "hashtag": "Μετάβαση στο #%s",
"no_user": { "no_user": {
"title": "No User Account Found", "title": "Δεν Βρέθηκε Λογαριασμός Χρήστη",
"message": "There's no Useraccount \"%s\" on %s" "message": "Δεν υπάρχει λογαριασμός χρήστη \"%s\" στο %s"
}, },
"empty_state": { "empty_state": {
"no_results": "Κανένα αποτέλεσμα" "no_results": "Κανένα αποτέλεσμα"
@ -710,66 +719,66 @@
}, },
"settings": { "settings": {
"overview": { "overview": {
"title": "Settings", "title": "Ρυθμίσεις",
"general": "General", "general": "Γενικά",
"notifications": "Notifications", "notifications": "Ειδοποιήσεις",
"support_mastodon": "Support Mastodon", "support_mastodon": "Υποστήριξε το Mastodon",
"about_mastodon": "About Mastodon", "about_mastodon": "Σχετικά με το Mastodon",
"server_details": "Server Details", "server_details": "Λεπτομέρειες Διακομιστή",
"logout": "Logout %@" "logout": "Αποσύνδεση %@"
}, },
"about_mastodon": { "about_mastodon": {
"title": "About", "title": "Σχετικά",
"more_settings": "Even More Settings", "more_settings": "Ακόμα Περισσότερες Ρυθμίσεις",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "Συνείσφερε στο Mastodon",
"privacy_policy": "Privacy Policy", "privacy_policy": "Πολιτική Απορρήτου",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "Εκκαθάριση Χώρου Αποθήκευσης Πολυμέσων"
}, },
"server_details": { "server_details": {
"about": "About", "about": "Σχετικά",
"rules": "Rules", "rules": "Κανόνες",
"about_instance": { "about_instance": {
"title": "Administrator", "title": "Διαχειριστής",
"message_admin": "Message Admin", "message_admin": "Στείλε μήνυμα σε διαχειριστή",
"legal_notice": "A legal notice" "legal_notice": "Μια νομική ειδοποίηση"
} }
}, },
"general": { "general": {
"title": "General", "title": "Γενικά",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "Εμφάνιση",
"dark": "Dark", "dark": "Σκοτεινό",
"light": "Light", "light": "Φωτεινό",
"system": "Use Device Appearance" "system": "Χρήση Εμφάνισης Συσκευής"
}, },
"design": { "design": {
"section_title": "Design", "section_title": "Σχεδίαση",
"show_animations": "Play Animated Avatars and Emoji" "show_animations": "Αναπαραγωγή κινούμενων Avatars και Emoji"
}, },
"links": { "links": {
"section_title": "Links", "section_title": "Σύνδεσμοι",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "Άνοιγμα στο Mastodon",
"open_in_browser": "Open in Browser" "open_in_browser": "Άνοιγμα στον Περιηγητή"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "Ειδοποιήσεις",
"policy": { "policy": {
"title": "Get Notifications from", "title": "Λήψη Ειδοποιήσεων από",
"anyone": "Anyone", "anyone": "Οποιοσδήποτε",
"followers": "People who follow you", "followers": "Άτομα που σε ακολουθούν",
"follow": "People you follow", "follow": "Άτομα που ακολουθείς",
"noone": "No one" "noone": "Κανένας"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "Αναφορές & Απαντήσεις",
"boosts": "Boosts", "boosts": "Ενισχύσεις",
"favorites": "Favorites", "favorites": "Αγαπημένα",
"new_followers": "New Followers" "new_followers": "Νέοι Ακόλουθοι"
}, },
"disabled": { "disabled": {
"notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.", "notification_hint": "Ενεργοποίησε τις ειδοποιήσεις από τις ρυθμίσεις της συσκευής σου για να βλέπεις ενημερώσεις στην οθόνη κλειδώματος.",
"go_to_settings": "Go to Notification Settings" "go_to_settings": "Μετάβαση στις Ρυθμίσεις Ειδοποιήσεων"
} }
} }
}, },

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Domain blokkolása: %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain blokkolva",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Domain blokkolása",
"message": "Megerősíti a domain blokkolását? %s"
},
"confirm_unblock_domain": {
"title": "Domain blokkolás feloldása",
"message": "Megerősíti a domain blokk feloldását? %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pendientes", "pending": "Pendientes",
"block": "Bloquear", "block": "Bloquear",
"block_user": "Bloquear a %s", "block_user": "Bloquear a %s",
"block_domain": "Bloquear %s", "block_domain": "Bloquear dominio %s",
"unblock": "Desbloquear", "unblock": "Desbloquear",
"unblock_user": "Desbloquear a %s", "unblock_user": "Desbloquear a %s",
"blocked": "Bloqueado", "blocked": "Bloqueado",
"domain_blocked": "Dominio bloqueado",
"mute": "Silenciar", "mute": "Silenciar",
"mute_user": "Silenciar a %s", "mute_user": "Silenciar a %s",
"unmute": "Dejar de silenciar", "unmute": "Dejar de silenciar",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Ocultar adhesiones", "title": "Ocultar adhesiones",
"message": "Confirmá para ocultar adhesiones" "message": "Confirmá para ocultar adhesiones"
},
"confirm_block_domain": {
"title": "Bloquear dominio",
"message": "Confirmar para bloquear el dominio %s"
},
"confirm_unblock_domain": {
"title": "Desbloquear dominio",
"message": "Confirmar para desbloquear el dominio %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pendiente", "pending": "Pendiente",
"block": "Bloquear", "block": "Bloquear",
"block_user": "Bloquear a %s", "block_user": "Bloquear a %s",
"block_domain": "Bloquear a %s", "block_domain": "Block domain %s",
"unblock": "Desbloquear", "unblock": "Desbloquear",
"unblock_user": "Desbloquear a %s", "unblock_user": "Desbloquear a %s",
"blocked": "Bloqueado", "blocked": "Bloqueado",
"domain_blocked": "Domain Blocked",
"mute": "Silenciar", "mute": "Silenciar",
"mute_user": "Silenciar a %s", "mute_user": "Silenciar a %s",
"unmute": "Desmutear", "unmute": "Desmutear",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Ocultar reblogs", "title": "Ocultar reblogs",
"message": "Confirmar para ocultar reblogs" "message": "Confirmar para ocultar reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Zain", "pending": "Zain",
"block": "Blokeatu", "block": "Blokeatu",
"block_user": "Blokeatu %s", "block_user": "Blokeatu %s",
"block_domain": "Blokeatu %s", "block_domain": "Block domain %s",
"unblock": "Desblokeatu", "unblock": "Desblokeatu",
"unblock_user": "Desblokeatu %s", "unblock_user": "Desblokeatu %s",
"blocked": "Blokeatuta", "blocked": "Blokeatuta",
"domain_blocked": "Domain Blocked",
"mute": "Mututu", "mute": "Mututu",
"mute_user": "Mututu %s", "mute_user": "Mututu %s",
"unmute": "Desmututu", "unmute": "Desmututu",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Ezkutatu bultzadak", "title": "Ezkutatu bultzadak",
"message": "Berretsi birbidalketak ezkutatzea" "message": "Berretsi birbidalketak ezkutatzea"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pyydetty", "pending": "Pyydetty",
"block": "Estä", "block": "Estä",
"block_user": "Estä %s", "block_user": "Estä %s",
"block_domain": "Estä %s", "block_domain": "Block domain %s",
"unblock": "Poista esto", "unblock": "Poista esto",
"unblock_user": "Poista käyttäjän %s esto", "unblock_user": "Poista käyttäjän %s esto",
"blocked": "Estetty", "blocked": "Estetty",
"domain_blocked": "Domain Blocked",
"mute": "Mykistä", "mute": "Mykistä",
"mute_user": "Mykistä %s", "mute_user": "Mykistä %s",
"unmute": "Poista mykistys", "unmute": "Poista mykistys",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Piilota edelleenjulkaisut", "title": "Piilota edelleenjulkaisut",
"message": "Vahvista edelleenjulkaisujen piilotus" "message": "Vahvista edelleenjulkaisujen piilotus"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "En attente", "pending": "En attente",
"block": "Bloquer", "block": "Bloquer",
"block_user": "Bloquer %s", "block_user": "Bloquer %s",
"block_domain": "Bloquer %s", "block_domain": "Block domain %s",
"unblock": "Débloquer", "unblock": "Débloquer",
"unblock_user": "Débloquer %s", "unblock_user": "Débloquer %s",
"blocked": "Bloqué", "blocked": "Bloqué",
"domain_blocked": "Domain Blocked",
"mute": "Masquer", "mute": "Masquer",
"mute_user": "Ignorer %s", "mute_user": "Ignorer %s",
"unmute": "Ne plus ignorer", "unmute": "Ne plus ignorer",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Masquer les Reblogs", "title": "Masquer les Reblogs",
"message": "Confirmer pour masquer les reblogs" "message": "Confirmer pour masquer les reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Ri dhèiligeadh", "pending": "Ri dhèiligeadh",
"block": "Bac", "block": "Bac",
"block_user": "Bac %s", "block_user": "Bac %s",
"block_domain": "Bac %s", "block_domain": "Block domain %s",
"unblock": "Dì-bhac", "unblock": "Dì-bhac",
"unblock_user": "Dì-bhac %s", "unblock_user": "Dì-bhac %s",
"blocked": "Ga bhacadh", "blocked": "Ga bhacadh",
"domain_blocked": "Domain Blocked",
"mute": "Mùch", "mute": "Mùch",
"mute_user": "Mùch %s", "mute_user": "Mùch %s",
"unmute": "Dì-mhùch", "unmute": "Dì-mhùch",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Falaich na brosnachaidhean", "title": "Falaich na brosnachaidhean",
"message": "Dearbh falach nam brosnachaidhean" "message": "Dearbh falach nam brosnachaidhean"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -2,7 +2,7 @@
"common": { "common": {
"alerts": { "alerts": {
"common": { "common": {
"please_try_again": "Inténtao de novo.", "please_try_again": "Téntao de novo.",
"please_try_again_later": "Inténtao de novo máis tarde." "please_try_again_later": "Inténtao de novo máis tarde."
}, },
"sign_up_failure": { "sign_up_failure": {
@ -222,10 +222,11 @@
"pending": "Pendente", "pending": "Pendente",
"block": "Bloquear", "block": "Bloquear",
"block_user": "Bloquear a %s", "block_user": "Bloquear a %s",
"block_domain": "Bloquear a %s", "block_domain": "Bloquear dominio %s",
"unblock": "Desbloquear", "unblock": "Desbloquear",
"unblock_user": "Desbloquear a %s", "unblock_user": "Desbloquear a %s",
"blocked": "Bloqueada", "blocked": "Bloqueada",
"domain_blocked": "Dominio bloqueado",
"mute": "Acalar", "mute": "Acalar",
"mute_user": "Acalar a %s", "mute_user": "Acalar a %s",
"unmute": "Non Acalar", "unmute": "Non Acalar",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Agochar Promocións", "title": "Agochar Promocións",
"message": "Confirma para agochar promocións" "message": "Confirma para agochar promocións"
},
"confirm_block_domain": {
"title": "Bloquear dominio",
"message": "Confirmar o bloqueo do dominio %s"
},
"confirm_unblock_domain": {
"title": "Desbloquear dominio",
"message": "Confirmar o desbloqueo de %s"
} }
}, },
"accessibility": { "accessibility": {
@ -656,8 +665,8 @@
"url": "Abrir URL en Mastodon", "url": "Abrir URL en Mastodon",
"hashtag": "Ir a #%s", "hashtag": "Ir a #%s",
"no_user": { "no_user": {
"title": "No User Account Found", "title": "Non se atopou ningunha conta",
"message": "There's no Useraccount \"%s\" on %s" "message": "Non hai contas con \"%s\" en %s"
}, },
"empty_state": { "empty_state": {
"no_results": "Sen resultados" "no_results": "Sen resultados"
@ -710,66 +719,66 @@
}, },
"settings": { "settings": {
"overview": { "overview": {
"title": "Settings", "title": "Axustes",
"general": "General", "general": "Xeral",
"notifications": "Notifications", "notifications": "Notificacións",
"support_mastodon": "Support Mastodon", "support_mastodon": "Apoia a Mastodon",
"about_mastodon": "About Mastodon", "about_mastodon": "Acerca de Mastodon",
"server_details": "Server Details", "server_details": "Detalles do servidor",
"logout": "Logout %@" "logout": "Pechar sesión %@"
}, },
"about_mastodon": { "about_mastodon": {
"title": "About", "title": "Acerca de",
"more_settings": "Even More Settings", "more_settings": "Máis axustes",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "Colaborar con Mastodon",
"privacy_policy": "Privacy Policy", "privacy_policy": "Política de Privacidade",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "Limpar Almacenaxe Multimedia"
}, },
"server_details": { "server_details": {
"about": "About", "about": "Acerca de",
"rules": "Rules", "rules": "Regras",
"about_instance": { "about_instance": {
"title": "Administrator", "title": "Administración",
"message_admin": "Message Admin", "message_admin": "Mensaxe a Admin",
"legal_notice": "A legal notice" "legal_notice": "Aviso Legal"
} }
}, },
"general": { "general": {
"title": "General", "title": "Xeral",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "Aparencia",
"dark": "Dark", "dark": "Escuro",
"light": "Light", "light": "Claro",
"system": "Use Device Appearance" "system": "Seguir ao dispositivo"
}, },
"design": { "design": {
"section_title": "Design", "section_title": "Deseño",
"show_animations": "Play Animated Avatars and Emoji" "show_animations": "Reproducir avatares e emoji animados"
}, },
"links": { "links": {
"section_title": "Links", "section_title": "Ligazóns",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "Abrir en Mastodon",
"open_in_browser": "Open in Browser" "open_in_browser": "Abrir no navegador"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "Notificacións",
"policy": { "policy": {
"title": "Get Notifications from", "title": "Recibir notificacións de",
"anyone": "Anyone", "anyone": "Calquera",
"followers": "People who follow you", "followers": "Persoas que te seguen",
"follow": "People you follow", "follow": "Persoas que segues",
"noone": "No one" "noone": "Ninguén"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "Mencións e respostas",
"boosts": "Boosts", "boosts": "Promocións",
"favorites": "Favorites", "favorites": "Favoritos",
"new_followers": "New Followers" "new_followers": "Novas seguidoras"
}, },
"disabled": { "disabled": {
"notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.", "notification_hint": "Activar notificacións nos axustes do dispositivo para ver novidades na pantalla de bloqueo.",
"go_to_settings": "Go to Notification Settings" "go_to_settings": "Ir aos axustes das notificacións"
} }
} }
}, },

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -104,9 +104,9 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>one</key> <key>one</key>
<string>post</string> <string>գրառում</string>
<key>other</key> <key>other</key>
<string>posts</string> <string>գրառումներ</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.media</key> <key>plural.count.media</key>
@ -136,9 +136,9 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>one</key> <key>one</key>
<string>1 post</string> <string>1 գրառում</string>
<key>other</key> <key>other</key>
<string>%ld posts</string> <string>%ld գրառում</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.favorite</key> <key>plural.count.favorite</key>

View File

@ -97,20 +97,20 @@
"title": "Translate from %s", "title": "Translate from %s",
"unknown_language": "Unknown" "unknown_language": "Unknown"
}, },
"edit_post": "Edit", "edit_post": "Խմբագրել",
"bookmark": "Bookmark", "bookmark": "Էջանիշ",
"remove_bookmark": "Remove Bookmark", "remove_bookmark": "Հեռացնել էջանիշը",
"follow": "Follow %s", "follow": "Հետեւել %s-ին",
"unfollow": "Unfollow %s" "unfollow": "Չհետեւել %s-ին"
}, },
"tabs": { "tabs": {
"home": "Home", "home": "Հիմնական",
"search_and_explore": "Search and Explore", "search_and_explore": "Search and Explore",
"notifications": "Notifications", "notifications": "Ծանուցումներ",
"profile": "Profile", "profile": "Հաշիւ",
"a11y": { "a11y": {
"search": "Search", "search": "Որոնել",
"explore": "Explore" "explore": "Բացայայտել"
} }
}, },
"keyboard": { "keyboard": {
@ -118,12 +118,12 @@
"switch_to_tab": "Switch to %s", "switch_to_tab": "Switch to %s",
"compose_new_post": "Compose New Post", "compose_new_post": "Compose New Post",
"show_favorites": "Show Favorites", "show_favorites": "Show Favorites",
"open_settings": "Open Settings" "open_settings": "Բացել կարգաւորումները"
}, },
"timeline": { "timeline": {
"previous_status": "Previous Post", "previous_status": "Previous Post",
"next_status": "Next Post", "next_status": "Յաջորդ գրառումը",
"open_status": "Open Post", "open_status": "Բացել գրառումը",
"open_author_profile": "Open Author's Profile", "open_author_profile": "Open Author's Profile",
"open_reblogger_profile": "Open Reblogger's Profile", "open_reblogger_profile": "Open Reblogger's Profile",
"reply_status": "Reply to Post", "reply_status": "Reply to Post",
@ -140,17 +140,17 @@
"status": { "status": {
"user_reblogged": "%s reblogged", "user_reblogged": "%s reblogged",
"user_replied_to": "Replied to %s", "user_replied_to": "Replied to %s",
"show_post": "Show Post", "show_post": "Ցուցադրել գրառումը",
"show_user_profile": "Show user profile", "show_user_profile": "Ցուցադրել օգտատիրոջ էջը",
"content_warning": "Content Warning", "content_warning": "Content Warning",
"sensitive_content": "Sensitive Content", "sensitive_content": "Զգայուն բովանդակություն",
"media_content_warning": "Tap anywhere to reveal", "media_content_warning": "Tap anywhere to reveal",
"tap_to_reveal": "Tap to reveal", "tap_to_reveal": "Tap to reveal",
"load_embed": "Load Embed", "load_embed": "Load Embed",
"link_via_user": "%s via %s", "link_via_user": "%s via %s",
"poll": { "poll": {
"vote": "Քուէարկել", "vote": "Քուէարկել",
"closed": "Closed" "closed": "Փակ"
}, },
"meta_entity": { "meta_entity": {
"url": "Link: %s", "url": "Link: %s",
@ -160,14 +160,14 @@
}, },
"actions": { "actions": {
"reply": "Պատասխանել", "reply": "Պատասխանել",
"reblog": "Reblog", "reblog": "Տարածել",
"unreblog": "Undo reblog", "unreblog": "Չտարածել",
"favorite": "Favorite", "favorite": "Հավանել",
"unfavorite": "Unfavorite", "unfavorite": "Չհաւանել",
"menu": "Ցանկ", "menu": "Ցանկ",
"hide": "Թաքցնել", "hide": "Թաքցնել",
"show_image": "Show image", "show_image": "Ցոյց տալ նկարը",
"show_gif": "Show GIF", "show_gif": "Ցոյց տալ գիֆը",
"show_video_player": "Show video player", "show_video_player": "Show video player",
"share_link_in_post": "Share Link in Post", "share_link_in_post": "Share Link in Post",
"tap_then_hold_to_show_menu": "Tap then hold to show menu", "tap_then_hold_to_show_menu": "Tap then hold to show menu",
@ -192,9 +192,9 @@
}, },
"translation": { "translation": {
"translated_from": "Translated from %s using %s", "translated_from": "Translated from %s using %s",
"unknown_language": "Unknown", "unknown_language": "Անյայտ",
"unknown_provider": "Unknown", "unknown_provider": "Անյայտ",
"show_original": "Show Original" "show_original": "Ցոյց տալ բնօրինակը"
}, },
"media": { "media": {
"accessibility_label": "%s, attachment %d of %d", "accessibility_label": "%s, attachment %d of %d",
@ -204,8 +204,8 @@
}, },
"posted_via_application": "%s via %s", "posted_via_application": "%s via %s",
"buttons": { "buttons": {
"reblogs_title": "Reblogs", "reblogs_title": "Տարածել",
"favorites_title": "Favorites", "favorites_title": "Հաւանածներ",
"edit_history_title": "Խմբագրման պատմութիւնը", "edit_history_title": "Խմբագրման պատմութիւնը",
"edit_history_detail": "Last edit %s" "edit_history_detail": "Last edit %s"
}, },
@ -217,21 +217,22 @@
}, },
"friendship": { "friendship": {
"follow": "Հետեւել", "follow": "Հետեւել",
"following": "Following", "following": "Հետեւած",
"request": "Request", "request": "Հարցում",
"pending": "Pending", "pending": "Սպասուող",
"block": "Block", "block": "Արգելափակել",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Արգելաբացել",
"unblock_user": "Unblock %s", "unblock_user": "Արգելաբացել %s-ին",
"blocked": "Blocked", "blocked": "Արգելափակուած",
"domain_blocked": "Domain Blocked",
"mute": "Լռեցնել", "mute": "Լռեցնել",
"mute_user": "Լռեցնել %s֊ին", "mute_user": "Լռեցնել %s֊ին",
"unmute": "Unmute", "unmute": "Unmute",
"unmute_user": "Unmute %s", "unmute_user": "Unmute %s",
"muted": "Լռեցուած", "muted": "Լռեցուած",
"edit_info": "Edit Info", "edit_info": "Խմբագրել",
"show_reblogs": "Show Reblogs", "show_reblogs": "Show Reblogs",
"hide_reblogs": "Hide Reblogs" "hide_reblogs": "Hide Reblogs"
}, },
@ -257,7 +258,7 @@
} }
}, },
"user_list": { "user_list": {
"no_verified_link": "No verified link", "no_verified_link": "Չկայ հաստատուած յղում",
"followers_count": "%@ followers" "followers_count": "%@ followers"
} }
}, },
@ -296,25 +297,25 @@
"server_picker": { "server_picker": {
"title": "Pick Server", "title": "Pick Server",
"button": { "button": {
"language": "Language", "language": "Լեզու",
"signup_speed": "Sign-up Speed", "signup_speed": "Sign-up Speed",
"category": { "category": {
"all": "All", "all": "Բոլորը",
"all_accessiblity_description": "Category: All", "all_accessiblity_description": "Category: All",
"academia": "academia", "academia": "academia",
"activism": "activism", "activism": "activism",
"food": "food", "food": "ուտելիք",
"furry": "furry", "furry": "furry",
"games": "games", "games": "խաղեր",
"general": "general", "general": "ընդհանուր",
"journalism": "journalism", "journalism": "լրագրութիւն",
"lgbt": "lgbt", "lgbt": "լգբտ",
"regional": "regional", "regional": "կրօնական",
"art": "art", "art": "արուեստ",
"music": "music", "music": "երաժշտութիւն",
"tech": "tech" "tech": "տեխնոլոգիա"
}, },
"see_less": "See Less", "see_less": "Տեսնել քիչ",
"see_more": "Տեսնել աւելին" "see_more": "Տեսնել աւելին"
}, },
"label": { "label": {
@ -344,11 +345,11 @@
"no_server_selected_hint": "Well pick a server based on your language if you continue without making a selection." "no_server_selected_hint": "Well pick a server based on your language if you continue without making a selection."
}, },
"privacy": { "privacy": {
"title": "Privacy", "title": "Գաղտնիութիւն",
"description": "Although the Mastodon app does not collect any data, the server you sign up through may have a different policy. Take a minute to review and agree to the Mastodon app privacy policy and your servers privacy policy.", "description": "Although the Mastodon app does not collect any data, the server you sign up through may have a different policy. Take a minute to review and agree to the Mastodon app privacy policy and your servers privacy policy.",
"policy": { "policy": {
"ios": "Privacy Policy - Mastodon for iOS", "ios": "Privacy Policy - Mastodon for iOS",
"server": "Privacy Policy - %s" "server": "Գաղտնիութեան քաղաքականութիւն - %s"
}, },
"button": { "button": {
"confirm": "Համաձայն եմ" "confirm": "Համաձայն եմ"
@ -358,7 +359,7 @@
"title": "Ստեղծել հաշիւ", "title": "Ստեղծել հաշիւ",
"input": { "input": {
"avatar": { "avatar": {
"delete": "Delete" "delete": "Ջնջել"
}, },
"username": { "username": {
"placeholder": "մուտքանուն", "placeholder": "մուտքանուն",
@ -375,7 +376,7 @@
"placeholder": "գաղտնաբառ", "placeholder": "գաղտնաբառ",
"confirmation_placeholder": "Հաստատել գաղտնաբառը", "confirmation_placeholder": "Հաստատել գաղտնաբառը",
"require": "Your password needs at least:", "require": "Your password needs at least:",
"character_limit": "8 characters", "character_limit": "8 նիշ",
"accessibility": { "accessibility": {
"checked": "checked", "checked": "checked",
"unchecked": "unchecked" "unchecked": "unchecked"
@ -392,7 +393,7 @@
"email": "Էլ. փոստ", "email": "Էլ. փոստ",
"password": "Գաղտնաբառ", "password": "Գաղտնաբառ",
"agreement": "Agreement", "agreement": "Agreement",
"locale": "Locale", "locale": "Տեղանք",
"reason": "Պատճառ" "reason": "Պատճառ"
}, },
"reason": { "reason": {
@ -420,24 +421,24 @@
"subtitle": "These are set and enforced by the %s moderators.", "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.", "prompt": "By continuing, youre subject to the terms of service and privacy policy for %s.",
"terms_of_service": "terms of service", "terms_of_service": "terms of service",
"privacy_policy": "privacy policy", "privacy_policy": "գաղտնիութեան քաղաքականութիւն",
"button": { "button": {
"confirm": "I Agree" "confirm": "Համաձայն եմ"
} }
}, },
"confirm_email": { "confirm_email": {
"title": "Check Your Inbox", "title": "Ստուգիր էլ. փոստդ",
"tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we sent you to verify %@. Well wait right here.", "tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we sent you to verify %@. Well wait right here.",
"button": { "button": {
"resend": "Resend" "resend": "Ուղարկել նորից"
}, },
"dont_receive_email": { "dont_receive_email": {
"title": "Check your Email", "title": "Ստուգիր էլ. հասցէդ!",
"description": "Check if your email address is correct as well as your junk folder if you havent.", "description": "Check if your email address is correct as well as your junk folder if you havent.",
"resend_email": "Նորից ուղարկել էլ. նամակ" "resend_email": "Նորից ուղարկել էլ. նամակ"
}, },
"open_email_app": { "open_email_app": {
"title": "Check your Inbox.", "title": "Ստուգիր էլ. փոստդ.",
"description": "We just sent you an email. Check your junk folder if you havent.", "description": "We just sent you an email. Check your junk folder if you havent.",
"mail": "Փոստ", "mail": "Փոստ",
"open_email_client": "Open Email Client" "open_email_client": "Open Email Client"
@ -452,36 +453,36 @@
"title": "Հիմնական", "title": "Հիմնական",
"navigation_bar_state": { "navigation_bar_state": {
"offline": "Անցանց", "offline": "Անցանց",
"new_posts": "See new posts", "new_posts": "Տեսնել նորերը",
"published": "Published!", "published": "Հրատարակուած է",
"Publishing": "Publishing post...", "Publishing": "Publishing post...",
"accessibility": { "accessibility": {
"logo_label": "Mastodon", "logo_label": "Մաստոդոն",
"logo_hint": "Tap to scroll to top and tap again to previous location" "logo_hint": "Tap to scroll to top and tap again to previous location"
} }
} }
}, },
"suggestion_account": { "suggestion_account": {
"title": "Popular on Mastodon", "title": "Popular on Mastodon",
"follow_all": "Follow all" "follow_all": "Հետեւել բոլորին"
}, },
"compose": { "compose": {
"title": { "title": {
"new_post": "New Post", "new_post": "Նոր գրառում",
"new_reply": "New Reply", "new_reply": "Նոր պատասխան",
"edit_post": "Edit Post" "edit_post": "Խմբագրել գրառումը"
}, },
"media_selection": { "media_selection": {
"camera": "Take Photo", "camera": "Լուսանկարել",
"photo_library": "Photo Library", "photo_library": "Ֆոտոդարան",
"browse": "Browse" "browse": "Դիտել"
}, },
"content_input_placeholder": "Type or paste whats on your mind", "content_input_placeholder": "Type or paste whats on your mind",
"compose_action": "Հրապարակել", "compose_action": "Հրապարակել",
"replying_to_user": "replying to %s", "replying_to_user": "replying to %s",
"attachment": { "attachment": {
"photo": "photo", "photo": "նկար",
"video": "video", "video": "տեսանիւթ",
"attachment_broken": "This %s is broken and cant be\nuploaded to Mastodon.", "attachment_broken": "This %s is broken and cant be\nuploaded to Mastodon.",
"description_photo": "Describe the photo for the visually-impaired...", "description_photo": "Describe the photo for the visually-impaired...",
"description_video": "Describe the video for the visually-impaired...", "description_video": "Describe the video for the visually-impaired...",
@ -493,38 +494,38 @@
"server_processing_state": "Server Processing..." "server_processing_state": "Server Processing..."
}, },
"poll": { "poll": {
"title": "Poll", "title": "Հարցում",
"duration_time": "Duration: %s", "duration_time": "Տեւողությունը՝ %s",
"thirty_minutes": "30 minutes", "thirty_minutes": "30 րոպէ",
"one_hour": "1 Hour", "one_hour": "1 ժամ",
"six_hours": "6 Hours", "six_hours": "6 ժամ",
"one_day": "1 Day", "one_day": "1 օր",
"three_days": "3 Days", "three_days": "3 օր",
"seven_days": "7 Days", "seven_days": "7 օր",
"option_number": "Option %ld", "option_number": "Տարբերակ %ld",
"the_poll_is_invalid": "The poll is invalid", "the_poll_is_invalid": "The poll is invalid",
"the_poll_has_empty_option": "The poll has empty option", "the_poll_has_empty_option": "The poll has empty option",
"add_option": "Add Option", "add_option": "Add Option",
"remove_option": "Remove Option", "remove_option": "Remove Option",
"move_up": "Move Up", "move_up": "Բարձրացնել",
"move_down": "Move Down" "move_down": "Իջեցնել"
}, },
"content_warning": { "content_warning": {
"placeholder": "Write an accurate warning here..." "placeholder": "Write an accurate warning here..."
}, },
"visibility": { "visibility": {
"public": "Public", "public": "Հրապարակային",
"unlisted": "Unlisted", "unlisted": "Ծածուկ",
"private": "Followers only", "private": "Միայն հետեւողներին",
"direct": "Only people I mention" "direct": "Միայն նշած մարդկանց"
}, },
"auto_complete": { "auto_complete": {
"space_to_add": "Space to add" "space_to_add": "Space to add"
}, },
"accessibility": { "accessibility": {
"append_attachment": "Add Attachment", "append_attachment": "Add Attachment",
"append_poll": "Add Poll", "append_poll": "Աւելացնել հարցում",
"remove_poll": "Remove Poll", "remove_poll": "Հեռացնել հարցումը",
"custom_emoji_picker": "Custom Emoji Picker", "custom_emoji_picker": "Custom Emoji Picker",
"enable_content_warning": "Enable Content Warning", "enable_content_warning": "Enable Content Warning",
"disable_content_warning": "Disable Content Warning", "disable_content_warning": "Disable Content Warning",
@ -541,31 +542,31 @@
"select_visibility_entry": "Select Visibility - %s" "select_visibility_entry": "Select Visibility - %s"
}, },
"language": { "language": {
"title": "Post Language", "title": "Հրապարակման լեզու",
"suggested": "Suggested", "suggested": "Suggested",
"recent": "Recent", "recent": "Վերջին",
"other": "Other Language…" "other": "Other Language…"
} }
}, },
"profile": { "profile": {
"header": { "header": {
"follows_you": "Follows You" "follows_you": "Հետեւում է քեզ"
}, },
"dashboard": { "dashboard": {
"my_posts": "posts", "my_posts": "գրառումներ",
"my_following": "following", "my_following": "հետեւած",
"my_followers": "followers", "my_followers": "հետեւորդ",
"other_posts": "posts", "other_posts": "գրառումներ",
"other_following": "following", "other_following": "հետեւած",
"other_followers": "followers", "other_followers": "հետեւորդ",
"familiar_followers": "mutuals" "familiar_followers": "mutuals"
}, },
"fields": { "fields": {
"joined": "Joined", "joined": "Միացել է",
"add_row": "Add Row", "add_row": "Add Row",
"placeholder": { "placeholder": {
"label": "Label", "label": "Պիտակ",
"content": "Content" "content": "Բովանդակութիւն"
}, },
"verified": { "verified": {
"short": "Verified on %s", "short": "Verified on %s",
@ -574,9 +575,9 @@
}, },
"segmented_control": { "segmented_control": {
"posts": "Գրառումներ", "posts": "Գրառումներ",
"replies": "Replies", "replies": "Արձագանքներ",
"posts_and_replies": "Posts and Replies", "posts_and_replies": "Posts and Replies",
"media": "Media", "media": "Մեդիա",
"about": "Մասին" "about": "Մասին"
}, },
"relationship_action_alert": { "relationship_action_alert": {
@ -589,7 +590,7 @@
"message": "Confirm to unmute %s" "message": "Confirm to unmute %s"
}, },
"confirm_block_user": { "confirm_block_user": {
"title": "Block Account", "title": "Արգելափակել հաշիւը",
"message": "Confirm to block %s" "message": "Confirm to block %s"
}, },
"confirm_unblock_user": { "confirm_unblock_user": {
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {
@ -613,11 +622,11 @@
} }
}, },
"follower": { "follower": {
"title": "follower", "title": "հետեւորդ",
"footer": "Followers from other servers are not displayed." "footer": "Followers from other servers are not displayed."
}, },
"following": { "following": {
"title": "following", "title": "հետեւած",
"footer": "Follows from other servers are not displayed." "footer": "Follows from other servers are not displayed."
}, },
"familiarFollowers": { "familiarFollowers": {
@ -631,13 +640,13 @@
"title": "Reblogged By" "title": "Reblogged By"
}, },
"search": { "search": {
"title": "Search", "title": "Որոնել",
"search_bar": { "search_bar": {
"placeholder": "Search hashtags and users", "placeholder": "Search hashtags and users",
"cancel": "Cancel" "cancel": "Չեղարկել"
}, },
"recommend": { "recommend": {
"button_text": "See All", "button_text": "Տեսնել բոլորը",
"hash_tag": { "hash_tag": {
"title": "Trending on Mastodon", "title": "Trending on Mastodon",
"description": "Hashtags that are getting quite a bit of attention", "description": "Hashtags that are getting quite a bit of attention",
@ -646,7 +655,7 @@
"accounts": { "accounts": {
"title": "Accounts you might like", "title": "Accounts you might like",
"description": "You may like to follow these accounts", "description": "You may like to follow these accounts",
"follow": "Follow" "follow": "Հետեւել"
} }
}, },
"searching": { "searching": {
@ -663,27 +672,27 @@
"no_results": "No results" "no_results": "No results"
}, },
"recent_search": "Recent searches", "recent_search": "Recent searches",
"clear_all": "Clear all", "clear_all": "Մաքրել բոլորը",
"clear": "Clear" "clear": "Մաքրել"
} }
}, },
"discovery": { "discovery": {
"tabs": { "tabs": {
"posts": "Posts", "posts": "Գրառումներ",
"hashtags": "Hashtags", "hashtags": "Պիտակներ",
"news": "News", "news": "Նորութիւններ",
"community": "Community", "community": "Համայնք",
"for_you": "For You" "for_you": "Քեզ համար"
}, },
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."
}, },
"favorite": { "favorite": {
"title": "Favorites" "title": "Հաւանածներ"
}, },
"notification": { "notification": {
"title": { "title": {
"Everything": "Everything", "Everything": "Ամեն ինչ",
"Mentions": "Mentions" "Mentions": "Յիշատակումներ"
}, },
"notification_description": { "notification_description": {
"followed_you": "followed you", "followed_you": "followed you",
@ -698,74 +707,74 @@
"show_mentions": "Show Mentions" "show_mentions": "Show Mentions"
}, },
"follow_request": { "follow_request": {
"accept": "Accept", "accept": "Ընդունել",
"accepted": "Accepted", "accepted": "Ընդունուած",
"reject": "reject", "reject": "մերժել",
"rejected": "Rejected" "rejected": "Մերժուած"
} }
}, },
"thread": { "thread": {
"back_title": "Post", "back_title": "Գրառում",
"title": "Post from %s" "title": "%s-ի գրառումը"
}, },
"settings": { "settings": {
"overview": { "overview": {
"title": "Settings", "title": "Կարգաւորումներ",
"general": "General", "general": "Ընդհանուր",
"notifications": "Notifications", "notifications": "Ծանուցումներ",
"support_mastodon": "Support Mastodon", "support_mastodon": "Support Mastodon",
"about_mastodon": "About Mastodon", "about_mastodon": "Մաստոդոնի մասին",
"server_details": "Server Details", "server_details": "Server Details",
"logout": "Logout %@" "logout": "Logout %@"
}, },
"about_mastodon": { "about_mastodon": {
"title": "About", "title": "Մասին",
"more_settings": "Even More Settings", "more_settings": "Even More Settings",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "Contribute to Mastodon",
"privacy_policy": "Privacy Policy", "privacy_policy": "Privacy Policy",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "Clear Media Storage"
}, },
"server_details": { "server_details": {
"about": "About", "about": "Մասին",
"rules": "Rules", "rules": "Կանոններ",
"about_instance": { "about_instance": {
"title": "Administrator", "title": "Ադմինիստրատոր",
"message_admin": "Message Admin", "message_admin": "Message Admin",
"legal_notice": "A legal notice" "legal_notice": "A legal notice"
} }
}, },
"general": { "general": {
"title": "General", "title": "Ընդհանուր",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "Տեսք",
"dark": "Dark", "dark": "Մուգ",
"light": "Light", "light": "Բաց",
"system": "Use Device Appearance" "system": "Use Device Appearance"
}, },
"design": { "design": {
"section_title": "Design", "section_title": "Ոճ",
"show_animations": "Play Animated Avatars and Emoji" "show_animations": "Play Animated Avatars and Emoji"
}, },
"links": { "links": {
"section_title": "Links", "section_title": "Յղումներ",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "Open in Mastodon",
"open_in_browser": "Open in Browser" "open_in_browser": "Open in Browser"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "Ծանուցումներ",
"policy": { "policy": {
"title": "Get Notifications from", "title": "Get Notifications from",
"anyone": "Anyone", "anyone": "Բոլորը",
"followers": "People who follow you", "followers": "Մարդիկ, որոնք ձեզ հետեւում են",
"follow": "People you follow", "follow": "Մարդիկ, որոնց դու հետեւում ես",
"noone": "No one" "noone": "Ոչ ոք"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "Mentions & Replies",
"boosts": "Boosts", "boosts": "Տարածումներ",
"favorites": "Favorites", "favorites": "Հաւանածներ",
"new_followers": "New Followers" "new_followers": "Նոր հետեւողներ"
}, },
"disabled": { "disabled": {
"notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.", "notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.",
@ -818,7 +827,7 @@
"step_final": { "step_final": {
"dont_want_to_see_this": "Dont want to see this?", "dont_want_to_see_this": "Dont want to see this?",
"when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you dont like on Mastodon, you can remove the person from your experience.", "when_you_see_something_you_dont_like_on_mastodon_you_can_remove_the_person_from_your_experience.": "When you see something you dont like on Mastodon, you can remove the person from your experience.",
"unfollow": "Unfollow", "unfollow": "Ապահետեւել",
"unfollowed": "Unfollowed", "unfollowed": "Unfollowed",
"unfollow_user": "Unfollow %s", "unfollow_user": "Unfollow %s",
"mute_user": "Mute %s", "mute_user": "Mute %s",
@ -838,21 +847,21 @@
"account_list": { "account_list": {
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
"dismiss_account_switcher": "Dismiss Account Switcher", "dismiss_account_switcher": "Dismiss Account Switcher",
"add_account": "Add Account" "add_account": "Աւելացնել հաշիւ"
}, },
"bookmark": { "bookmark": {
"title": "Bookmarks" "title": "Էջանիշեր"
}, },
"followed_tags": { "followed_tags": {
"title": "Followed Tags", "title": "Followed Tags",
"header": { "header": {
"posts": "posts", "posts": "գրառումներ",
"participants": "participants", "participants": "participants",
"posts_today": "posts today" "posts_today": "posts today"
}, },
"actions": { "actions": {
"follow": "Follow", "follow": "Հետեւել",
"unfollow": "Unfollow" "unfollow": "Ապահետեւել"
} }
} }
}, },
@ -867,7 +876,7 @@
"user_not_logged_in": "Please open Mastodon to log in to an Account." "user_not_logged_in": "Please open Mastodon to log in to an Account."
}, },
"followers_count": { "followers_count": {
"configuration_display_name": "Followers", "configuration_display_name": "Հետեւորդ",
"configuration_description": "Show number of followers.", "configuration_description": "Show number of followers.",
"title": "FOLLOWERS", "title": "FOLLOWERS",
"followers_today": "%s followers today" "followers_today": "%s followers today"
@ -888,7 +897,7 @@
}, },
"hashtag": { "hashtag": {
"configuration": { "configuration": {
"display_name": "Hashtag", "display_name": "Պիտակ",
"description": "Shows a recent post with the selected hashtag." "description": "Shows a recent post with the selected hashtag."
}, },
"not_found": { "not_found": {

View File

@ -1,6 +1,6 @@
{ {
"NSCameraUsageDescription": "Used to take photo for post status", "NSCameraUsageDescription": "Used to take photo for post status",
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
"NewPostShortcutItemTitle": "New Post", "NewPostShortcutItemTitle": "Նոր գրառում",
"SearchShortcutItemTitle": "Search" "SearchShortcutItemTitle": "Որոնել"
} }

View File

@ -222,10 +222,11 @@
"pending": "Tertunda", "pending": "Tertunda",
"block": "Blokir", "block": "Blokir",
"block_user": "Blokir %s", "block_user": "Blokir %s",
"block_domain": "Blokir %s", "block_domain": "Block domain %s",
"unblock": "Berhenti memblokir", "unblock": "Berhenti memblokir",
"unblock_user": "Berhenti memblokir %s", "unblock_user": "Berhenti memblokir %s",
"blocked": "Diblokir", "blocked": "Diblokir",
"domain_blocked": "Domain Blocked",
"mute": "Bisukan", "mute": "Bisukan",
"mute_user": "Bisukan %s", "mute_user": "Bisukan %s",
"unmute": "Berhenti membisukan", "unmute": "Berhenti membisukan",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Í bið", "pending": "Í bið",
"block": "Útilokun", "block": "Útilokun",
"block_user": "Útiloka %s", "block_user": "Útiloka %s",
"block_domain": "Útiloka %s", "block_domain": "Útiloka lénið %s",
"unblock": "Aflétta útilokun", "unblock": "Aflétta útilokun",
"unblock_user": "Opna á %s", "unblock_user": "Opna á %s",
"blocked": "Útilokað", "blocked": "Útilokað",
"domain_blocked": "Lén útilokað",
"mute": "Þagga niður", "mute": "Þagga niður",
"mute_user": "Þagga niður í %s", "mute_user": "Þagga niður í %s",
"unmute": "Afþagga", "unmute": "Afþagga",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Fela endurbirtingar", "title": "Fela endurbirtingar",
"message": "Staðfestu til að fela endurbirtingar" "message": "Staðfestu til að fela endurbirtingar"
},
"confirm_block_domain": {
"title": "Útiloka lén",
"message": "Staðfestu útilokun lénsins %s"
},
"confirm_unblock_domain": {
"title": "Aflétta útilokun léns",
"message": "Staðfestu afléttingu á útilokun lénsins %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "In attesa", "pending": "In attesa",
"block": "Blocca", "block": "Blocca",
"block_user": "Blocca %s", "block_user": "Blocca %s",
"block_domain": "Blocca %s", "block_domain": "Blocca il dominio %s",
"unblock": "Sblocca", "unblock": "Sblocca",
"unblock_user": "Sblocca %s", "unblock_user": "Sblocca %s",
"blocked": "Bloccato", "blocked": "Bloccato",
"domain_blocked": "Dominio bloccato",
"mute": "Silenzia", "mute": "Silenzia",
"mute_user": "Silenzia %s", "mute_user": "Silenzia %s",
"unmute": "Riattiva", "unmute": "Riattiva",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Nascondi le condivisioni", "title": "Nascondi le condivisioni",
"message": "Conferma di nascondere le condivisioni" "message": "Conferma di nascondere le condivisioni"
},
"confirm_block_domain": {
"title": "Blocca il dominio",
"message": "Conferma per bloccare il dominio %s"
},
"confirm_unblock_domain": {
"title": "Sblocca il dominio",
"message": "Conferma per sbloccare il dominio %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "保留", "pending": "保留",
"block": "ブロック", "block": "ブロック",
"block_user": "%sをブロック", "block_user": "%sをブロック",
"block_domain": "%sをブロック", "block_domain": "%s全体をブロック",
"unblock": "ブロックを解除", "unblock": "ブロックを解除",
"unblock_user": "%sのブロックを解除", "unblock_user": "%sのブロックを解除",
"blocked": "ブロック済み", "blocked": "ブロック済み",
"domain_blocked": "ドメインブロック中",
"mute": "ミュート", "mute": "ミュート",
"mute_user": "%sをミュート", "mute_user": "%sをミュート",
"unmute": "ミュートを解除", "unmute": "ミュートを解除",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "ブーストを非表示", "title": "ブーストを非表示",
"message": "ブーストを非表示にしますか?" "message": "ブーストを非表示にしますか?"
},
"confirm_block_domain": {
"title": "ドメインのブロック",
"message": "%sのドメイン全体をブロックしてよいですか"
},
"confirm_unblock_domain": {
"title": "ドメインのブロックを解除",
"message": "%sのブロックを解除してよいですか"
} }
}, },
"accessibility": { "accessibility": {
@ -656,8 +665,8 @@
"url": "URL を Mastodon で開く", "url": "URL を Mastodon で開く",
"hashtag": "#%s へ移動", "hashtag": "#%s へ移動",
"no_user": { "no_user": {
"title": "No User Account Found", "title": "ユーザーアカウントが見つかりませんでした",
"message": "There's no Useraccount \"%s\" on %s" "message": "\"%s\"というユーザーは%sには見つかりませんでした"
}, },
"empty_state": { "empty_state": {
"no_results": "なし" "no_results": "なし"
@ -710,66 +719,66 @@
}, },
"settings": { "settings": {
"overview": { "overview": {
"title": "Settings", "title": "設定",
"general": "General", "general": "一般",
"notifications": "Notifications", "notifications": "通知",
"support_mastodon": "Support Mastodon", "support_mastodon": "Mastodonを支援する",
"about_mastodon": "About Mastodon", "about_mastodon": "Mastodonについて",
"server_details": "Server Details", "server_details": "サーバーの詳細",
"logout": "Logout %@" "logout": "%@ をログアウト"
}, },
"about_mastodon": { "about_mastodon": {
"title": "About", "title": "Mastodonについて",
"more_settings": "Even More Settings", "more_settings": "さらに詳しい設定",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "Mastodonに貢献する",
"privacy_policy": "Privacy Policy", "privacy_policy": "プライバシーポリシー",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "メディアキャッシュの削除"
}, },
"server_details": { "server_details": {
"about": "About", "about": "このサーバーについて",
"rules": "Rules", "rules": "ルール",
"about_instance": { "about_instance": {
"title": "Administrator", "title": "管理者",
"message_admin": "Message Admin", "message_admin": "管理者にメッセージを送信",
"legal_notice": "A legal notice" "legal_notice": "法的通知"
} }
}, },
"general": { "general": {
"title": "General", "title": "一般",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "テーマ",
"dark": "Dark", "dark": "ダーク",
"light": "Light", "light": "ライト",
"system": "Use Device Appearance" "system": "端末の設定に合わせる"
}, },
"design": { "design": {
"section_title": "Design", "section_title": "アニメーション",
"show_animations": "Play Animated Avatars and Emoji" "show_animations": "アニメーションアイコンと絵文字を再生"
}, },
"links": { "links": {
"section_title": "Links", "section_title": "Webブラウザ",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "アプリ内ブラウザアプリで開く",
"open_in_browser": "Open in Browser" "open_in_browser": "ブラウザアプリで開く"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "通知",
"policy": { "policy": {
"title": "Get Notifications from", "title": "通知を送信する人",
"anyone": "Anyone", "anyone": "誰でも",
"followers": "People who follow you", "followers": "あなたのフォロワーのみ",
"follow": "People you follow", "follow": "あなたがフォローしている人のみ",
"noone": "No one" "noone": "誰にも許可しない"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "メンションと返信",
"boosts": "Boosts", "boosts": "ブースト",
"favorites": "Favorites", "favorites": "お気に入り",
"new_followers": "New Followers" "new_followers": "新しいフォロワー"
}, },
"disabled": { "disabled": {
"notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.", "notification_hint": "プッシュ通知を受け取るには、端末の設定から通知を許可しましょう。",
"go_to_settings": "Go to Notification Settings" "go_to_settings": "端末の通知設定を開く"
} }
} }
}, },

View File

@ -222,10 +222,11 @@
"pending": "Yegguni", "pending": "Yegguni",
"block": "Sewḥel", "block": "Sewḥel",
"block_user": "Sewḥel %s", "block_user": "Sewḥel %s",
"block_domain": "Sewḥel %s", "block_domain": "Block domain %s",
"unblock": "Serreḥ", "unblock": "Serreḥ",
"unblock_user": "Serreḥ i %s", "unblock_user": "Serreḥ i %s",
"blocked": "Yettusewḥel", "blocked": "Yettusewḥel",
"domain_blocked": "Domain Blocked",
"mute": "Sgugem", "mute": "Sgugem",
"mute_user": "Sgugem %s", "mute_user": "Sgugem %s",
"unmute": "Kkes asgugem", "unmute": "Kkes asgugem",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Tê nirxandin", "pending": "Tê nirxandin",
"block": "Asteng bike", "block": "Asteng bike",
"block_user": "%s asteng bike", "block_user": "%s asteng bike",
"block_domain": "%s asteng bike", "block_domain": "Block domain %s",
"unblock": "Astengiyê rake", "unblock": "Astengiyê rake",
"unblock_user": "%s asteng neke", "unblock_user": "%s asteng neke",
"blocked": "Astengkirî", "blocked": "Astengkirî",
"domain_blocked": "Domain Blocked",
"mute": "Bêdeng bike", "mute": "Bêdeng bike",
"mute_user": "%s bêdeng bike", "mute_user": "%s bêdeng bike",
"unmute": "Bêdeng neke", "unmute": "Bêdeng neke",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Bilindkirinan veşêre", "title": "Bilindkirinan veşêre",
"message": "Bo veşartina bilindkirinan bipejirîne" "message": "Bo veşartina bilindkirinan bipejirîne"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -19,7 +19,7 @@
<key>a11y.plural.count.input_limit_exceeds</key> <key>a11y.plural.count.input_limit_exceeds</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>Input limit exceeds %#@character_count@</string> <string>글자 입력 제한 초과 %#@character_count@</string>
<key>character_count</key> <key>character_count</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -33,7 +33,7 @@
<key>a11y.plural.count.input_limit_remains</key> <key>a11y.plural.count.input_limit_remains</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>Input limit remains %#@character_count@</string> <string>남은 글자 입력 수 %#@character_count@</string>
<key>character_count</key> <key>character_count</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -61,7 +61,7 @@
<key>plural.count.followed_by_and_mutual</key> <key>plural.count.followed_by_and_mutual</key>
<dict> <dict>
<key>NSStringLocalizedFormatKey</key> <key>NSStringLocalizedFormatKey</key>
<string>%#@names@%#@count_mutual@</string> <string>%#@names@%#@count_mutual@ 명이 팔로우합니다.</string>
<key>names</key> <key>names</key>
<dict> <dict>
<key>NSStringFormatSpecTypeKey</key> <key>NSStringFormatSpecTypeKey</key>
@ -162,7 +162,7 @@
<key>NSStringFormatValueTypeKey</key> <key>NSStringFormatValueTypeKey</key>
<string>ld</string> <string>ld</string>
<key>other</key> <key>other</key>
<string>%ld re-blogs</string> <string>%ld 개의 리블로그</string>
</dict> </dict>
</dict> </dict>
<key>plural.count.reply</key> <key>plural.count.reply</key>

View File

@ -33,24 +33,24 @@
"confirm": "로그아웃" "confirm": "로그아웃"
}, },
"block_domain": { "block_domain": {
"title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", "title": "정말로 %s 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 콘텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.",
"block_entire_domain": "도메인 차단" "block_entire_domain": "도메인 차단"
}, },
"save_photo_failure": { "save_photo_failure": {
"title": "사진 저장 실패", "title": "사진 저장 실패",
"message": "Please enable the photo library access permission to save the photo." "message": "사진을 저장하기 위해 사진 접근 권한을 허용해 주세요."
}, },
"delete_post": { "delete_post": {
"title": "정말로 이 게시물을 삭제하시겠습니까?", "title": "정말로 이 게시물을 삭제하시겠습니까?",
"message": "Are you sure you want to delete this post?" "message": "정말로 이 게시물을 삭제하시겠습니까?"
}, },
"clean_cache": { "clean_cache": {
"title": "캐시 삭제", "title": "캐시 삭제",
"message": "Successfully cleaned %s cache." "message": "%s의 캐시를 성공적으로 청소하였습니다."
}, },
"translation_failed": { "translation_failed": {
"title": "노트", "title": "노트",
"message": "Translation failed. Maybe the administrator has not enabled translations on this server or this server is running an older version of Mastodon where translations are not yet supported.", "message": "번역에 실패했습니다. 관리자가 번역 기능을 활성화시키지 않았거나 번역 기능을 지원하지 않는 Mastodon의 버전을 사용하는 것일 수 있습니다.",
"button": "확인" "button": "확인"
} }
}, },
@ -98,10 +98,10 @@
"unknown_language": "알 수 없음" "unknown_language": "알 수 없음"
}, },
"edit_post": "수정", "edit_post": "수정",
"bookmark": "Bookmark", "bookmark": "북마크",
"remove_bookmark": "Remove Bookmark", "remove_bookmark": "북마크 삭제",
"follow": "Follow %s", "follow": "%s 팔로우하기",
"unfollow": "Unfollow %s" "unfollow": "%s 언팔로우하기"
}, },
"tabs": { "tabs": {
"home": "홈", "home": "홈",
@ -169,11 +169,11 @@
"show_image": "이미지 표시", "show_image": "이미지 표시",
"show_gif": "GIF 보기", "show_gif": "GIF 보기",
"show_video_player": "비디오 플레이어 보기", "show_video_player": "비디오 플레이어 보기",
"share_link_in_post": "Share Link in Post", "share_link_in_post": "게시글 안의 링크 공유",
"tap_then_hold_to_show_menu": "Tap then hold to show menu", "tap_then_hold_to_show_menu": "Tap then hold to show menu",
"a11y_labels": { "a11y_labels": {
"reblog": "Re-blog", "reblog": "리블로그",
"unreblog": "Undo re-blog" "unreblog": "리블로그 취소"
} }
}, },
"tag": { "tag": {
@ -194,7 +194,7 @@
"translated_from": "%s에서 %s를 사용해 번역됨", "translated_from": "%s에서 %s를 사용해 번역됨",
"unknown_language": "알 수 없음", "unknown_language": "알 수 없음",
"unknown_provider": "알 수 없음", "unknown_provider": "알 수 없음",
"show_original": "Show Original" "show_original": "원본 보기"
}, },
"media": { "media": {
"accessibility_label": "%s, attachment %d of %d", "accessibility_label": "%s, attachment %d of %d",
@ -205,7 +205,7 @@
"posted_via_application": "%s via %s", "posted_via_application": "%s via %s",
"buttons": { "buttons": {
"reblogs_title": "Reblogs", "reblogs_title": "Reblogs",
"favorites_title": "Favorites", "favorites_title": "즐겨찾기",
"edit_history_title": "Edit History", "edit_history_title": "Edit History",
"edit_history_detail": "Last edit %s" "edit_history_detail": "Last edit %s"
}, },
@ -222,10 +222,11 @@
"pending": "대기중", "pending": "대기중",
"block": "차단", "block": "차단",
"block_user": "%s 차단", "block_user": "%s 차단",
"block_domain": "%s 차단", "block_domain": "Block domain %s",
"unblock": "차단 해제", "unblock": "차단 해제",
"unblock_user": "%s 차단 해제", "unblock_user": "%s 차단 해제",
"blocked": "차단됨", "blocked": "차단됨",
"domain_blocked": "Domain Blocked",
"mute": "뮤트", "mute": "뮤트",
"mute_user": "%s 뮤트", "mute_user": "%s 뮤트",
"unmute": "뮤트 해제", "unmute": "뮤트 해제",
@ -258,7 +259,7 @@
}, },
"user_list": { "user_list": {
"no_verified_link": "No verified link", "no_verified_link": "No verified link",
"followers_count": "%@ followers" "followers_count": "%@ 팔로잉"
} }
}, },
"scene": { "scene": {
@ -266,22 +267,22 @@
"log_in": "로그인", "log_in": "로그인",
"learn_more": "Learn more", "learn_more": "Learn more",
"join_default_server": "Join %@", "join_default_server": "Join %@",
"pick_server": "Pick another server", "pick_server": "다른 서버 선택하기",
"separator": { "separator": {
"or": "or" "or": "또는"
}, },
"education": { "education": {
"mastodon": { "mastodon": {
"title": "Welcome to Mastodon", "title": "Mastodon에 오신 것을 환영합니다",
"description": "Mastodon is a decentralized social network, meaning no single company controls it. Its made up of many independently-run servers, all connected together." "description": "Mastodon is a decentralized social network, meaning no single company controls it. Its made up of many independently-run servers, all connected together."
}, },
"servers": { "servers": {
"title": "What are servers?", "title": "서버는 무엇인가요?",
"description": "Every Mastodon account is hosted on a server — each with its own values, rules, & admins. No matter which one you pick, you can follow and interact with people on any server." "description": "Every Mastodon account is hosted on a server — each with its own values, rules, & admins. No matter which one you pick, you can follow and interact with people on any server."
}, },
"a11y": { "a11y": {
"what_is_mastodon": { "what_is_mastodon": {
"title": "What is Mastodon?" "title": "Mastodon이란?"
} }
} }
} }
@ -294,9 +295,9 @@
} }
}, },
"server_picker": { "server_picker": {
"title": "Pick Server", "title": "서버 선택하기",
"button": { "button": {
"language": "Language", "language": "언어",
"signup_speed": "Sign-up Speed", "signup_speed": "Sign-up Speed",
"category": { "category": {
"all": "모두", "all": "모두",
@ -327,28 +328,28 @@
}, },
"empty_state": { "empty_state": {
"finding_servers": "사용 가능한 서버를 찾는 중입니다...", "finding_servers": "사용 가능한 서버를 찾는 중입니다...",
"bad_network": "Something went wrong while loading the data. Check your internet connection.", "bad_network": "데이터를 로딩하는 과정에서 문제가 발생했습니다. 인터넷 연결 상태를 확인해주세요.",
"no_results": "결과 없음" "no_results": "결과 없음"
}, },
"signup_speed": { "signup_speed": {
"all": "All", "all": "모두",
"instant": "Instant Sign-up", "instant": "바로 가입",
"manually_reviewed": "Manual Review" "manually_reviewed": "수동 심사"
}, },
"language": { "language": {
"all": "All" "all": "모두"
}, },
"search": { "search": {
"placeholder": "Search name or URL" "placeholder": "이름 또는 URL 검색"
}, },
"no_server_selected_hint": "아무 것도 고르지 않은 경우, 당신의 언어에 따라 서버를 골라드립니다." "no_server_selected_hint": "아무 것도 고르지 않은 경우, 당신의 언어에 따라 서버를 골라드립니다."
}, },
"privacy": { "privacy": {
"title": "Privacy", "title": "개인 정보",
"description": "마스토돈 앱은 아무런 데이터도 수집하지 않지만, 가입한 서버의 정책은 다를 수도 있습니다. 잠시 시간을 들여 마스토돈 앱과 서버의 개인정보 정책을 확인한 후 동의해 주세요.", "description": "마스토돈 앱은 아무런 데이터도 수집하지 않지만, 가입한 서버의 정책은 다를 수도 있습니다. 잠시 시간을 들여 마스토돈 앱과 서버의 개인정보 정책을 확인한 후 동의해 주세요.",
"policy": { "policy": {
"ios": "Privacy Policy - Mastodon for iOS", "ios": "개인정보처리방침 - Mastodon iOS",
"server": "Privacy Policy - %s" "server": "개인정보처리방침 - %s"
}, },
"button": { "button": {
"confirm": "동의합니다" "confirm": "동의합니다"
@ -373,7 +374,7 @@
}, },
"password": { "password": {
"placeholder": "암호", "placeholder": "암호",
"confirmation_placeholder": "Confirm Password", "confirmation_placeholder": "비밀번호 확인",
"require": "암호의 최소 요구사항:", "require": "암호의 최소 요구사항:",
"character_limit": "8글자", "character_limit": "8글자",
"accessibility": { "accessibility": {
@ -420,13 +421,13 @@
"subtitle": "다음은 %s의 중재자들에 의해 설정되고 적용되는 규칙들입니다.", "subtitle": "다음은 %s의 중재자들에 의해 설정되고 적용되는 규칙들입니다.",
"prompt": "By continuing, youre subject to the terms of service and privacy policy for %s.", "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": { "button": {
"confirm": "동의합니다" "confirm": "동의합니다"
} }
}, },
"confirm_email": { "confirm_email": {
"title": "Check Your Inbox", "title": "받은 편지함을 확인하세요",
"tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we sent you to verify %@. Well wait right here.", "tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we sent you to verify %@. Well wait right here.",
"button": { "button": {
"resend": "재전송" "resend": "재전송"
@ -444,8 +445,8 @@
}, },
"didnt_get_link": { "didnt_get_link": {
"prefix": "링크를 못 받으셨나요?", "prefix": "링크를 못 받으셨나요?",
"resend_in": "Resend (%@)", "resend_in": "재전송(%@)",
"resend_now": "Resend now." "resend_now": "재전송됨"
} }
}, },
"home_timeline": { "home_timeline": {
@ -462,14 +463,14 @@
} }
}, },
"suggestion_account": { "suggestion_account": {
"title": "Popular on Mastodon", "title": "마스토돈 속 인기",
"follow_all": "Follow all" "follow_all": "모두 팔로우"
}, },
"compose": { "compose": {
"title": { "title": {
"new_post": "새 게시물", "new_post": "새 게시물",
"new_reply": "새 답글", "new_reply": "새 답글",
"edit_post": "Edit Post" "edit_post": "게시물 편집"
}, },
"media_selection": { "media_selection": {
"camera": "사진 촬영", "camera": "사진 촬영",
@ -489,11 +490,11 @@
"upload_failed": "업로드 실패", "upload_failed": "업로드 실패",
"can_not_recognize_this_media_attachment": "Can not recognize this media attachment", "can_not_recognize_this_media_attachment": "Can not recognize this media attachment",
"attachment_too_large": "첨부파일이 너무 큽니다", "attachment_too_large": "첨부파일이 너무 큽니다",
"compressing_state": "Compressing...", "compressing_state": "압축…",
"server_processing_state": "Server Processing..." "server_processing_state": "Server Processing..."
}, },
"poll": { "poll": {
"title": "Poll", "title": "투표",
"duration_time": "기간: %s", "duration_time": "기간: %s",
"thirty_minutes": "30분", "thirty_minutes": "30분",
"one_hour": "1시간", "one_hour": "1시간",
@ -541,23 +542,23 @@
"select_visibility_entry": "Select Visibility - %s" "select_visibility_entry": "Select Visibility - %s"
}, },
"language": { "language": {
"title": "Post Language", "title": "게시물 언어",
"suggested": "Suggested", "suggested": "추천",
"recent": "Recent", "recent": "최근",
"other": "Other Language…" "other": "다른 언어"
} }
}, },
"profile": { "profile": {
"header": { "header": {
"follows_you": "Follows You" "follows_you": "나를 팔로우 합니다"
}, },
"dashboard": { "dashboard": {
"my_posts": "posts", "my_posts": "게시물",
"my_following": "following", "my_following": "팔로잉",
"my_followers": "followers", "my_followers": "팔로워",
"other_posts": "posts", "other_posts": "게시물",
"other_following": "following", "other_following": "팔로잉",
"other_followers": "followers", "other_followers": "팔로워",
"familiar_followers": "mutuals" "familiar_followers": "mutuals"
}, },
"fields": { "fields": {
@ -575,14 +576,14 @@
"segmented_control": { "segmented_control": {
"posts": "게시물", "posts": "게시물",
"replies": "답글", "replies": "답글",
"posts_and_replies": "Posts and Replies", "posts_and_replies": "게시물과 답장",
"media": "미디어", "media": "미디어",
"about": "정보" "about": "정보"
}, },
"relationship_action_alert": { "relationship_action_alert": {
"confirm_mute_user": { "confirm_mute_user": {
"title": "Mute Account", "title": "계정 뮤트",
"message": "Confirm to mute %s" "message": "%s 뮤트 확인"
}, },
"confirm_unmute_user": { "confirm_unmute_user": {
"title": "계정 뮤트 해제", "title": "계정 뮤트 해제",
@ -590,11 +591,11 @@
}, },
"confirm_block_user": { "confirm_block_user": {
"title": "계정 차단", "title": "계정 차단",
"message": "Confirm to block %s" "message": "%s 차단 확인"
}, },
"confirm_unblock_user": { "confirm_unblock_user": {
"title": "계정 차단 해제", "title": "계정 차단 해제",
"message": "Confirm to unblock %s" "message": "%s 차단 해제 확인"
}, },
"confirm_show_reblogs": { "confirm_show_reblogs": {
"title": "리블로그 보기", "title": "리블로그 보기",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "리블로그 가리기", "title": "리블로그 가리기",
"message": "리블로그를 가리기 전 확인" "message": "리블로그를 가리기 전 확인"
},
"confirm_block_domain": {
"title": "도메인 차단",
"message": "%s 도메인 차단 확인"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {
@ -710,7 +719,7 @@
}, },
"settings": { "settings": {
"overview": { "overview": {
"title": "Settings", "title": "설정",
"general": "General", "general": "General",
"notifications": "Notifications", "notifications": "Notifications",
"support_mastodon": "Support Mastodon", "support_mastodon": "Support Mastodon",
@ -722,7 +731,7 @@
"title": "About", "title": "About",
"more_settings": "Even More Settings", "more_settings": "Even More Settings",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "Contribute to Mastodon",
"privacy_policy": "Privacy Policy", "privacy_policy": "개인정보처리방침",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "Clear Media Storage"
}, },
"server_details": { "server_details": {
@ -748,24 +757,24 @@
}, },
"links": { "links": {
"section_title": "Links", "section_title": "Links",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "Mastodon으로 열기",
"open_in_browser": "Open in Browser" "open_in_browser": "브라우저로 열기"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "알림",
"policy": { "policy": {
"title": "Get Notifications from", "title": "Get Notifications from",
"anyone": "Anyone", "anyone": "모두",
"followers": "People who follow you", "followers": "나를 팔로우하는 사람들",
"follow": "People you follow", "follow": "내가 팔로우하는 사람들",
"noone": "No one" "noone": "알림 받지않기"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "Mentions & Replies",
"boosts": "Boosts", "boosts": "Boosts",
"favorites": "Favorites", "favorites": "즐겨찾기",
"new_followers": "New Followers" "new_followers": "새 팔로워"
}, },
"disabled": { "disabled": {
"notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.", "notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.",
@ -841,7 +850,7 @@
"add_account": "계정 추가" "add_account": "계정 추가"
}, },
"bookmark": { "bookmark": {
"title": "Bookmarks" "title": "북마크"
}, },
"followed_tags": { "followed_tags": {
"title": "팔로우한 태그", "title": "팔로우한 태그",
@ -867,7 +876,7 @@
"user_not_logged_in": "Please open Mastodon to log in to an Account." "user_not_logged_in": "Please open Mastodon to log in to an Account."
}, },
"followers_count": { "followers_count": {
"configuration_display_name": "Followers", "configuration_display_name": "팔로워",
"configuration_description": "Show number of followers.", "configuration_description": "Show number of followers.",
"title": "FOLLOWERS", "title": "FOLLOWERS",
"followers_today": "%s followers today" "followers_today": "%s followers today"

View File

@ -222,10 +222,11 @@
"pending": "Gaida", "pending": "Gaida",
"block": "Bloķēt", "block": "Bloķēt",
"block_user": "Bloķēt %s", "block_user": "Bloķēt %s",
"block_domain": "Bloķēt %s", "block_domain": "Block domain %s",
"unblock": "Atbloķēt", "unblock": "Atbloķēt",
"unblock_user": "Atbloķēt %s", "unblock_user": "Atbloķēt %s",
"blocked": "Bloķēts", "blocked": "Bloķēts",
"domain_blocked": "Domain Blocked",
"mute": "Apklusināt", "mute": "Apklusināt",
"mute_user": "Aplusināt %s", "mute_user": "Aplusināt %s",
"unmute": "Noņemt apklusinājumu", "unmute": "Noņemt apklusinājumu",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Paslēpt Reblogus", "title": "Paslēpt Reblogus",
"message": "Apstiprināt, lai slēptu reblogus" "message": "Apstiprināt, lai slēptu reblogus"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "ဆိုင်းငံ့ထားသည်", "pending": "ဆိုင်းငံ့ထားသည်",
"block": "ဘလော့လုပ်ရန်", "block": "ဘလော့လုပ်ရန်",
"block_user": "%s ကို ဘလော့လုပ်ရန်", "block_user": "%s ကို ဘလော့လုပ်ရန်",
"block_domain": "%s ကို ဘလော့လုပ်ရန်", "block_domain": "Block domain %s",
"unblock": "ဘလော့ဖြုတ်ရန်", "unblock": "ဘလော့ဖြုတ်ရန်",
"unblock_user": "%s ကို ဘလော့ဖြုတ်ရန်", "unblock_user": "%s ကို ဘလော့ဖြုတ်ရန်",
"blocked": "ဘလော့ထားသည်", "blocked": "ဘလော့ထားသည်",
"domain_blocked": "Domain Blocked",
"mute": "ပိတ်ထားရန်", "mute": "ပိတ်ထားရန်",
"mute_user": "%s ကို ပိတ်ထားရန်", "mute_user": "%s ကို ပိတ်ထားရန်",
"unmute": "ပြန်ဖွင့်ရန်", "unmute": "ပြန်ဖွင့်ရန်",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "In afwachting", "pending": "In afwachting",
"block": "Blokkeren", "block": "Blokkeren",
"block_user": "%s blokkeren", "block_user": "%s blokkeren",
"block_domain": "%s blokkeren", "block_domain": "Block domain %s",
"unblock": "Deblokkeren", "unblock": "Deblokkeren",
"unblock_user": "%s deblokkeren", "unblock_user": "%s deblokkeren",
"blocked": "Geblokkeerd", "blocked": "Geblokkeerd",
"domain_blocked": "Domain Blocked",
"mute": "Negeren", "mute": "Negeren",
"mute_user": "Negeer %s", "mute_user": "Negeer %s",
"unmute": "Niet langer negeren", "unmute": "Niet langer negeren",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Boosts verbergen", "title": "Boosts verbergen",
"message": "Verbergen van boosts bevestigen" "message": "Verbergen van boosts bevestigen"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Oczekujący", "pending": "Oczekujący",
"block": "Zablokuj", "block": "Zablokuj",
"block_user": "Zablokuj %s", "block_user": "Zablokuj %s",
"block_domain": "Zablokuj %s", "block_domain": "Block domain %s",
"unblock": "Odblokuj", "unblock": "Odblokuj",
"unblock_user": "Odblokuj %s", "unblock_user": "Odblokuj %s",
"blocked": "Zablokowany", "blocked": "Zablokowany",
"domain_blocked": "Domain Blocked",
"mute": "Wycisz", "mute": "Wycisz",
"mute_user": "Wycisz %s", "mute_user": "Wycisz %s",
"unmute": "Cofnij wyciszenie", "unmute": "Cofnij wyciszenie",
@ -355,7 +356,7 @@
} }
}, },
"register": { "register": {
"title": "Create Account", "title": "Utwórz konto",
"input": { "input": {
"avatar": { "avatar": {
"delete": "Usuń" "delete": "Usuń"
@ -419,8 +420,8 @@
"title": "Some ground rules.", "title": "Some ground rules.",
"subtitle": "These are set and enforced by the %s moderators.", "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.", "prompt": "By continuing, youre subject to the terms of service and privacy policy for %s.",
"terms_of_service": "terms of service", "terms_of_service": "zasady użytkowania",
"privacy_policy": "privacy policy", "privacy_policy": "polityka prywatności",
"button": { "button": {
"confirm": "I Agree" "confirm": "I Agree"
} }
@ -429,7 +430,7 @@
"title": "Check Your Inbox", "title": "Check Your Inbox",
"tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we sent you to verify %@. Well wait right here.", "tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we sent you to verify %@. Well wait right here.",
"button": { "button": {
"resend": "Resend" "resend": "Wyślij ponownie"
}, },
"dont_receive_email": { "dont_receive_email": {
"title": "Check your Email", "title": "Check your Email",
@ -444,7 +445,7 @@
}, },
"didnt_get_link": { "didnt_get_link": {
"prefix": "Didnt get a link?", "prefix": "Didnt get a link?",
"resend_in": "Resend (%@)", "resend_in": "Wyślij ponownie (%@)",
"resend_now": "Resend now." "resend_now": "Resend now."
} }
}, },
@ -472,12 +473,12 @@
"edit_post": "Edit Post" "edit_post": "Edit Post"
}, },
"media_selection": { "media_selection": {
"camera": "Take Photo", "camera": "Zrób zdjęcie",
"photo_library": "Photo Library", "photo_library": "Biblioteka zdjęć",
"browse": "Browse" "browse": "Browse"
}, },
"content_input_placeholder": "Type or paste whats on your mind", "content_input_placeholder": "Type or paste whats on your mind",
"compose_action": "Publish", "compose_action": "Publikuj",
"replying_to_user": "odpowiadanie %s", "replying_to_user": "odpowiadanie %s",
"attachment": { "attachment": {
"photo": "zdjęcie", "photo": "zdjęcie",
@ -513,18 +514,18 @@
"placeholder": "Write an accurate warning here..." "placeholder": "Write an accurate warning here..."
}, },
"visibility": { "visibility": {
"public": "Public", "public": "Publiczny",
"unlisted": "Unlisted", "unlisted": "Unlisted",
"private": "Followers only", "private": "Tylko dla obserwujących",
"direct": "Only people I mention" "direct": "Tylko wspomniane osoby"
}, },
"auto_complete": { "auto_complete": {
"space_to_add": "Space to add" "space_to_add": "Space to add"
}, },
"accessibility": { "accessibility": {
"append_attachment": "Add Attachment", "append_attachment": "Dodaj załącznik",
"append_poll": "Add Poll", "append_poll": "Dodaj ankietę",
"remove_poll": "Remove Poll", "remove_poll": "Usuń ankietę",
"custom_emoji_picker": "Custom Emoji Picker", "custom_emoji_picker": "Custom Emoji Picker",
"enable_content_warning": "Enable Content Warning", "enable_content_warning": "Enable Content Warning",
"disable_content_warning": "Disable Content Warning", "disable_content_warning": "Disable Content Warning",
@ -561,11 +562,11 @@
"familiar_followers": "mutuals" "familiar_followers": "mutuals"
}, },
"fields": { "fields": {
"joined": "Joined", "joined": "Dołączył(a)",
"add_row": "Add Row", "add_row": "Add Row",
"placeholder": { "placeholder": {
"label": "Label", "label": "Etykieta",
"content": "Content" "content": "Zawartość"
}, },
"verified": { "verified": {
"short": "Verified on %s", "short": "Verified on %s",
@ -574,19 +575,19 @@
}, },
"segmented_control": { "segmented_control": {
"posts": "Posts", "posts": "Posts",
"replies": "Replies", "replies": "Odpowiedzi",
"posts_and_replies": "Posts and Replies", "posts_and_replies": "Posts and Replies",
"media": "Media", "media": "Media",
"about": "About" "about": "About"
}, },
"relationship_action_alert": { "relationship_action_alert": {
"confirm_mute_user": { "confirm_mute_user": {
"title": "Mute Account", "title": "Wycisz konto",
"message": "Confirm to mute %s" "message": "Potwierdź wyciszenie %s"
}, },
"confirm_unmute_user": { "confirm_unmute_user": {
"title": "Unmute Account", "title": "Cofnij wyciszenie konta",
"message": "Confirm to unmute %s" "message": "Potwierdź cofnięcie wyciszenia %s"
}, },
"confirm_block_user": { "confirm_block_user": {
"title": "Block Account", "title": "Block Account",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {
@ -634,7 +643,7 @@
"title": "Search", "title": "Search",
"search_bar": { "search_bar": {
"placeholder": "Search hashtags and users", "placeholder": "Search hashtags and users",
"cancel": "Cancel" "cancel": "Anuluj"
}, },
"recommend": { "recommend": {
"button_text": "See All", "button_text": "See All",
@ -646,23 +655,23 @@
"accounts": { "accounts": {
"title": "Accounts you might like", "title": "Accounts you might like",
"description": "You may like to follow these accounts", "description": "You may like to follow these accounts",
"follow": "Follow" "follow": "Obserwuj"
} }
}, },
"searching": { "searching": {
"posts": "Posts matching \"%s\"", "posts": "Posts matching \"%s\"",
"people": "People matching \"%s\"", "people": "People matching \"%s\"",
"profile": "Go to @%s@%s", "profile": "Go to @%s@%s",
"url": "Open URL in Mastodon", "url": "Otwórz adres URL w Mastodonie",
"hashtag": "Go to #%s", "hashtag": "Go to #%s",
"no_user": { "no_user": {
"title": "No User Account Found", "title": "No User Account Found",
"message": "There's no Useraccount \"%s\" on %s" "message": "There's no Useraccount \"%s\" on %s"
}, },
"empty_state": { "empty_state": {
"no_results": "No results" "no_results": "Brak wyników"
}, },
"recent_search": "Recent searches", "recent_search": "Ostatnie wyszukiwania",
"clear_all": "Clear all", "clear_all": "Clear all",
"clear": "Clear" "clear": "Clear"
} }
@ -678,12 +687,12 @@
"intro": "These are the posts gaining traction in your corner of Mastodon." "intro": "These are the posts gaining traction in your corner of Mastodon."
}, },
"favorite": { "favorite": {
"title": "Favorites" "title": "Ulubione"
}, },
"notification": { "notification": {
"title": { "title": {
"Everything": "Everything", "Everything": "Wszystko",
"Mentions": "Mentions" "Mentions": "Wspomnienia"
}, },
"notification_description": { "notification_description": {
"followed_you": "followed you", "followed_you": "followed you",
@ -698,10 +707,10 @@
"show_mentions": "Show Mentions" "show_mentions": "Show Mentions"
}, },
"follow_request": { "follow_request": {
"accept": "Accept", "accept": "Zaakceptuj",
"accepted": "Accepted", "accepted": "Zaakceptowano",
"reject": "reject", "reject": "odrzuć",
"rejected": "Rejected" "rejected": "Odrzucono"
} }
}, },
"thread": { "thread": {
@ -737,9 +746,9 @@
"general": { "general": {
"title": "General", "title": "General",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "Wygląd",
"dark": "Dark", "dark": "Ciemny",
"light": "Light", "light": "Jasny",
"system": "Use Device Appearance" "system": "Use Device Appearance"
}, },
"design": { "design": {
@ -753,7 +762,7 @@
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "Powiadomienia",
"policy": { "policy": {
"title": "Get Notifications from", "title": "Get Notifications from",
"anyone": "Anyone", "anyone": "Anyone",
@ -791,13 +800,13 @@
"whats_wrong_with_this_account": "What's wrong with this account?", "whats_wrong_with_this_account": "What's wrong with this account?",
"whats_wrong_with_this_username": "What's wrong with %s?", "whats_wrong_with_this_username": "What's wrong with %s?",
"select_the_best_match": "Select the best match", "select_the_best_match": "Select the best match",
"i_dont_like_it": "I dont like it", "i_dont_like_it": "Nie lubię tego",
"it_is_not_something_you_want_to_see": "It is not something you want to see", "it_is_not_something_you_want_to_see": "It is not something you want to see",
"its_spam": "Its spam", "its_spam": "To spam",
"malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies", "malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
"it_violates_server_rules": "It violates server rules", "it_violates_server_rules": "To narusza zasady serwera",
"you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules", "you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
"its_something_else": "Its something else", "its_something_else": "To coś innego",
"the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories" "the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
}, },
"step_two": { "step_two": {
@ -838,10 +847,10 @@
"account_list": { "account_list": {
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
"dismiss_account_switcher": "Dismiss Account Switcher", "dismiss_account_switcher": "Dismiss Account Switcher",
"add_account": "Add Account" "add_account": "Dodaj konto"
}, },
"bookmark": { "bookmark": {
"title": "Bookmarks" "title": "Zakładki"
}, },
"followed_tags": { "followed_tags": {
"title": "Followed Tags", "title": "Followed Tags",
@ -851,7 +860,7 @@
"posts_today": "posts today" "posts_today": "posts today"
}, },
"actions": { "actions": {
"follow": "Follow", "follow": "Obserwuj",
"unfollow": "Unfollow" "unfollow": "Unfollow"
} }
} }

View File

@ -222,10 +222,11 @@
"pending": "Pendente", "pending": "Pendente",
"block": "Bloquear", "block": "Bloquear",
"block_user": "Bloquear %s", "block_user": "Bloquear %s",
"block_domain": "Bloquear %s", "block_domain": "Block domain %s",
"unblock": "Desbloquear", "unblock": "Desbloquear",
"unblock_user": "Desbloquear %s", "unblock_user": "Desbloquear %s",
"blocked": "Bloqueado", "blocked": "Bloqueado",
"domain_blocked": "Domain Blocked",
"mute": "Silenciar", "mute": "Silenciar",
"mute_user": "Silenciar %s", "mute_user": "Silenciar %s",
"unmute": "Remover silenciado", "unmute": "Remover silenciado",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Ocultar reblogs", "title": "Ocultar reblogs",
"message": "Confirmar para ocultar reblogs" "message": "Confirmar para ocultar reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "Block", "block": "Block",
"block_user": "Block %s", "block_user": "Block %s",
"block_domain": "Block %s", "block_domain": "Block domain %s",
"unblock": "Unblock", "unblock": "Unblock",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Отправлен", "pending": "Отправлен",
"block": "Заблокировать", "block": "Заблокировать",
"block_user": "Заблокировать %s", "block_user": "Заблокировать %s",
"block_domain": "Заблокировать %s", "block_domain": "Block domain %s",
"unblock": "Разблокировать", "unblock": "Разблокировать",
"unblock_user": "Разблокировать %s", "unblock_user": "Разблокировать %s",
"blocked": "В заблокированных", "blocked": "В заблокированных",
"domain_blocked": "Domain Blocked",
"mute": "Игнорировать", "mute": "Игнорировать",
"mute_user": "Игнорировать %s", "mute_user": "Игнорировать %s",
"unmute": "Убрать из игнорируемых", "unmute": "Убрать из игнорируемых",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Pending", "pending": "Pending",
"block": "අවහිර", "block": "අවහිර",
"block_user": "%s අවහිර", "block_user": "%s අවහිර",
"block_domain": "%s අවහිර", "block_domain": "Block domain %s",
"unblock": "අනවහිර", "unblock": "අනවහිර",
"unblock_user": "Unblock %s", "unblock_user": "Unblock %s",
"blocked": "Blocked", "blocked": "Blocked",
"domain_blocked": "Domain Blocked",
"mute": "Mute", "mute": "Mute",
"mute_user": "Mute %s", "mute_user": "Mute %s",
"unmute": "Unmute", "unmute": "Unmute",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Hide Reblogs", "title": "Hide Reblogs",
"message": "Confirm to hide reblogs" "message": "Confirm to hide reblogs"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Na čakanju", "pending": "Na čakanju",
"block": "Blokiraj", "block": "Blokiraj",
"block_user": "Blokiraj %s", "block_user": "Blokiraj %s",
"block_domain": "Blokiraj %s", "block_domain": "Blokiraj domeno %s",
"unblock": "Odblokiraj", "unblock": "Odblokiraj",
"unblock_user": "Odblokiraj %s", "unblock_user": "Odblokiraj %s",
"blocked": "Blokirano", "blocked": "Blokirano",
"domain_blocked": "Domena blokirana",
"mute": "Utišaj", "mute": "Utišaj",
"mute_user": "Utišaj %s", "mute_user": "Utišaj %s",
"unmute": "Odtišaj", "unmute": "Odtišaj",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Skrij poobjave", "title": "Skrij poobjave",
"message": "Potrdite, da poobjave ne bodo prikazane" "message": "Potrdite, da poobjave ne bodo prikazane"
},
"confirm_block_domain": {
"title": "Blokiraj domeno",
"message": "Potrdite blokado domene %s"
},
"confirm_unblock_domain": {
"title": "Odblokiraj domeno",
"message": "Potrdite umik blokade domene %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Väntande", "pending": "Väntande",
"block": "Blockera", "block": "Blockera",
"block_user": "Blockera %s", "block_user": "Blockera %s",
"block_domain": "Blockera %s", "block_domain": "Block domain %s",
"unblock": "Avblockera", "unblock": "Avblockera",
"unblock_user": "Avblockera %s", "unblock_user": "Avblockera %s",
"blocked": "Blockerad", "blocked": "Blockerad",
"domain_blocked": "Domain Blocked",
"mute": "Tysta", "mute": "Tysta",
"mute_user": "Tysta %s", "mute_user": "Tysta %s",
"unmute": "Avtysta", "unmute": "Avtysta",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Dölj boostar", "title": "Dölj boostar",
"message": "Bekräfta för att dölja boostar" "message": "Bekräfta för att dölja boostar"
},
"confirm_block_domain": {
"title": "Blockera domän",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -79,9 +79,9 @@
"see_more": "ดูเพิ่มเติม", "see_more": "ดูเพิ่มเติม",
"preview": "แสดงตัวอย่าง", "preview": "แสดงตัวอย่าง",
"copy": "คัดลอก", "copy": "คัดลอก",
"share": "แบ่งปัน", "share": "แชร์",
"share_user": "แบ่งปัน %s", "share_user": "แชร์ %s",
"share_post": "แบ่งปันโพสต์", "share_post": "แชร์โพสต์",
"open_in_safari": "เปิดใน Safari", "open_in_safari": "เปิดใน Safari",
"open_in_browser": "เปิดในเบราว์เซอร์", "open_in_browser": "เปิดในเบราว์เซอร์",
"find_people": "ค้นหาผู้คนที่จะติดตาม", "find_people": "ค้นหาผู้คนที่จะติดตาม",
@ -169,7 +169,7 @@
"show_image": "แสดงภาพ", "show_image": "แสดงภาพ",
"show_gif": "แสดง GIF", "show_gif": "แสดง GIF",
"show_video_player": "แสดงตัวเล่นวิดีโอ", "show_video_player": "แสดงตัวเล่นวิดีโอ",
"share_link_in_post": "แบ่งปันลิงก์ในโพสต์", "share_link_in_post": "แชร์ลิงก์ในโพสต์",
"tap_then_hold_to_show_menu": "แตะค้างไว้เพื่อแสดงเมนู", "tap_then_hold_to_show_menu": "แตะค้างไว้เพื่อแสดงเมนู",
"a11y_labels": { "a11y_labels": {
"reblog": "ดัน", "reblog": "ดัน",
@ -222,10 +222,11 @@
"pending": "รอดำเนินการ", "pending": "รอดำเนินการ",
"block": "ปิดกั้น", "block": "ปิดกั้น",
"block_user": "ปิดกั้น %s", "block_user": "ปิดกั้น %s",
"block_domain": "ปิดกั้น %s", "block_domain": "ปิดกั้นโดเมน %s",
"unblock": "เลิกปิดกั้น", "unblock": "เลิกปิดกั้น",
"unblock_user": "เลิกปิดกั้น %s", "unblock_user": "เลิกปิดกั้น %s",
"blocked": "ปิดกั้นอยู่", "blocked": "ปิดกั้นอยู่",
"domain_blocked": "ปิดกั้นโดเมนอยู่",
"mute": "ซ่อน", "mute": "ซ่อน",
"mute_user": "ซ่อน %s", "mute_user": "ซ่อน %s",
"unmute": "เลิกซ่อน", "unmute": "เลิกซ่อน",
@ -277,7 +278,7 @@
}, },
"servers": { "servers": {
"title": "เซิร์ฟเวอร์คืออะไร?", "title": "เซิร์ฟเวอร์คืออะไร?",
"description": "ทุกบัญชี Mastodon ได้รับการโฮสต์ในเซิร์ฟเวอร์ — แต่ละแห่งมีค่า, กฎ และผู้ดูแลของเซิร์ฟเวอร์เอง ไม่ว่าคุณจะเลือกเซิร์ฟเวอร์ใด คุณสามารถติดตามและโต้ตอบกับผู้คนในเซิร์ฟเวอร์ใด" "description": "ทุกบัญชี Mastodon จะถูกโฮสต์ในเซิร์ฟเวอร์ ซึ่งแต่ละแห่งมีค่านิยม, กฎ และผู้ดูแลของเซิร์ฟเวอร์เอง ไม่ว่าคุณจะเลือกเซิร์ฟเวอร์ใด คุณสามารถติดตามและโต้ตอบกับผู้คนในเซิร์ฟเวอร์ใดก็ได้"
}, },
"a11y": { "a11y": {
"what_is_mastodon": { "what_is_mastodon": {
@ -288,7 +289,7 @@
}, },
"login": { "login": {
"title": "ยินดีต้อนรับกลับมา", "title": "ยินดีต้อนรับกลับมา",
"subtitle": "นำคุณเข้าสู่ระบบในเซิร์ฟเวอร์ที่คุณได้สร้างบัญชีของคุณไว้ใน", "subtitle": "นำคุณเข้าสู่ระบบในเซิร์ฟเวอร์ที่คุณได้สร้างบัญชีของคุณไว้",
"server_search_field": { "server_search_field": {
"placeholder": "ป้อน URL หรือค้นหาสำหรับเซิร์ฟเวอร์ของคุณ" "placeholder": "ป้อน URL หรือค้นหาสำหรับเซิร์ฟเวอร์ของคุณ"
} }
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "ซ่อนการดัน", "title": "ซ่อนการดัน",
"message": "ยืนยันเพื่อซ่อนการดัน" "message": "ยืนยันเพื่อซ่อนการดัน"
},
"confirm_block_domain": {
"title": "ปิดกั้นโดเมน",
"message": "ยืนยันเพื่อปิดกั้นโดเมน %s"
},
"confirm_unblock_domain": {
"title": "เลิกปิดกั้นโดเมน",
"message": "ยืนยันเพื่อเลิกปิดกั้นโดเมน %s"
} }
}, },
"accessibility": { "accessibility": {
@ -825,7 +834,7 @@
"you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "คุณจะไม่เห็นโพสต์หรือการดันของเขาในฟีดหน้าแรกของคุณ เขาจะไม่ทราบว่ามีการซ่อนเขา", "you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "คุณจะไม่เห็นโพสต์หรือการดันของเขาในฟีดหน้าแรกของคุณ เขาจะไม่ทราบว่ามีการซ่อนเขา",
"block_user": "ปิดกั้น %s", "block_user": "ปิดกั้น %s",
"they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "เขาจะไม่สามารถติดตามหรือเห็นโพสต์ของคุณได้อีกต่อไป แต่เขาสามารถเห็นว่ามีการปิดกั้นเขาหรือไม่", "they_will_no_longer_be_able_to_follow_or_see_your_posts_but_they_can_see_if_theyve_been_blocked": "เขาจะไม่สามารถติดตามหรือเห็นโพสต์ของคุณได้อีกต่อไป แต่เขาสามารถเห็นว่ามีการปิดกั้นเขาหรือไม่",
"while_we_review_this_you_can_take_action_against_user": "ขณะที่เราตรวจทานสิ่งนี้ คุณสามารถดำเนินการกับ %s" "while_we_review_this_you_can_take_action_against_user": "ขณะที่เราตรวจทานสิ่งนี้ คุณสามารถใช้การกระทำต่อ %s"
} }
}, },
"preview": { "preview": {

View File

@ -222,10 +222,11 @@
"pending": "Bekliyor", "pending": "Bekliyor",
"block": "Engelle", "block": "Engelle",
"block_user": "%s kişisini engelle", "block_user": "%s kişisini engelle",
"block_domain": "%s kişisini engelle", "block_domain": "Block domain %s",
"unblock": "Engeli kaldır", "unblock": "Engeli kaldır",
"unblock_user": "%s kişisinin engelini kaldır", "unblock_user": "%s kişisinin engelini kaldır",
"blocked": "Engellendi", "blocked": "Engellendi",
"domain_blocked": "Domain Blocked",
"mute": "Sessize al", "mute": "Sessize al",
"mute_user": "Sustur %s", "mute_user": "Sustur %s",
"unmute": "Susturmayı kaldır", "unmute": "Susturmayı kaldır",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Yeniden Paylaşımları Gizle", "title": "Yeniden Paylaşımları Gizle",
"message": "Yeniden paylaşımları gizlemeyi onayla" "message": "Yeniden paylaşımları gizlemeyi onayla"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "Очікується", "pending": "Очікується",
"block": "Заблокувати", "block": "Заблокувати",
"block_user": "Блокувати %s", "block_user": "Блокувати %s",
"block_domain": "Блокувати %s", "block_domain": "Block domain %s",
"unblock": "Розблокувати", "unblock": "Розблокувати",
"unblock_user": "Розблокувати %s", "unblock_user": "Розблокувати %s",
"blocked": "Заблоковано", "blocked": "Заблоковано",
"domain_blocked": "Domain Blocked",
"mute": "Заглушити", "mute": "Заглушити",
"mute_user": "Заглушити %s", "mute_user": "Заглушити %s",
"unmute": "Сповіщати", "unmute": "Сповіщати",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Сховати реблоги", "title": "Сховати реблоги",
"message": "Підтвердити, щоб приховати реблоги" "message": "Підтвердити, щоб приховати реблоги"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -104,7 +104,7 @@
"unfollow": "Bỏ theo dõi %s" "unfollow": "Bỏ theo dõi %s"
}, },
"tabs": { "tabs": {
"home": "Trang chính", "home": "Trang ch",
"search_and_explore": "Tìm và Khám Phá", "search_and_explore": "Tìm và Khám Phá",
"notifications": "Thông báo", "notifications": "Thông báo",
"profile": "Trang hồ sơ", "profile": "Trang hồ sơ",
@ -226,6 +226,7 @@
"unblock": "Bỏ chặn", "unblock": "Bỏ chặn",
"unblock_user": "Bỏ chặn %s", "unblock_user": "Bỏ chặn %s",
"blocked": "Đã chặn", "blocked": "Đã chặn",
"domain_blocked": "Máy chủ chặn",
"mute": "Ẩn", "mute": "Ẩn",
"mute_user": "Ẩn %s", "mute_user": "Ẩn %s",
"unmute": "Bỏ ẩn", "unmute": "Bỏ ẩn",
@ -449,7 +450,7 @@
} }
}, },
"home_timeline": { "home_timeline": {
"title": "Trang chính", "title": "Trang ch",
"navigation_bar_state": { "navigation_bar_state": {
"offline": "Ngoại tuyến", "offline": "Ngoại tuyến",
"new_posts": "Đọc những tút mới", "new_posts": "Đọc những tút mới",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "Ẩn đăng lại", "title": "Ẩn đăng lại",
"message": "Xác nhận ẩn đăng lại" "message": "Xác nhận ẩn đăng lại"
},
"confirm_block_domain": {
"title": "Chặn máy chủ",
"message": "Bạn muốn chặn %s?"
},
"confirm_unblock_domain": {
"title": "Bỏ chặn máy chủ",
"message": "Bạn muốn bỏ chặn %s?"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -222,10 +222,11 @@
"pending": "待确认", "pending": "待确认",
"block": "屏蔽", "block": "屏蔽",
"block_user": "屏蔽 %s", "block_user": "屏蔽 %s",
"block_domain": "屏蔽 %s", "block_domain": "Block domain %s",
"unblock": "解除屏蔽", "unblock": "解除屏蔽",
"unblock_user": "解除屏蔽 %s", "unblock_user": "解除屏蔽 %s",
"blocked": "已屏蔽", "blocked": "已屏蔽",
"domain_blocked": "Domain Blocked",
"mute": "静音", "mute": "静音",
"mute_user": "静音 %s", "mute_user": "静音 %s",
"unmute": "取消静音", "unmute": "取消静音",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "隐藏转发", "title": "隐藏转发",
"message": "确认隐藏转发" "message": "确认隐藏转发"
},
"confirm_block_domain": {
"title": "Block domain",
"message": "Confirm to block domain %s"
},
"confirm_unblock_domain": {
"title": "Unblock domain",
"message": "Confirm to unblock domain %s"
} }
}, },
"accessibility": { "accessibility": {
@ -650,20 +659,20 @@
} }
}, },
"searching": { "searching": {
"posts": "Posts matching \"%s\"", "posts": "匹配 %s 的嘟文",
"people": "People matching \"%s\"", "people": "匹配 %s 的用户",
"profile": "Go to @%s@%s", "profile": "转到 @%s@%s",
"url": "Open URL in Mastodon", "url": "在 Mastodon 中打开 URL",
"hashtag": "Go to #%s", "hashtag": "转到 #%s",
"no_user": { "no_user": {
"title": "No User Account Found", "title": "找不到账户",
"message": "There's no Useraccount \"%s\" on %s" "message": "找不到用户 %s在服务器 %s 上)"
}, },
"empty_state": { "empty_state": {
"no_results": "无结果" "no_results": "无结果"
}, },
"recent_search": "最近搜索", "recent_search": "最近搜索",
"clear_all": "Clear all", "clear_all": "清除",
"clear": "清除" "clear": "清除"
} }
}, },
@ -710,66 +719,66 @@
}, },
"settings": { "settings": {
"overview": { "overview": {
"title": "Settings", "title": "设置",
"general": "General", "general": "通用",
"notifications": "Notifications", "notifications": "通知",
"support_mastodon": "Support Mastodon", "support_mastodon": "支持 Mastodon",
"about_mastodon": "About Mastodon", "about_mastodon": "关于 Mastodon",
"server_details": "Server Details", "server_details": "服务器详情",
"logout": "Logout %@" "logout": "登出 %@"
}, },
"about_mastodon": { "about_mastodon": {
"title": "About", "title": "关于",
"more_settings": "Even More Settings", "more_settings": "更多设置",
"contribute_to_mastodon": "Contribute to Mastodon", "contribute_to_mastodon": "贡献给Mastodon",
"privacy_policy": "Privacy Policy", "privacy_policy": "隐私政策",
"clear_media_storage": "Clear Media Storage" "clear_media_storage": "清楚媒体缓存"
}, },
"server_details": { "server_details": {
"about": "About", "about": "关于",
"rules": "Rules", "rules": "规则",
"about_instance": { "about_instance": {
"title": "Administrator", "title": "管理员",
"message_admin": "Message Admin", "message_admin": "联系管理员",
"legal_notice": "A legal notice" "legal_notice": "法律声明"
} }
}, },
"general": { "general": {
"title": "General", "title": "通用",
"appearance": { "appearance": {
"section_title": "Appearance", "section_title": "外观",
"dark": "Dark", "dark": "深色",
"light": "Light", "light": "浅色",
"system": "Use Device Appearance" "system": "跟随系统"
}, },
"design": { "design": {
"section_title": "Design", "section_title": "设计",
"show_animations": "Play Animated Avatars and Emoji" "show_animations": "播放动态头像和表情"
}, },
"links": { "links": {
"section_title": "Links", "section_title": "链接",
"open_in_mastodon": "Open in Mastodon", "open_in_mastodon": "在 Mastodon 中打开",
"open_in_browser": "Open in Browser" "open_in_browser": "在浏览器中打开"
} }
}, },
"notifications": { "notifications": {
"title": "Notifications", "title": "通知",
"policy": { "policy": {
"title": "Get Notifications from", "title": "通知接收范围",
"anyone": "Anyone", "anyone": "任何人",
"followers": "People who follow you", "followers": "关注你的人",
"follow": "People you follow", "follow": "你关注的人",
"noone": "No one" "noone": "关闭通知"
}, },
"alert": { "alert": {
"mentions_and_replies": "Mentions & Replies", "mentions_and_replies": "提及与回复",
"boosts": "Boosts", "boosts": "转嘟",
"favorites": "Favorites", "favorites": "喜欢",
"new_followers": "New Followers" "new_followers": "新关注者"
}, },
"disabled": { "disabled": {
"notification_hint": "Turn on notifications from your device settings to see updates on your lock screen.", "notification_hint": "在系统设置中打开通知来随时获取新动态。",
"go_to_settings": "Go to Notification Settings" "go_to_settings": "转到通知设置"
} }
} }
}, },

View File

@ -222,10 +222,11 @@
"pending": "等待中", "pending": "等待中",
"block": "封鎖", "block": "封鎖",
"block_user": "封鎖 %s", "block_user": "封鎖 %s",
"block_domain": "封鎖 %s", "block_domain": "封鎖網域 %s",
"unblock": "解除封鎖", "unblock": "解除封鎖",
"unblock_user": "解除封鎖 %s", "unblock_user": "解除封鎖 %s",
"blocked": "已封鎖", "blocked": "已封鎖",
"domain_blocked": "已封鎖網域",
"mute": "靜音", "mute": "靜音",
"mute_user": "靜音 %s", "mute_user": "靜音 %s",
"unmute": "取消靜音", "unmute": "取消靜音",
@ -603,6 +604,14 @@
"confirm_hide_reblogs": { "confirm_hide_reblogs": {
"title": "隱藏轉嘟", "title": "隱藏轉嘟",
"message": "確認隱藏轉嘟" "message": "確認隱藏轉嘟"
},
"confirm_block_domain": {
"title": "封鎖網域",
"message": "確認將網域 %s 封鎖"
},
"confirm_unblock_domain": {
"title": "解除封鎖網域",
"message": "確認將網域 %s 解除封鎖"
} }
}, },
"accessibility": { "accessibility": {

View File

@ -29,6 +29,7 @@
2A3D9B7E29A8F33A00F30313 /* StatusHistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3D9B7D29A8F33A00F30313 /* StatusHistoryView.swift */; }; 2A3D9B7E29A8F33A00F30313 /* StatusHistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3D9B7D29A8F33A00F30313 /* StatusHistoryView.swift */; };
2A3F6FE3292ECB5E002E6DA7 /* FollowedTagsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3F6FE2292ECB5E002E6DA7 /* FollowedTagsViewModel.swift */; }; 2A3F6FE3292ECB5E002E6DA7 /* FollowedTagsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3F6FE2292ECB5E002E6DA7 /* FollowedTagsViewModel.swift */; };
2A3F6FE5292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3F6FE4292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift */; }; 2A3F6FE5292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3F6FE4292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift */; };
2A409F832B5955290044E472 /* MastodonStatusThreadViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A409F822B5955290044E472 /* MastodonStatusThreadViewModel+State.swift */; };
2A506CF4292CD85800059C37 /* FollowedTagsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A506CF3292CD85800059C37 /* FollowedTagsViewController.swift */; }; 2A506CF4292CD85800059C37 /* FollowedTagsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A506CF3292CD85800059C37 /* FollowedTagsViewController.swift */; };
2A506CF6292D040100059C37 /* HashtagTimelineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A506CF5292D040100059C37 /* HashtagTimelineHeaderView.swift */; }; 2A506CF6292D040100059C37 /* HashtagTimelineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A506CF5292D040100059C37 /* HashtagTimelineHeaderView.swift */; };
2A64515E29642A8A00CD8B8A /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */; }; 2A64515E29642A8A00CD8B8A /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */; };
@ -638,6 +639,7 @@
2A3D9B7D29A8F33A00F30313 /* StatusHistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusHistoryView.swift; sourceTree = "<group>"; }; 2A3D9B7D29A8F33A00F30313 /* StatusHistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusHistoryView.swift; sourceTree = "<group>"; };
2A3F6FE2292ECB5E002E6DA7 /* FollowedTagsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsViewModel.swift; sourceTree = "<group>"; }; 2A3F6FE2292ECB5E002E6DA7 /* FollowedTagsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsViewModel.swift; sourceTree = "<group>"; };
2A3F6FE4292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsTableViewCell.swift; sourceTree = "<group>"; }; 2A3F6FE4292F6E44002E6DA7 /* FollowedTagsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsTableViewCell.swift; sourceTree = "<group>"; };
2A409F822B5955290044E472 /* MastodonStatusThreadViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonStatusThreadViewModel+State.swift"; sourceTree = "<group>"; };
2A506CF3292CD85800059C37 /* FollowedTagsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsViewController.swift; sourceTree = "<group>"; }; 2A506CF3292CD85800059C37 /* FollowedTagsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowedTagsViewController.swift; sourceTree = "<group>"; };
2A506CF5292D040100059C37 /* HashtagTimelineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineHeaderView.swift; sourceTree = "<group>"; }; 2A506CF5292D040100059C37 /* HashtagTimelineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineHeaderView.swift; sourceTree = "<group>"; };
2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; }; 2A6451022964223800CD8B8A /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; };
@ -2671,6 +2673,7 @@
DB938F0E2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift */, DB938F0E2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift */,
DB938F0826240F3C00E5B6C1 /* RemoteThreadViewModel.swift */, DB938F0826240F3C00E5B6C1 /* RemoteThreadViewModel.swift */,
DB0FCB7F27968F70006C02E2 /* MastodonStatusThreadViewModel.swift */, DB0FCB7F27968F70006C02E2 /* MastodonStatusThreadViewModel.swift */,
2A409F822B5955290044E472 /* MastodonStatusThreadViewModel+State.swift */,
); );
path = Thread; path = Thread;
sourceTree = "<group>"; sourceTree = "<group>";
@ -3994,6 +3997,7 @@
0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */, 0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */,
DB0FCB882796BDA9006C02E2 /* SearchItem.swift in Sources */, DB0FCB882796BDA9006C02E2 /* SearchItem.swift in Sources */,
DB6180ED26391C6C0018D199 /* TransitioningMath.swift in Sources */, DB6180ED26391C6C0018D199 /* TransitioningMath.swift in Sources */,
2A409F832B5955290044E472 /* MastodonStatusThreadViewModel+State.swift in Sources */,
2D6DE40026141DF600A63F6A /* SearchViewModel.swift in Sources */, 2D6DE40026141DF600A63F6A /* SearchViewModel.swift in Sources */,
D886FBD329DF710F00272017 /* WelcomeSeparatorView.swift in Sources */, D886FBD329DF710F00272017 /* WelcomeSeparatorView.swift in Sources */,
DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */, DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */,

View File

@ -26,6 +26,7 @@ extension StatusItem {
case leaf(context: Context) case leaf(context: Context)
public var record: MastodonStatus { public var record: MastodonStatus {
get {
switch self { switch self {
case .root(let threadContext), case .root(let threadContext),
.reply(let threadContext), .reply(let threadContext),
@ -33,6 +34,33 @@ extension StatusItem {
return threadContext.status return threadContext.status
} }
} }
set {
switch self {
case let .root(threadContext):
self = .root(context: .init(
status: newValue,
displayUpperConversationLink: threadContext.displayUpperConversationLink,
displayBottomConversationLink: threadContext.displayBottomConversationLink)
)
case let .reply(threadContext):
self = .reply(context: .init(
status: newValue,
displayUpperConversationLink: threadContext.displayUpperConversationLink,
displayBottomConversationLink: threadContext.displayBottomConversationLink)
)
case let .leaf(threadContext):
self = .leaf(context: .init(
status: newValue,
displayUpperConversationLink: threadContext.displayUpperConversationLink,
displayBottomConversationLink: threadContext.displayBottomConversationLink)
)
}
}
}
} }
} }

View File

@ -12,12 +12,13 @@ import MastodonCore
import MastodonSDK import MastodonSDK
extension DataSourceFacade { extension DataSourceFacade {
@MainActor
public static func responseToStatusBookmarkAction( public static func responseToStatusBookmarkAction(
provider: NeedsDependency & AuthContextProvider & DataSourceProvider, provider: NeedsDependency & AuthContextProvider & DataSourceProvider,
status: MastodonStatus status: MastodonStatus
) async throws { ) async throws {
let selectionFeedbackGenerator = await UISelectionFeedbackGenerator() let selectionFeedbackGenerator = UISelectionFeedbackGenerator()
await selectionFeedbackGenerator.selectionChanged() selectionFeedbackGenerator.selectionChanged()
let updatedStatus = try await provider.context.apiService.bookmark( let updatedStatus = try await provider.context.apiService.bookmark(
record: status, record: status,
@ -27,6 +28,6 @@ extension DataSourceFacade {
let newStatus: MastodonStatus = .fromEntity(updatedStatus) let newStatus: MastodonStatus = .fromEntity(updatedStatus)
newStatus.isSensitiveToggled = status.isSensitiveToggled newStatus.isSensitiveToggled = status.isSensitiveToggled
provider.update(status: newStatus) provider.update(status: newStatus, intent: .bookmark(updatedStatus.bookmarked == true))
} }
} }

View File

@ -11,12 +11,13 @@ import MastodonSDK
import MastodonCore import MastodonCore
extension DataSourceFacade { extension DataSourceFacade {
@MainActor
public static func responseToStatusFavoriteAction( public static func responseToStatusFavoriteAction(
provider: DataSourceProvider & AuthContextProvider, provider: DataSourceProvider & AuthContextProvider,
status: MastodonStatus status: MastodonStatus
) async throws { ) async throws {
let selectionFeedbackGenerator = await UISelectionFeedbackGenerator() let selectionFeedbackGenerator = UISelectionFeedbackGenerator()
await selectionFeedbackGenerator.selectionChanged() selectionFeedbackGenerator.selectionChanged()
let updatedStatus = try await provider.context.apiService.favorite( let updatedStatus = try await provider.context.apiService.favorite(
status: status, status: status,
@ -26,6 +27,6 @@ extension DataSourceFacade {
let newStatus: MastodonStatus = .fromEntity(updatedStatus) let newStatus: MastodonStatus = .fromEntity(updatedStatus)
newStatus.isSensitiveToggled = status.isSensitiveToggled newStatus.isSensitiveToggled = status.isSensitiveToggled
provider.update(status: newStatus) provider.update(status: newStatus, intent: .favorite(updatedStatus.favourited == true))
} }
} }

View File

@ -11,12 +11,13 @@ import MastodonUI
import MastodonSDK import MastodonSDK
extension DataSourceFacade { extension DataSourceFacade {
@MainActor
static func responseToStatusReblogAction( static func responseToStatusReblogAction(
provider: DataSourceProvider & AuthContextProvider, provider: DataSourceProvider & AuthContextProvider,
status: MastodonStatus status: MastodonStatus
) async throws { ) async throws {
let selectionFeedbackGenerator = await UISelectionFeedbackGenerator() let selectionFeedbackGenerator = UISelectionFeedbackGenerator()
await selectionFeedbackGenerator.selectionChanged() selectionFeedbackGenerator.selectionChanged()
let updatedStatus = try await provider.context.apiService.reblog( let updatedStatus = try await provider.context.apiService.reblog(
status: status, status: status,
@ -27,6 +28,6 @@ extension DataSourceFacade {
newStatus.reblog?.isSensitiveToggled = status.isSensitiveToggled newStatus.reblog?.isSensitiveToggled = status.isSensitiveToggled
newStatus.isSensitiveToggled = status.isSensitiveToggled newStatus.isSensitiveToggled = status.isSensitiveToggled
provider.update(status: newStatus) provider.update(status: newStatus, intent: .reblog(updatedStatus.reblogged == true))
} }
} }

View File

@ -28,7 +28,7 @@ extension DataSourceFacade {
authenticationBox: dependency.authContext.mastodonAuthenticationBox authenticationBox: dependency.authContext.mastodonAuthenticationBox
).value.asMastodonStatus ).value.asMastodonStatus
dependency.delete(status: deletedStatus) dependency.update(status: deletedStatus, intent: .delete)
} }
} }
@ -375,7 +375,7 @@ extension DataSourceFacade {
if context.isBlocking { if context.isBlocking {
title = L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.title title = L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.title
message = L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.message(context.domain) message = L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.message(context.domain)
actionTitle = L10n.Common.Controls.Friendship.unblockDomain(context.domain) actionTitle = L10n.Common.Controls.Actions.unblockDomain(context.domain)
} else { } else {
title = L10n.Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.title title = L10n.Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.title
message = L10n.Common.Alerts.BlockDomain.title(context.domain) message = L10n.Common.Alerts.BlockDomain.title(context.domain)
@ -406,7 +406,7 @@ extension DataSourceFacade {
} }
extension DataSourceFacade { extension DataSourceFacade {
@MainActor
static func responseToToggleSensitiveAction( static func responseToToggleSensitiveAction(
dependency: NeedsDependency & DataSourceProvider, dependency: NeedsDependency & DataSourceProvider,
status: MastodonStatus status: MastodonStatus
@ -416,7 +416,7 @@ extension DataSourceFacade {
let newStatus: MastodonStatus = .fromEntity(_status.entity) let newStatus: MastodonStatus = .fromEntity(_status.entity)
newStatus.isSensitiveToggled = !_status.isSensitiveToggled newStatus.isSensitiveToggled = !_status.isSensitiveToggled
dependency.update(status: newStatus) dependency.update(status: newStatus, intent: .toggleSensitive(newStatus.isSensitiveToggled))
} }
} }

View File

@ -98,6 +98,7 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider & Aut
// MARK: - Follow Request // MARK: - Follow Request
extension NotificationTableViewCellDelegate where Self: DataSourceProvider & AuthContextProvider { extension NotificationTableViewCellDelegate where Self: DataSourceProvider & AuthContextProvider {
@MainActor
func tableViewCell( func tableViewCell(
_ cell: UITableViewCell, _ cell: UITableViewCell,
notificationView: NotificationView, notificationView: NotificationView,
@ -114,6 +115,7 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider & Aut
return return
} }
try await DataSourceFacade.responseToUserFollowRequestAction( try await DataSourceFacade.responseToUserFollowRequestAction(
dependency: self, dependency: self,
notification: notification, notification: notification,
@ -123,6 +125,7 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider & Aut
} }
} }
@MainActor
func tableViewCell( func tableViewCell(
_ cell: UITableViewCell, _ cell: UITableViewCell,
notificationView: NotificationView, notificationView: NotificationView,
@ -147,7 +150,6 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider & Aut
) )
} }
} }
} }
// MARK: - Status Content // MARK: - Status Content

View File

@ -37,6 +37,5 @@ extension DataSourceItem {
protocol DataSourceProvider: ViewControllerWithDependencies { protocol DataSourceProvider: ViewControllerWithDependencies {
func item(from source: DataSourceItem.Source) async -> DataSourceItem? func item(from source: DataSourceItem.Source) async -> DataSourceItem?
func update(status: MastodonStatus) func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent)
func delete(status: MastodonStatus)
} }

View File

@ -1,4 +1,4 @@
"NSCameraUsageDescription" = "Used to take photo for post status"; "NSCameraUsageDescription" = "Used to take photo for post status";
"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library"; "NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library";
"NewPostShortcutItemTitle" = "New Post"; "NewPostShortcutItemTitle" = "Նոր գրառում";
"SearchShortcutItemTitle" = "Search"; "SearchShortcutItemTitle" = "Որոնել";

View File

@ -28,14 +28,8 @@ extension DiscoveryCommunityViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.setRecords(
viewModel.dataController.records.filter { $0.id != status.id }
)
} }
@MainActor @MainActor

View File

@ -28,14 +28,8 @@ extension DiscoveryPostsViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.setRecords(
viewModel.dataController.records.filter { $0.id != status.id }
)
} }
@MainActor @MainActor

View File

@ -28,12 +28,8 @@ extension HashtagTimelineViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.deleteRecord(status)
} }
@MainActor @MainActor

View File

@ -33,12 +33,8 @@ extension HomeTimelineViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.records = viewModel.dataController.records.filter { $0.id != status.id }
} }
@MainActor @MainActor

View File

@ -168,9 +168,10 @@ extension HomeTimelineViewController {
} }
.store(in: &disposeBag) .store(in: &disposeBag)
context.publisherService.statusPublishResult.sink { result in context.publisherService.statusPublishResult.receive(on: DispatchQueue.main).sink { result in
if case .success(.edit) = result { if case .success(.edit(let status)) = result {
self.viewModel.hasPendingStatusEditReload = true self.viewModel.hasPendingStatusEditReload = true
self.viewModel.dataController.update(status: .fromEntity(status.value), intent: .edit)
} }
}.store(in: &disposeBag) }.store(in: &disposeBag)

View File

@ -88,7 +88,7 @@ extension HomeTimelineViewModel.LoadLatestState {
Task { Task {
let latestStatusIDs: [Status.ID] = latestFeedRecords.compactMap { record in let latestStatusIDs: [Status.ID] = latestFeedRecords.compactMap { record in
return record.status?.id return record.status?.reblog?.id ?? record.status?.id
} }
do { do {
@ -104,7 +104,7 @@ extension HomeTimelineViewModel.LoadLatestState {
// stop refresher if no new statuses // stop refresher if no new statuses
let statuses = response.value let statuses = response.value
let newStatuses = statuses.filter { !latestStatusIDs.contains($0.id) } let newStatuses = statuses.filter { status in !latestStatusIDs.contains(where: { $0 == status.reblog?.id || $0 == status.id }) }
if newStatuses.isEmpty { if newStatuses.isEmpty {
viewModel.didLoadLatest.send() viewModel.didLoadLatest.send()
@ -113,10 +113,10 @@ extension HomeTimelineViewModel.LoadLatestState {
viewModel.homeTimelineNavigationBarTitleViewModel.newPostsIncoming() viewModel.homeTimelineNavigationBarTitleViewModel.newPostsIncoming()
} }
viewModel.dataController.records = {
var newRecords: [MastodonFeed] = newStatuses.map { var newRecords: [MastodonFeed] = newStatuses.map {
MastodonFeed.fromStatus(.fromEntity($0), kind: .home) MastodonFeed.fromStatus(.fromEntity($0), kind: .home)
} }
viewModel.dataController.records = {
var oldRecords = viewModel.dataController.records var oldRecords = viewModel.dataController.records
for (i, record) in newRecords.enumerated() { for (i, record) in newRecords.enumerated() {
if let index = oldRecords.firstIndex(where: { $0.status?.reblog?.id == record.id || $0.status?.id == record.id }) { if let index = oldRecords.firstIndex(where: { $0.status?.reblog?.id == record.id || $0.status?.id == record.id }) {

View File

@ -39,12 +39,10 @@ extension NotificationTimelineViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) Task {
await viewModel.loadLatest()
} }
func delete(status: MastodonStatus) {
viewModel.dataController.delete(status: status)
} }
@MainActor @MainActor

View File

@ -44,7 +44,7 @@ extension NotificationTimelineViewModel {
} }
var snapshot = NSDiffableDataSourceSnapshot<NotificationSection, NotificationItem>() var snapshot = NSDiffableDataSourceSnapshot<NotificationSection, NotificationItem>()
snapshot.appendSections([.main]) snapshot.appendSections([.main])
snapshot.appendItems(newItems, toSection: .main) snapshot.appendItems(newItems.removingDuplicates(), toSection: .main)
return snapshot return snapshot
}() }()

View File

@ -28,14 +28,8 @@ extension BookmarkViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.setRecords(
viewModel.dataController.records.filter { $0.id != status.id }
)
} }
@MainActor @MainActor

View File

@ -103,11 +103,7 @@ extension FamiliarFollowersViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required")
}
func delete(status: MastodonStatus) {
assertionFailure("Not required") assertionFailure("Not required")
} }

View File

@ -28,14 +28,8 @@ extension FavoriteViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.setRecords(
viewModel.dataController.records.filter { $0.id != status.id }
)
} }
@MainActor @MainActor

View File

@ -154,11 +154,7 @@ extension FollowerListViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required")
}
func delete(status: MastodonStatus) {
assertionFailure("Not required") assertionFailure("Not required")
} }

View File

@ -150,11 +150,7 @@ extension FollowingListViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required")
}
func delete(status: MastodonStatus) {
assertionFailure("Not required") assertionFailure("Not required")
} }

View File

@ -256,6 +256,12 @@ extension ProfileViewController {
} }
.store(in: &disposeBag) .store(in: &disposeBag)
context.publisherService.statusPublishResult.sink { [weak self] result in
if case .success(.edit(let status)) = result {
self?.updateViewModelsWithDataControllers(status: .fromEntity(status.value), intent: .edit)
}
}.store(in: &disposeBag)
addChild(tabBarPagerController) addChild(tabBarPagerController)
tabBarPagerController.view.translatesAutoresizingMaskIntoConstraints = false tabBarPagerController.view.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tabBarPagerController.view) view.addSubview(tabBarPagerController.view)
@ -800,7 +806,7 @@ extension ProfileViewController: ProfileHeaderViewControllerDelegate {
preferredStyle: .alert preferredStyle: .alert
) )
let unblockAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unblockDomain(domain), style: .default) { [weak self] _ in let unblockAction = UIAlertAction(title: L10n.Common.Controls.Actions.unblockDomain(domain), style: .default) { [weak self] _ in
guard let self else { return } guard let self else { return }
Task { Task {
_ = try await DataSourceFacade.responseToDomainBlockAction( _ = try await DataSourceFacade.responseToDomainBlockAction(
@ -973,11 +979,13 @@ extension ProfileViewController: DataSourceProvider {
return nil return nil
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required") updateViewModelsWithDataControllers(status: status, intent: intent)
} }
func delete(status: MastodonStatus) { func updateViewModelsWithDataControllers(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required") viewModel.postsUserTimelineViewModel.dataController.update(status: status, intent: intent)
viewModel.repliesUserTimelineViewModel.dataController.update(status: status, intent: intent)
viewModel.mediaUserTimelineViewModel.dataController.update(status: status, intent: intent)
} }
} }

View File

@ -28,12 +28,8 @@ extension UserTimelineViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.deleteRecord(status)
} }
@MainActor @MainActor

View File

@ -28,11 +28,7 @@ extension FavoritedByViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required")
}
func delete(status: MastodonStatus) {
assertionFailure("Not required") assertionFailure("Not required")
} }

View File

@ -29,11 +29,7 @@ extension RebloggedByViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required")
}
func delete(status: MastodonStatus) {
assertionFailure("Not required") assertionFailure("Not required")
} }

View File

@ -29,11 +29,7 @@ extension SearchHistoryViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
assertionFailure("Not required")
}
func delete(status: MastodonStatus) {
assertionFailure("Not required") assertionFailure("Not required")
} }

View File

@ -33,12 +33,8 @@ extension SearchResultViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
viewModel.dataController.update(status: status) viewModel.dataController.update(status: status, intent: intent)
}
func delete(status: MastodonStatus) {
viewModel.dataController.deleteRecord(status)
} }
@MainActor @MainActor

View File

@ -14,7 +14,7 @@ final class ListBatchFetchViewModel {
var disposeBag = Set<AnyCancellable>() var disposeBag = Set<AnyCancellable>()
// timer running on `common` mode // timer running on `common` mode
let timerPublisher = Timer.publish(every: 1.0, on: .main, in: .common) let timerPublisher = Timer.publish(every: 30.0, on: .main, in: .common)
.autoconnect() .autoconnect()
.share() .share()
.eraseToAnyPublisher() .eraseToAnyPublisher()

View File

@ -0,0 +1,165 @@
// Copyright © 2024 Mastodon gGmbH. All rights reserved.
import Foundation
import MastodonSDK
extension MastodonStatusThreadViewModel {
// Bookmark
func handleBookmark(_ status: MastodonStatus) {
ancestors = handleBookmark(status, items: ancestors)
descendants = handleBookmark(status, items: descendants)
}
private func handleBookmark(_ status: MastodonStatus, items: [StatusItem]) -> [StatusItem] {
var newRecords = Array(items)
guard let index = newRecords.firstIndex(where: { $0.mastodonStatus?.id == status.id }) else {
return items
}
var newRecord = newRecords[index]
newRecord.mastodonStatus = status
newRecords[index] = newRecord
return newRecords
}
// Favorite
func handleFavorite(_ status: MastodonStatus) {
ancestors = handleFavorite(status, items: ancestors)
descendants = handleFavorite(status, items: descendants)
}
private func handleFavorite(_ status: MastodonStatus, items: [StatusItem]) -> [StatusItem] {
var newRecords = Array(items)
guard let index = newRecords.firstIndex(where: { $0.mastodonStatus?.id == status.id }) else {
return items
}
var newRecord = newRecords[index]
newRecord.mastodonStatus = status
newRecords[index] = newRecord
return newRecords
}
// Reblog
func handleReblog(_ status: MastodonStatus, _ isReblogged: Bool) {
ancestors = handleReblog(status, isReblogged, items: ancestors)
descendants = handleReblog(status, isReblogged, items: descendants)
}
private func handleReblog(_ status: MastodonStatus, _ isReblogged: Bool, items: [StatusItem]) -> [StatusItem] {
var newRecords = Array(items)
switch isReblogged {
case true:
let index: Int
if let idx = newRecords.firstIndex(where: { $0.mastodonStatus?.reblog?.id == status.reblog?.id }) {
index = idx
} else if let idx = newRecords.firstIndex(where: { $0.mastodonStatus?.id == status.reblog?.id }) {
index = idx
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return newRecords
}
var newRecord = newRecords[index]
newRecord.mastodonStatus = status.inheritSensitivityToggled(from: newRecord.mastodonStatus)
newRecords[index] = newRecord
case false:
let index: Int
if let idx = newRecords.firstIndex(where: { $0.mastodonStatus?.reblog?.id == status.id }) {
index = idx
} else if let idx = newRecords.firstIndex(where: { $0.mastodonStatus?.id == status.id }) {
index = idx
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return newRecords
}
var newRecord = newRecords[index]
newRecord.mastodonStatus = status.inheritSensitivityToggled(from: newRecord.mastodonStatus)
newRecords[index] = newRecord
}
return newRecords
}
// Sensitive
func handleSensitive(_ status: MastodonStatus, _ isVisible: Bool) {
ancestors = handleSensitive(status, isVisible, ancestors)
descendants = handleSensitive(status, isVisible, descendants)
}
private func handleSensitive(_ status: MastodonStatus, _ isVisible: Bool, _ items: [StatusItem]) -> [StatusItem] {
var newRecords = Array(items)
guard let index = newRecords.firstIndex(where: { $0.mastodonStatus?.id == status.id }) else {
return items
}
var newRecord = newRecords[index]
newRecord.mastodonStatus = status
newRecords[index] = newRecord
return newRecords
}
// Edit
func handleEdit(_ status: MastodonStatus) {
ancestors = handleEdit(status, items: ancestors)
descendants = handleEdit(status, items: descendants)
}
private func handleEdit(_ status: MastodonStatus, items: [StatusItem]) -> [StatusItem] {
var newRecords = Array(items)
guard let index = newRecords.firstIndex(where: { $0.mastodonStatus?.id == status.id }) else {
return items
}
var newRecord = newRecords[index]
newRecord.mastodonStatus = status
newRecords[index] = newRecord
return newRecords
}
// Delete
func handleDelete(_ status: MastodonStatus) {
ancestors = handleDelete(status, ancestors)
descendants = handleDelete(status, descendants)
}
private func handleDelete(_ status: MastodonStatus, _ items: [StatusItem]) -> [StatusItem] {
var newRecords = Array(items)
newRecords.removeAll(where: { $0.mastodonStatus?.id == status.id })
return newRecords
}
}
private extension StatusItem {
var mastodonStatus: MastodonStatus? {
get {
switch self {
case .feed(let record):
return record.status
case .feedLoader(let record):
return record.status
case .status(let record):
return record
case .thread(let thread):
return thread.record
case .topLoader, .bottomLoader:
return nil
}
}
set {
guard let status = newValue else { return }
switch self {
case .feed(let record):
self = .feed(record: .fromStatus(status, kind: record.kind))
case .feedLoader(let record):
self = .feedLoader(record: .fromStatus(status, kind: record.kind))
case .status:
self = .status(record: status)
case let .thread(thread):
var newThread = thread
newThread.record = status
self = .thread(newThread)
case .topLoader, .bottomLoader:
break
}
}
}
}

View File

@ -13,8 +13,11 @@ import CoreDataStack
import MastodonSDK import MastodonSDK
import MastodonCore import MastodonCore
import MastodonMeta import MastodonMeta
import os.log
final class MastodonStatusThreadViewModel { final class MastodonStatusThreadViewModel {
let logger = Logger(subsystem: "MastodonStatusThreadViewModel", category: "Data")
static let entryNotFoundMessage = "Failed to find suitable record. Depending on the context this might result in errors (data not being updated) or can be discarded (e.g. when there are mixed data sources where an entry might or might not exist)."
var disposeBag = Set<AnyCancellable>() var disposeBag = Set<AnyCancellable>()

View File

@ -29,121 +29,63 @@ extension ThreadViewController: DataSourceProvider {
} }
} }
func update(status: MastodonStatus) { func update(status _status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
let status = _status.reblog ?? _status
if case MastodonStatus.UpdateIntent.delete = intent {
return handleDelete(status)
}
switch viewModel.root { switch viewModel.root {
case let .root(context): case let .root(context):
if context.status.id == status.id { if context.status.id == status.id {
viewModel.root = .root(context: .init(status: status)) viewModel.root = .root(context: .init(status: status))
} else { } else {
handle(status: status) handleUpdate(status: status, viewModel: viewModel.mastodonStatusThreadViewModel, intent: intent)
} }
case let .reply(context): case let .reply(context):
if context.status.id == status.id { if context.status.id == status.id {
viewModel.root = .reply(context: .init(status: status)) viewModel.root = .reply(context: .init(status: status))
} else { } else {
handle(status: status) handleUpdate(status: status, viewModel: viewModel.mastodonStatusThreadViewModel, intent: intent)
} }
case let .leaf(context): case let .leaf(context):
if context.status.id == status.id { if context.status.id == status.id {
viewModel.root = .leaf(context: .init(status: status)) viewModel.root = .leaf(context: .init(status: status))
} else { } else {
handle(status: status) handleUpdate(status: status, viewModel: viewModel.mastodonStatusThreadViewModel, intent: intent)
} }
case .none: case .none:
assertionFailure("This should not have happened") assertionFailure("This should not have happened")
} }
} }
private func handle(status: MastodonStatus) { private func handleDelete(_ status: MastodonStatus) {
viewModel.mastodonStatusThreadViewModel.ancestors.handleUpdate(status: status, for: viewModel)
viewModel.mastodonStatusThreadViewModel.descendants.handleUpdate(status: status, for: viewModel)
}
func delete(status: MastodonStatus) {
if viewModel.root?.record.id == status.id { if viewModel.root?.record.id == status.id {
viewModel.root = nil viewModel.root = nil
viewModel.onDismiss.send(status) viewModel.onDismiss.send(status)
} }
viewModel.mastodonStatusThreadViewModel.ancestors.handleDelete(status: status, for: viewModel) viewModel.mastodonStatusThreadViewModel.handleDelete(status)
viewModel.mastodonStatusThreadViewModel.descendants.handleDelete(status: status, for: viewModel)
} }
@MainActor @MainActor
private func indexPath(for cell: UITableViewCell) async -> IndexPath? { private func indexPath(for cell: UITableViewCell) async -> IndexPath? {
return tableView.indexPath(for: cell) return tableView.indexPath(for: cell)
} }
}
private extension [StatusItem] { private func handleUpdate(status: MastodonStatus, viewModel: MastodonStatusThreadViewModel, intent: MastodonStatus.UpdateIntent) {
mutating func handleUpdate(status: MastodonStatus, for viewModel: ThreadViewModel) { switch intent {
for (index, ancestor) in enumerated() { case .bookmark:
switch ancestor { viewModel.handleBookmark(status)
case let .feed(record): case let .reblog(isReblogged):
if record.status?.id == status.id { viewModel.handleReblog(status, isReblogged)
self[index] = .feed(record: .fromStatus(status, kind: record.kind)) case .favorite:
} viewModel.handleFavorite(status)
case let.feedLoader(record): case let .toggleSensitive(isVisible):
if record.status?.id == status.id { viewModel.handleSensitive(status, isVisible)
self[index] = .feedLoader(record: .fromStatus(status, kind: record.kind)) case .edit:
} viewModel.handleEdit(status)
case let .status(record): case .delete:
if record.id == status.id { break // this case has already been handled
self[index] = .status(record: status)
}
case let .thread(thread):
switch thread {
case let .root(context):
if context.status.id == status.id {
self[index] = .thread(.root(context: .init(status: status)))
}
case let .reply(context):
if context.status.id == status.id {
self[index] = .thread(.reply(context: .init(status: status)))
}
case let .leaf(context):
if context.status.id == status.id {
self[index] = .thread(.leaf(context: .init(status: status)))
}
}
case .bottomLoader, .topLoader:
break
}
}
}
mutating func handleDelete(status: MastodonStatus, for viewModel: ThreadViewModel) {
for (index, ancestor) in enumerated() {
switch ancestor {
case let .feed(record):
if record.status?.id == status.id {
self.remove(at: index)
}
case let.feedLoader(record):
if record.status?.id == status.id {
self.remove(at: index)
}
case let .status(record):
if record.id == status.id {
self.remove(at: index)
}
case let .thread(thread):
switch thread {
case let .root(context):
if context.status.id == status.id {
self.remove(at: index)
}
case let .reply(context):
if context.status.id == status.id {
self.remove(at: index)
}
case let .leaf(context):
if context.status.id == status.id {
self.remove(at: index)
}
}
case .bottomLoader, .topLoader:
break
}
} }
} }
} }

View File

@ -82,7 +82,7 @@ extension ThreadViewController {
viewModel.onEdit viewModel.onEdit
.receive(on: DispatchQueue.main) .receive(on: DispatchQueue.main)
.sink(receiveValue: { [weak self] status in .sink(receiveValue: { [weak self] status in
self?.navigationController?.notifyChildrenAboutStatusUpdate(status) self?.navigationController?.notifyChildrenAboutStatusEdit(status)
}) })
.store(in: &disposeBag) .store(in: &disposeBag)
@ -202,13 +202,13 @@ extension ThreadViewController: StatusTableViewControllerNavigateable {
extension UINavigationController { extension UINavigationController {
func notifyChildrenAboutStatusDeletion(_ status: MastodonStatus) { func notifyChildrenAboutStatusDeletion(_ status: MastodonStatus) {
viewControllers.compactMap { $0 as? DataSourceProvider }.forEach { provider in viewControllers.compactMap { $0 as? DataSourceProvider }.forEach { provider in
provider?.delete(status: status ) provider?.update(status: status, intent: .delete)
} }
} }
func notifyChildrenAboutStatusUpdate(_ status: MastodonStatus) { func notifyChildrenAboutStatusEdit(_ status: MastodonStatus) {
viewControllers.compactMap { $0 as? DataSourceProvider }.forEach { provider in viewControllers.compactMap { $0 as? DataSourceProvider }.forEach { provider in
provider?.update(status: status ) provider?.update(status: status, intent: .edit)
} }
} }
} }

View File

@ -12,15 +12,15 @@
"RHxKOw" = "Send Post with text content"; "RHxKOw" = "Send Post with text content";
"RxSqsb" = "Post"; "RxSqsb" = "Գրառում";
"WCIR3D" = "Post ${content} on Mastodon"; "WCIR3D" = "Post ${content} on Mastodon";
"ZKJSNu" = "Post"; "ZKJSNu" = "Գրառում";
"ZS1XaK" = "${content}"; "ZS1XaK" = "${content}";
"ZbSjzC" = "Visibility"; "ZbSjzC" = "Տեսանելիութիւն";
"Zo4jgJ" = "Post Visibility"; "Zo4jgJ" = "Post Visibility";
@ -34,7 +34,7 @@
"dUyuGg" = "Post on Mastodon"; "dUyuGg" = "Post on Mastodon";
"dYQ5NN" = "Public"; "dYQ5NN" = "Հրապարակային";
"ehFLjY" = "Followers Only"; "ehFLjY" = "Followers Only";

View File

@ -2,8 +2,11 @@ import Foundation
import UIKit import UIKit
import Combine import Combine
import MastodonSDK import MastodonSDK
import os.log
final public class FeedDataController { final public class FeedDataController {
private let logger = Logger(subsystem: "FeedDataController", category: "Data")
private static let entryNotFoundMessage = "Failed to find suitable record. Depending on the context this might result in errors (data not being updated) or can be discarded (e.g. when there are mixed data sources where an entry might or might not exist)."
@Published public var records: [MastodonFeed] = [] @Published public var records: [MastodonFeed] = []
@ -17,7 +20,7 @@ final public class FeedDataController {
public func loadInitial(kind: MastodonFeed.Kind) { public func loadInitial(kind: MastodonFeed.Kind) {
Task { Task {
records = try await load(kind: kind, sinceId: nil) records = try await load(kind: kind, maxID: nil)
} }
} }
@ -27,63 +30,151 @@ final public class FeedDataController {
return loadInitial(kind: kind) return loadInitial(kind: kind)
} }
records = try await load(kind: kind, sinceId: lastId) records += try await load(kind: kind, maxID: lastId)
} }
} }
public func update(status: MastodonStatus) { @MainActor
public func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
switch intent {
case .delete:
delete(status)
case .edit:
updateEdited(status)
case let .bookmark(isBookmarked):
updateBookmarked(status, isBookmarked)
case let .favorite(isFavorited):
updateFavorited(status, isFavorited)
case let .reblog(isReblogged):
updateReblogged(status, isReblogged)
case let .toggleSensitive(isVisible):
updateSensitive(status, isVisible)
}
}
@MainActor
private func delete(_ status: MastodonStatus) {
records.removeAll { $0.id == status.id }
}
@MainActor
private func updateEdited(_ status: MastodonStatus) {
var newRecords = Array(records) var newRecords = Array(records)
for (i, record) in newRecords.enumerated() { guard let index = newRecords.firstIndex(where: { $0.id == status.id }) else {
if record.status?.id == status.id { logger.warning("\(Self.entryNotFoundMessage)")
newRecords[i] = .fromStatus(status, kind: record.kind) return
} else if let reblog = status.reblog, reblog.id == record.status?.id { }
newRecords[i] = .fromStatus(status, kind: record.kind) let existingRecord = newRecords[index]
} else if let reblog = record.status?.reblog, reblog.id == status.id { let newStatus = status.inheritSensitivityToggled(from: existingRecord.status)
// Handle reblogged state newRecords[index] = .fromStatus(newStatus, kind: existingRecord.kind)
let isRebloggedByAnyOne: Bool = records[i].status!.reblog != nil records = newRecords
}
@MainActor
private func updateBookmarked(_ status: MastodonStatus, _ isBookmarked: Bool) {
var newRecords = Array(records)
guard let index = newRecords.firstIndex(where: { $0.id == status.id }) else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
let existingRecord = newRecords[index]
let newStatus = status.inheritSensitivityToggled(from: existingRecord.status)
newRecords[index] = .fromStatus(newStatus, kind: existingRecord.kind)
records = newRecords
}
@MainActor
private func updateFavorited(_ status: MastodonStatus, _ isFavorited: Bool) {
var newRecords = Array(records)
if let index = newRecords.firstIndex(where: { $0.id == status.id }) {
// Replace old status entity
let existingRecord = newRecords[index]
let newStatus = status.inheritSensitivityToggled(from: existingRecord.status).withOriginal(status: existingRecord.status?.originalStatus)
newRecords[index] = .fromStatus(newStatus, kind: existingRecord.kind)
} else if let index = newRecords.firstIndex(where: { $0.status?.reblog?.id == status.id }) {
// Replace reblogged entity of old "parent" status
let newStatus: MastodonStatus let newStatus: MastodonStatus
if isRebloggedByAnyOne { if let existingEntity = newRecords[index].status?.entity {
// if status was previously reblogged by me: remove reblogged status newStatus = .fromEntity(existingEntity)
if records[i].status!.entity.reblogged == true && status.entity.reblogged == false { newStatus.originalStatus = newRecords[index].status?.originalStatus
newStatus = .fromEntity(status.entity) newStatus.reblog = status
} else { } else {
newStatus = .fromEntity(records[i].status!.entity) newStatus = status
} }
newRecords[index] = .fromStatus(newStatus, kind: newRecords[index].kind)
} else { } else {
newStatus = .fromEntity(status.entity) logger.warning("\(Self.entryNotFoundMessage)")
}
newStatus.isSensitiveToggled = status.isSensitiveToggled
newStatus.reblog = isRebloggedByAnyOne ? .fromEntity(status.entity) : nil
newRecords[i] = .fromStatus(newStatus, kind: record.kind)
} else if let reblog = record.status?.reblog, reblog.id == status.reblog?.id {
// Handle re-reblogged state
newRecords[i] = .fromStatus(status, kind: record.kind)
}
} }
records = newRecords records = newRecords
} }
public func delete(status: MastodonStatus) { @MainActor
self.records.removeAll { $0.id == status.id } private func updateReblogged(_ status: MastodonStatus, _ isReblogged: Bool) {
var newRecords = Array(records)
switch isReblogged {
case true:
let index: Int
if let idx = newRecords.firstIndex(where: { $0.status?.reblog?.id == status.reblog?.id }) {
index = idx
} else if let idx = newRecords.firstIndex(where: { $0.id == status.reblog?.id }) {
index = idx
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
let existingRecord = newRecords[index]
newRecords[index] = .fromStatus(status.withOriginal(status: existingRecord.status), kind: existingRecord.kind)
case false:
let index: Int
if let idx = newRecords.firstIndex(where: { $0.status?.reblog?.id == status.id }) {
index = idx
} else if let idx = newRecords.firstIndex(where: { $0.status?.id == status.id }) {
index = idx
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
let existingRecord = newRecords[index]
let newStatus = existingRecord.status?.originalStatus ?? status.inheritSensitivityToggled(from: existingRecord.status)
newRecords[index] = .fromStatus(newStatus, kind: existingRecord.kind)
}
records = newRecords
}
@MainActor
private func updateSensitive(_ status: MastodonStatus, _ isVisible: Bool) {
var newRecords = Array(records)
if let index = newRecords.firstIndex(where: { $0.status?.reblog?.id == status.id }), let existingEntity = newRecords[index].status?.entity {
let existingRecord = newRecords[index]
let newStatus: MastodonStatus = .fromEntity(existingEntity)
newStatus.reblog = status
newRecords[index] = .fromStatus(newStatus, kind: existingRecord.kind)
} else if let index = newRecords.firstIndex(where: { $0.id == status.id }), let existingEntity = newRecords[index].status?.entity {
let existingRecord = newRecords[index]
let newStatus: MastodonStatus = .fromEntity(existingEntity)
.inheritSensitivityToggled(from: status)
newRecords[index] = .fromStatus(newStatus, kind: existingRecord.kind)
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
records = newRecords
} }
} }
private extension FeedDataController { private extension FeedDataController {
func load(kind: MastodonFeed.Kind, sinceId: MastodonStatus.ID?) async throws -> [MastodonFeed] { func load(kind: MastodonFeed.Kind, maxID: MastodonStatus.ID?) async throws -> [MastodonFeed] {
switch kind { switch kind {
case .home: case .home:
await context.authenticationService.authenticationServiceProvider.fetchAccounts(apiService: context.apiService) await context.authenticationService.authenticationServiceProvider.fetchAccounts(apiService: context.apiService)
return try await context.apiService.homeTimeline(sinceID: sinceId, authenticationBox: authContext.mastodonAuthenticationBox) return try await context.apiService.homeTimeline(maxID: maxID, authenticationBox: authContext.mastodonAuthenticationBox)
.value.map { .fromStatus(.fromEntity($0), kind: .home) } .value.map { .fromStatus(.fromEntity($0), kind: .home) }
case .notificationAll: case .notificationAll:
return try await getFeeds(with: .everything) return try await getFeeds(with: .everything)
case .notificationMentions: case .notificationMentions:
return try await getFeeds(with: .mentions) return try await getFeeds(with: .mentions)
} }
} }

View File

@ -3,8 +3,12 @@ import Combine
import CoreData import CoreData
import CoreDataStack import CoreDataStack
import MastodonSDK import MastodonSDK
import os.log
public final class StatusDataController { public final class StatusDataController {
private let logger = Logger(subsystem: "StatusDataController", category: "Data")
private static let entryNotFoundMessage = "Failed to find suitable record. Depending on the context this might result in errors (data not being updated) or can be discarded (e.g. when there are mixed data sources where an entry might or might not exist)."
@MainActor @MainActor
@Published @Published
public private(set) var records: [MastodonStatus] = [] public private(set) var records: [MastodonStatus] = []
@ -35,39 +39,118 @@ public final class StatusDataController {
} }
@MainActor @MainActor
public func update(status: MastodonStatus) { public func update(status: MastodonStatus, intent: MastodonStatus.UpdateIntent) {
switch intent {
case .delete:
deleteRecord(status)
case .edit:
updateEdited(status)
case let .bookmark(isBookmarked):
updateBookmarked(status, isBookmarked)
case let .favorite(isFavorited):
updateFavorited(status, isFavorited)
case let .reblog(isReblogged):
updateReblogged(status, isReblogged)
case let .toggleSensitive(isVisible):
updateSensitive(status, isVisible)
}
}
@MainActor
private func updateEdited(_ status: MastodonStatus) {
var newRecords = Array(records) var newRecords = Array(records)
for (i, record) in newRecords.enumerated() { guard let index = newRecords.firstIndex(where: { $0.id == status.id }) else {
if record.id == status.id { logger.warning("\(Self.entryNotFoundMessage)")
newRecords[i] = status return
} else if let reblog = status.reblog, reblog.id == record.id { }
newRecords[i] = status newRecords[index] = status.inheritSensitivityToggled(from: newRecords[index])
} else if let reblog = record.reblog, reblog.id == status.id { records = newRecords
// Handle reblogged state }
let isRebloggedByAnyOne: Bool = records[i].reblog != nil
let newStatus: MastodonStatus @MainActor
if isRebloggedByAnyOne { private func updateBookmarked(_ status: MastodonStatus, _ isBookmarked: Bool) {
// if status was previously reblogged by me: remove reblogged status var newRecords = Array(records)
if records[i].entity.reblogged == true && status.entity.reblogged == false { guard let index = newRecords.firstIndex(where: { $0.id == status.id }) else {
newStatus = .fromEntity(status.entity) logger.warning("\(Self.entryNotFoundMessage)")
return
}
newRecords[index] = status.inheritSensitivityToggled(from: newRecords[index])
records = newRecords
}
@MainActor
private func updateFavorited(_ status: MastodonStatus, _ isFavorited: Bool) {
var newRecords = Array(records)
if let index = newRecords.firstIndex(where: { $0.id == status.id }) {
// Replace old status entity
let existingRecord = newRecords[index]
let newStatus = status.inheritSensitivityToggled(from: existingRecord)
.withOriginal(status: existingRecord)
newRecords[index] = newStatus
} else if let index = newRecords.firstIndex(where: { $0.reblog?.id == status.id }) {
// Replace reblogged entity of old "parent" status
let existingRecord = newRecords[index]
let newStatus = status.inheritSensitivityToggled(from: existingRecord)
.withOriginal(status: existingRecord)
newStatus.reblog = status
newRecords[index] = newStatus
} else { } else {
newStatus = .fromEntity(records[i].entity) logger.warning("\(Self.entryNotFoundMessage)")
}
} else {
newStatus = .fromEntity(status.entity)
}
newStatus.isSensitiveToggled = status.isSensitiveToggled
newStatus.reblog = isRebloggedByAnyOne ? .fromEntity(status.entity) : nil
newRecords[i] = newStatus
} else if let reblog = record.reblog, reblog.id == status.reblog?.id {
// Handle re-reblogged state
newRecords[i] = status
}
} }
records = newRecords records = newRecords
} }
@MainActor
private func updateReblogged(_ status: MastodonStatus, _ isReblogged: Bool) {
var newRecords = Array(records)
switch isReblogged {
case true:
let index: Int
if let idx = newRecords.firstIndex(where: { $0.reblog?.id == status.reblog?.id }) {
index = idx
} else if let idx = newRecords.firstIndex(where: { $0.id == status.reblog?.id }) {
index = idx
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
let existingStatus = newRecords[index]
newRecords[index] = status.withOriginal(status: existingStatus)
case false:
let index: Int
if let idx = newRecords.firstIndex(where: { $0.reblog?.id == status.id }) {
index = idx
} else if let idx = newRecords.firstIndex(where: { $0.id == status.id }) {
index = idx
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
let existingRecord = newRecords[index]
let newStatus = existingRecord.originalStatus ?? status.inheritSensitivityToggled(from: existingRecord)
newRecords[index] = newStatus
}
records = newRecords
}
@MainActor
private func updateSensitive(_ status: MastodonStatus, _ isVisible: Bool) {
var newRecords = Array(records)
if let index = newRecords.firstIndex(where: { $0.reblog?.id == status.id }) {
let newStatus: MastodonStatus = .fromEntity(newRecords[index].entity)
newStatus.reblog = status
newRecords[index] = newStatus
} else if let index = newRecords.firstIndex(where: { $0.id == status.id }) {
let newStatus: MastodonStatus = .fromEntity(newRecords[index].entity)
.inheritSensitivityToggled(from: status)
newRecords[index] = newStatus
} else {
logger.warning("\(Self.entryNotFoundMessage)")
return
}
records = newRecords
}
} }

View File

@ -50,13 +50,6 @@ extension APIService {
domain: domain, domain: domain,
authorization: authorization).singleOutput() authorization: authorization).singleOutput()
_ = try await Mastodon.API.Statuses.editHistory(
forStatusID: statusID,
session: session,
domain: domain,
authorization: authorization
).singleOutput()
return response return response
} }
} }

View File

@ -95,6 +95,7 @@ public final class AuthenticationService: NSObject {
super.init() super.init()
$mastodonAuthenticationBoxes $mastodonAuthenticationBoxes
.throttle(for: 3, scheduler: DispatchQueue.main, latest: true)
.sink { [weak self] boxes in .sink { [weak self] boxes in
Task { [weak self] in Task { [weak self] in
for authBox in boxes { for authBox in boxes {

View File

@ -206,9 +206,9 @@ public enum L10n {
public enum Friendship { public enum Friendship {
/// Block /// Block
public static let block = L10n.tr("Localizable", "Common.Controls.Friendship.Block", fallback: "Block") public static let block = L10n.tr("Localizable", "Common.Controls.Friendship.Block", fallback: "Block")
/// Block %@ /// Block domain %@
public static func blockDomain(_ p1: Any) -> String { public static func blockDomain(_ p1: Any) -> String {
return L10n.tr("Localizable", "Common.Controls.Friendship.BlockDomain", String(describing: p1), fallback: "Block %@") return L10n.tr("Localizable", "Common.Controls.Friendship.BlockDomain", String(describing: p1), fallback: "Block domain %@")
} }
/// Blocked /// Blocked
public static let blocked = L10n.tr("Localizable", "Common.Controls.Friendship.Blocked", fallback: "Blocked") public static let blocked = L10n.tr("Localizable", "Common.Controls.Friendship.Blocked", fallback: "Blocked")
@ -243,10 +243,6 @@ public enum L10n {
/// Unblock /// Unblock
public static let unblock = L10n.tr("Localizable", "Common.Controls.Friendship.Unblock", fallback: "Unblock") public static let unblock = L10n.tr("Localizable", "Common.Controls.Friendship.Unblock", fallback: "Unblock")
/// Unblock %@ /// Unblock %@
public static func unblockDomain(_ p1: Any) -> String {
return L10n.tr("Localizable", "Common.Controls.Friendship.UnblockDomain", String(describing: p1), fallback: "Unblock %@")
}
/// Unblock %@
public static func unblockUser(_ p1: Any) -> String { public static func unblockUser(_ p1: Any) -> String {
return L10n.tr("Localizable", "Common.Controls.Friendship.UnblockUser", String(describing: p1), fallback: "Unblock %@") return L10n.tr("Localizable", "Common.Controls.Friendship.UnblockUser", String(describing: p1), fallback: "Unblock %@")
} }
@ -960,8 +956,12 @@ public enum L10n {
} }
public enum RelationshipActionAlert { public enum RelationshipActionAlert {
public enum ConfirmBlockDomain { public enum ConfirmBlockDomain {
/// Block Domain /// Confirm to block domain %@
public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title", fallback: "Block Domain") public static func message(_ p1: Any) -> String {
return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message", String(describing: p1), fallback: "Confirm to block domain %@")
}
/// Block domain
public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title", fallback: "Block domain")
} }
public enum ConfirmBlockUser { public enum ConfirmBlockUser {
/// Confirm to block %@ /// Confirm to block %@
@ -996,8 +996,8 @@ public enum L10n {
public static func message(_ p1: Any) -> String { public static func message(_ p1: Any) -> String {
return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message", String(describing: p1), fallback: "Confirm to unblock domain %@") return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message", String(describing: p1), fallback: "Confirm to unblock domain %@")
} }
/// Unblock Domain /// Unblock domain
public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title", fallback: "Unblock Domain") public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title", fallback: "Unblock domain")
} }
public enum ConfirmUnblockUser { public enum ConfirmUnblockUser {
/// Confirm to unblock %@ /// Confirm to unblock %@

View File

@ -70,7 +70,7 @@ Please check your internet connection.";
"Common.Controls.Actions.UnblockDomain" = "Unblock %@"; "Common.Controls.Actions.UnblockDomain" = "Unblock %@";
"Common.Controls.Actions.Unfollow" = "Unfollow %@"; "Common.Controls.Actions.Unfollow" = "Unfollow %@";
"Common.Controls.Friendship.Block" = "Block"; "Common.Controls.Friendship.Block" = "Block";
"Common.Controls.Friendship.BlockDomain" = "Block %@"; "Common.Controls.Friendship.BlockDomain" = "Block domain %@";
"Common.Controls.Friendship.BlockUser" = "Block %@"; "Common.Controls.Friendship.BlockUser" = "Block %@";
"Common.Controls.Friendship.Blocked" = "Blocked"; "Common.Controls.Friendship.Blocked" = "Blocked";
"Common.Controls.Friendship.DomainBlocked" = "Domain Blocked"; "Common.Controls.Friendship.DomainBlocked" = "Domain Blocked";
@ -86,7 +86,6 @@ Please check your internet connection.";
"Common.Controls.Friendship.ShowReblogs" = "Show Reblogs"; "Common.Controls.Friendship.ShowReblogs" = "Show Reblogs";
"Common.Controls.Friendship.Unblock" = "Unblock"; "Common.Controls.Friendship.Unblock" = "Unblock";
"Common.Controls.Friendship.UnblockUser" = "Unblock %@"; "Common.Controls.Friendship.UnblockUser" = "Unblock %@";
"Common.Controls.Friendship.UnblockDomain" = "Unblock %@";
"Common.Controls.Friendship.Unmute" = "Unmute"; "Common.Controls.Friendship.Unmute" = "Unmute";
"Common.Controls.Friendship.UnmuteUser" = "Unmute %@"; "Common.Controls.Friendship.UnmuteUser" = "Unmute %@";
"Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post"; "Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post";
@ -336,17 +335,18 @@ uploaded to Mastodon.";
"Scene.Profile.Fields.Verified.Long" = "Ownership of this link was checked on %@"; "Scene.Profile.Fields.Verified.Long" = "Ownership of this link was checked on %@";
"Scene.Profile.Fields.Verified.Short" = "Verified on %@"; "Scene.Profile.Fields.Verified.Short" = "Verified on %@";
"Scene.Profile.Header.FollowsYou" = "Follows You"; "Scene.Profile.Header.FollowsYou" = "Follows You";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Confirm to block domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Block domain";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Block Domain";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Confirm to unblock domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Unblock Domain";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirm to hide reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirm to hide reblogs";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Title" = "Hide Reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Title" = "Hide Reblogs";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirm to show reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirm to show reblogs";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Show Reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Show Reblogs";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Confirm to unblock domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Unblock domain";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@";

View File

@ -70,9 +70,10 @@
"Common.Controls.Actions.UnblockDomain" = "رفع الحظر عن %@"; "Common.Controls.Actions.UnblockDomain" = "رفع الحظر عن %@";
"Common.Controls.Actions.Unfollow" = "ألغِ متابعة %@"; "Common.Controls.Actions.Unfollow" = "ألغِ متابعة %@";
"Common.Controls.Friendship.Block" = "حظر"; "Common.Controls.Friendship.Block" = "حظر";
"Common.Controls.Friendship.BlockDomain" = "حظر %@"; "Common.Controls.Friendship.BlockDomain" = "Block domain %@";
"Common.Controls.Friendship.BlockUser" = "حَظرُ %@"; "Common.Controls.Friendship.BlockUser" = "حَظرُ %@";
"Common.Controls.Friendship.Blocked" = "محظور"; "Common.Controls.Friendship.Blocked" = "محظور";
"Common.Controls.Friendship.DomainBlocked" = "Domain Blocked";
"Common.Controls.Friendship.EditInfo" = "تَحريرُ المَعلُومات"; "Common.Controls.Friendship.EditInfo" = "تَحريرُ المَعلُومات";
"Common.Controls.Friendship.Follow" = "مُتابَعَة"; "Common.Controls.Friendship.Follow" = "مُتابَعَة";
"Common.Controls.Friendship.Following" = "مُتابَع"; "Common.Controls.Friendship.Following" = "مُتابَع";
@ -334,6 +335,8 @@
"Scene.Profile.Fields.Verified.Long" = "تمَّ التَّحقق مِن مِلكية هذا الرابِطِ بِتاريخ %@"; "Scene.Profile.Fields.Verified.Long" = "تمَّ التَّحقق مِن مِلكية هذا الرابِطِ بِتاريخ %@";
"Scene.Profile.Fields.Verified.Short" = "تمَّ التَّحقق بِتاريخ %@"; "Scene.Profile.Fields.Verified.Short" = "تمَّ التَّحقق بِتاريخ %@";
"Scene.Profile.Header.FollowsYou" = "يُتابِعُك"; "Scene.Profile.Header.FollowsYou" = "يُتابِعُك";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Confirm to block domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Block domain";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "تأكيدُ حَظر %@"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "تأكيدُ حَظر %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "حَظرُ الحِساب"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "حَظرُ الحِساب";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "التأكيد لِإخفاء إعادات التدوين"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "التأكيد لِإخفاء إعادات التدوين";
@ -342,6 +345,8 @@
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "كَتمُ الحِساب"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "كَتمُ الحِساب";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "التأكيد لِإظهار إعادات التدوين"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "التأكيد لِإظهار إعادات التدوين";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "إظهار إعادات التدوين"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "إظهار إعادات التدوين";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Confirm to unblock domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Unblock domain";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "تأكيدُ رَفع الحَظرِ عَن %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "تأكيدُ رَفع الحَظرِ عَن %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "رَفعُ الحَظرِ عَنِ الحِساب"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "رَفعُ الحَظرِ عَنِ الحِساب";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "أكِّد لرفع الكتمْ عن %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "أكِّد لرفع الكتمْ عن %@";

View File

@ -70,9 +70,10 @@
"Common.Controls.Actions.UnblockDomain" = "Разблакіраваць %@"; "Common.Controls.Actions.UnblockDomain" = "Разблакіраваць %@";
"Common.Controls.Actions.Unfollow" = "Адпісацца ад %@"; "Common.Controls.Actions.Unfollow" = "Адпісацца ад %@";
"Common.Controls.Friendship.Block" = "Заблакіраваць"; "Common.Controls.Friendship.Block" = "Заблакіраваць";
"Common.Controls.Friendship.BlockDomain" = "Заблакіраваць %@"; "Common.Controls.Friendship.BlockDomain" = "Заблакіраваць дамен %@";
"Common.Controls.Friendship.BlockUser" = "Заблакіраваць %@"; "Common.Controls.Friendship.BlockUser" = "Заблакіраваць %@";
"Common.Controls.Friendship.Blocked" = "Заблакіраваны"; "Common.Controls.Friendship.Blocked" = "Заблакіраваны";
"Common.Controls.Friendship.DomainBlocked" = "Дамен заблакіраваны";
"Common.Controls.Friendship.EditInfo" = "Рэдагаваць інфармацыю"; "Common.Controls.Friendship.EditInfo" = "Рэдагаваць інфармацыю";
"Common.Controls.Friendship.Follow" = "Падпісацца"; "Common.Controls.Friendship.Follow" = "Падпісацца";
"Common.Controls.Friendship.Following" = "Падпісаны"; "Common.Controls.Friendship.Following" = "Падпісаны";
@ -334,6 +335,8 @@
"Scene.Profile.Fields.Verified.Long" = "Права ўласнасці на гэтую спасылку праверана %@"; "Scene.Profile.Fields.Verified.Long" = "Права ўласнасці на гэтую спасылку праверана %@";
"Scene.Profile.Fields.Verified.Short" = "Спраўджана %@"; "Scene.Profile.Fields.Verified.Short" = "Спраўджана %@";
"Scene.Profile.Header.FollowsYou" = "Падпісаны(-а) на вас"; "Scene.Profile.Header.FollowsYou" = "Падпісаны(-а) на вас";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Заблакіраваць дамен %@?";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Заблакіраваць дамен";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Заблакіраваць %@?"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Заблакіраваць %@?";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Заблакіраваць уліковы запіс"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Заблакіраваць уліковы запіс";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Пацвердзіце, каб схаваць пашырэнні"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Пацвердзіце, каб схаваць пашырэнні";
@ -342,6 +345,8 @@
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Ігнараваць уліковы запіс"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Ігнараваць уліковы запіс";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Пацвердзіце, каб паказаць пашырэнні"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Пацвердзіце, каб паказаць пашырэнні";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Паказаць пашырэнні"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Паказаць пашырэнні";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Разблакіраваць дамен %@?";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Разблакіраваць дамен";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Разблакіраваць %@?"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Разблакіраваць %@?";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Разблакіраваць уліковы запіс"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Разблакіраваць уліковы запіс";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Не ігнараваць %@?"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Не ігнараваць %@?";

View File

@ -70,9 +70,10 @@ Comprova la connexió a Internet.";
"Common.Controls.Actions.UnblockDomain" = "Desbloca %@"; "Common.Controls.Actions.UnblockDomain" = "Desbloca %@";
"Common.Controls.Actions.Unfollow" = "Deixa de seguir %@"; "Common.Controls.Actions.Unfollow" = "Deixa de seguir %@";
"Common.Controls.Friendship.Block" = "Bloca"; "Common.Controls.Friendship.Block" = "Bloca";
"Common.Controls.Friendship.BlockDomain" = "Bloca %@"; "Common.Controls.Friendship.BlockDomain" = "Block domain %@";
"Common.Controls.Friendship.BlockUser" = "Bloca %@"; "Common.Controls.Friendship.BlockUser" = "Bloca %@";
"Common.Controls.Friendship.Blocked" = "Blocat"; "Common.Controls.Friendship.Blocked" = "Blocat";
"Common.Controls.Friendship.DomainBlocked" = "Domain Blocked";
"Common.Controls.Friendship.EditInfo" = "Edita"; "Common.Controls.Friendship.EditInfo" = "Edita";
"Common.Controls.Friendship.Follow" = "Segueix"; "Common.Controls.Friendship.Follow" = "Segueix";
"Common.Controls.Friendship.Following" = "Seguint"; "Common.Controls.Friendship.Following" = "Seguint";
@ -334,6 +335,8 @@ carregat a Mastodon.";
"Scene.Profile.Fields.Verified.Long" = "La propietat d'aquest enllaç es va verificar el dia %@"; "Scene.Profile.Fields.Verified.Long" = "La propietat d'aquest enllaç es va verificar el dia %@";
"Scene.Profile.Fields.Verified.Short" = "Verificat a %@"; "Scene.Profile.Fields.Verified.Short" = "Verificat a %@";
"Scene.Profile.Header.FollowsYou" = "Et segueix"; "Scene.Profile.Header.FollowsYou" = "Et segueix";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Confirm to block domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Block domain";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirma per a blocar %@"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirma per a blocar %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bloca el Compte"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bloca el Compte";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirma per a amagar els impulsos"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirma per a amagar els impulsos";
@ -342,6 +345,8 @@ carregat a Mastodon.";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Silencia el Compte"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Silencia el Compte";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirma per a mostrar els impulsos"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirma per a mostrar els impulsos";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Mostra els Impulsos"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Mostra els Impulsos";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Confirm to unblock domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Unblock domain";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirma per a desblocar %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirma per a desblocar %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Desbloca el Compte"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Desbloca el Compte";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirma deixar de silenciar a %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirma deixar de silenciar a %@";

View File

@ -70,9 +70,10 @@
"Common.Controls.Actions.UnblockDomain" = "%@ ئاستەنگ مەکە"; "Common.Controls.Actions.UnblockDomain" = "%@ ئاستەنگ مەکە";
"Common.Controls.Actions.Unfollow" = "Unfollow %@"; "Common.Controls.Actions.Unfollow" = "Unfollow %@";
"Common.Controls.Friendship.Block" = "ئاستەنگی بکە"; "Common.Controls.Friendship.Block" = "ئاستەنگی بکە";
"Common.Controls.Friendship.BlockDomain" = "%@ ئاستەنگ بکە"; "Common.Controls.Friendship.BlockDomain" = "Block domain %@";
"Common.Controls.Friendship.BlockUser" = "%@ ئاستەنگ بکە"; "Common.Controls.Friendship.BlockUser" = "%@ ئاستەنگ بکە";
"Common.Controls.Friendship.Blocked" = "ئاستەنگ کراوە"; "Common.Controls.Friendship.Blocked" = "ئاستەنگ کراوە";
"Common.Controls.Friendship.DomainBlocked" = "Domain Blocked";
"Common.Controls.Friendship.EditInfo" = "دەستکاری"; "Common.Controls.Friendship.EditInfo" = "دەستکاری";
"Common.Controls.Friendship.Follow" = "شوێنی بکەوە"; "Common.Controls.Friendship.Follow" = "شوێنی بکەوە";
"Common.Controls.Friendship.Following" = "شوێنی دەکەویت"; "Common.Controls.Friendship.Following" = "شوێنی دەکەویت";
@ -333,6 +334,8 @@
"Scene.Profile.Fields.Verified.Long" = "Ownership of this link was checked on %@"; "Scene.Profile.Fields.Verified.Long" = "Ownership of this link was checked on %@";
"Scene.Profile.Fields.Verified.Short" = "Verified on %@"; "Scene.Profile.Fields.Verified.Short" = "Verified on %@";
"Scene.Profile.Header.FollowsYou" = "Follows You"; "Scene.Profile.Header.FollowsYou" = "Follows You";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Confirm to block domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Block domain";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "دڵنیا ببەوە بۆ ئاستەنگکردنی %@"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "دڵنیا ببەوە بۆ ئاستەنگکردنی %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "ئاستەنگی بکە"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "ئاستەنگی بکە";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirm to hide reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirm to hide reblogs";
@ -341,6 +344,8 @@
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "بێدەنگی بکە"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "بێدەنگی بکە";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirm to show reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirm to show reblogs";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Show Reblogs"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Show Reblogs";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Confirm to unblock domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Unblock domain";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "دڵنیا ببەوە بۆ لابردنی ئاستەنگی %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "دڵنیا ببەوە بۆ لابردنی ئاستەنگی %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "ئاستەنگی مەکە"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "ئاستەنگی مەکە";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "دڵنیا ببەوە بۆ بێدەنگنەکردنی %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "دڵنیا ببەوە بۆ بێدەنگنەکردنی %@";

View File

@ -70,9 +70,10 @@ Zkontrolujte prosím připojení k internetu.";
"Common.Controls.Actions.UnblockDomain" = "Odblokovat %@"; "Common.Controls.Actions.UnblockDomain" = "Odblokovat %@";
"Common.Controls.Actions.Unfollow" = "Přestat sledovat %@"; "Common.Controls.Actions.Unfollow" = "Přestat sledovat %@";
"Common.Controls.Friendship.Block" = "Blokovat"; "Common.Controls.Friendship.Block" = "Blokovat";
"Common.Controls.Friendship.BlockDomain" = "Blokovat %@"; "Common.Controls.Friendship.BlockDomain" = "Block domain %@";
"Common.Controls.Friendship.BlockUser" = "Blokovat %@"; "Common.Controls.Friendship.BlockUser" = "Blokovat %@";
"Common.Controls.Friendship.Blocked" = "Blokovaný"; "Common.Controls.Friendship.Blocked" = "Blokovaný";
"Common.Controls.Friendship.DomainBlocked" = "Domain Blocked";
"Common.Controls.Friendship.EditInfo" = "Upravit informace"; "Common.Controls.Friendship.EditInfo" = "Upravit informace";
"Common.Controls.Friendship.Follow" = "Sledovat"; "Common.Controls.Friendship.Follow" = "Sledovat";
"Common.Controls.Friendship.Following" = "Sleduji"; "Common.Controls.Friendship.Following" = "Sleduji";
@ -330,6 +331,8 @@ nahrán do Mastodonu.";
"Scene.Profile.Fields.Verified.Long" = "Vlastnictví tohoto odkazu bylo zkontrolováno na %@"; "Scene.Profile.Fields.Verified.Long" = "Vlastnictví tohoto odkazu bylo zkontrolováno na %@";
"Scene.Profile.Fields.Verified.Short" = "Ověřeno na %@"; "Scene.Profile.Fields.Verified.Short" = "Ověřeno na %@";
"Scene.Profile.Header.FollowsYou" = "Sleduje vás"; "Scene.Profile.Header.FollowsYou" = "Sleduje vás";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Confirm to block domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Block domain";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Potvrdit blokování %@"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Potvrdit blokování %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Blokovat účet"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Blokovat účet";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Potvrďte skrytí reblogů"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Potvrďte skrytí reblogů";
@ -338,6 +341,8 @@ nahrán do Mastodonu.";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Skrýt účet"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Skrýt účet";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Potvrdit zobrazení reblogů"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Potvrdit zobrazení reblogů";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Zobrazit Reblogy"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Zobrazit Reblogy";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Confirm to unblock domain %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Unblock domain";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Potvrďte odblokování %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Potvrďte odblokování %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Odblokovat účet"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Odblokovat účet";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Potvrďte zrušení ztlumení %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Potvrďte zrušení ztlumení %@";

View File

@ -70,9 +70,10 @@ Bitte überprüfe deine Internetverbindung.";
"Common.Controls.Actions.UnblockDomain" = "Blockierung von %@ aufheben"; "Common.Controls.Actions.UnblockDomain" = "Blockierung von %@ aufheben";
"Common.Controls.Actions.Unfollow" = "%@ entfolgen"; "Common.Controls.Actions.Unfollow" = "%@ entfolgen";
"Common.Controls.Friendship.Block" = "Blockieren"; "Common.Controls.Friendship.Block" = "Blockieren";
"Common.Controls.Friendship.BlockDomain" = "%@ blockieren"; "Common.Controls.Friendship.BlockDomain" = "Domain %@ sperren";
"Common.Controls.Friendship.BlockUser" = "%@ blockieren"; "Common.Controls.Friendship.BlockUser" = "%@ blockieren";
"Common.Controls.Friendship.Blocked" = "Blockiert"; "Common.Controls.Friendship.Blocked" = "Blockiert";
"Common.Controls.Friendship.DomainBlocked" = "Domain gesperrt";
"Common.Controls.Friendship.EditInfo" = "Information bearbeiten"; "Common.Controls.Friendship.EditInfo" = "Information bearbeiten";
"Common.Controls.Friendship.Follow" = "Folgen"; "Common.Controls.Friendship.Follow" = "Folgen";
"Common.Controls.Friendship.Following" = "Gefolgt"; "Common.Controls.Friendship.Following" = "Gefolgt";
@ -223,19 +224,19 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.Compose.Keyboard.TogglePoll" = "Umfrage umschalten"; "Scene.Compose.Keyboard.TogglePoll" = "Umfrage umschalten";
"Scene.Compose.Language.Other" = "Andere Sprache…"; "Scene.Compose.Language.Other" = "Andere Sprache…";
"Scene.Compose.Language.Recent" = "Kürzlich"; "Scene.Compose.Language.Recent" = "Kürzlich";
"Scene.Compose.Language.Suggested" = "Suggested"; "Scene.Compose.Language.Suggested" = "Empfohlen";
"Scene.Compose.Language.Title" = "Beitragssprache"; "Scene.Compose.Language.Title" = "Beitragssprache";
"Scene.Compose.MediaSelection.Browse" = "Durchsuchen"; "Scene.Compose.MediaSelection.Browse" = "Durchsuchen";
"Scene.Compose.MediaSelection.Camera" = "Foto aufnehmen"; "Scene.Compose.MediaSelection.Camera" = "Foto aufnehmen";
"Scene.Compose.MediaSelection.PhotoLibrary" = "Fotobibliothek"; "Scene.Compose.MediaSelection.PhotoLibrary" = "Fotobibliothek";
"Scene.Compose.Poll.AddOption" = "Add Option"; "Scene.Compose.Poll.AddOption" = "Option hinzufügen";
"Scene.Compose.Poll.DurationTime" = "Dauer: %@"; "Scene.Compose.Poll.DurationTime" = "Dauer: %@";
"Scene.Compose.Poll.MoveDown" = "Nach unten"; "Scene.Compose.Poll.MoveDown" = "Nach unten";
"Scene.Compose.Poll.MoveUp" = "Nach oben"; "Scene.Compose.Poll.MoveUp" = "Nach oben";
"Scene.Compose.Poll.OneDay" = "1 Tag"; "Scene.Compose.Poll.OneDay" = "1 Tag";
"Scene.Compose.Poll.OneHour" = "1 Stunde"; "Scene.Compose.Poll.OneHour" = "1 Stunde";
"Scene.Compose.Poll.OptionNumber" = "Auswahlmöglichkeit %ld"; "Scene.Compose.Poll.OptionNumber" = "Auswahlmöglichkeit %ld";
"Scene.Compose.Poll.RemoveOption" = "Remove Option"; "Scene.Compose.Poll.RemoveOption" = "Option entfernen";
"Scene.Compose.Poll.SevenDays" = "7 Tage"; "Scene.Compose.Poll.SevenDays" = "7 Tage";
"Scene.Compose.Poll.SixHours" = "6 Stunden"; "Scene.Compose.Poll.SixHours" = "6 Stunden";
"Scene.Compose.Poll.ThePollHasEmptyOption" = "Die Umfrage hat eine leere Option"; "Scene.Compose.Poll.ThePollHasEmptyOption" = "Die Umfrage hat eine leere Option";
@ -334,6 +335,8 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.Profile.Fields.Verified.Long" = "Besitz des Links wurde überprüft am %@"; "Scene.Profile.Fields.Verified.Long" = "Besitz des Links wurde überprüft am %@";
"Scene.Profile.Fields.Verified.Short" = "Überprüft am %@"; "Scene.Profile.Fields.Verified.Short" = "Überprüft am %@";
"Scene.Profile.Header.FollowsYou" = "Folgt dir"; "Scene.Profile.Header.FollowsYou" = "Folgt dir";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Bestätigen, um die Domain %@ zu sperren";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Domain sperren";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Bestätige %@ zu blockieren"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Bestätige %@ zu blockieren";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Konto blockieren"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Konto blockieren";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Bestätigen, um Teilen auszublenden"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Bestätigen, um Teilen auszublenden";
@ -342,6 +345,8 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Konto stummschalten"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Konto stummschalten";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Bestätigen, um Teilen anzuzeigen"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Bestätigen, um Teilen anzuzeigen";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Teilen anzeigen"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Teilen anzeigen";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Bestätigen, um die Sperre der Domäne %@ aufzuheben";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Domain entsperren";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Bestätige %@ zu entsperren"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Bestätige %@ zu entsperren";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Konto entsperren"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Konto entsperren";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bestätige um %@ nicht mehr stummzuschalten"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bestätige um %@ nicht mehr stummzuschalten";
@ -443,8 +448,8 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.Search.Searching.ClearAll" = "Alles löschen"; "Scene.Search.Searching.ClearAll" = "Alles löschen";
"Scene.Search.Searching.EmptyState.NoResults" = "Keine Ergebnisse"; "Scene.Search.Searching.EmptyState.NoResults" = "Keine Ergebnisse";
"Scene.Search.Searching.Hashtag" = "Wechseln zu #%@"; "Scene.Search.Searching.Hashtag" = "Wechseln zu #%@";
"Scene.Search.Searching.NoUser.Message" = "There's no Useraccount \"%@\" on %@"; "Scene.Search.Searching.NoUser.Message" = "Es gibt kein Benutzerkonto „%@” auf %@";
"Scene.Search.Searching.NoUser.Title" = "No User Account Found"; "Scene.Search.Searching.NoUser.Title" = "Kein Benutzerkonto gefunden";
"Scene.Search.Searching.People" = "People matching \"%@\""; "Scene.Search.Searching.People" = "People matching \"%@\"";
"Scene.Search.Searching.Posts" = "Posts matching \"%@\""; "Scene.Search.Searching.Posts" = "Posts matching \"%@\"";
"Scene.Search.Searching.Profile" = "Go to @%@@%@"; "Scene.Search.Searching.Profile" = "Go to @%@@%@";
@ -490,37 +495,37 @@ kann nicht auf Mastodon hochgeladen werden.";
"Scene.ServerRules.TermsOfService" = "Nutzungsbedingungen"; "Scene.ServerRules.TermsOfService" = "Nutzungsbedingungen";
"Scene.ServerRules.Title" = "Einige Grundregeln."; "Scene.ServerRules.Title" = "Einige Grundregeln.";
"Scene.Settings.AboutMastodon.ClearMediaStorage" = "Clear Media Storage"; "Scene.Settings.AboutMastodon.ClearMediaStorage" = "Clear Media Storage";
"Scene.Settings.AboutMastodon.ContributeToMastodon" = "Contribute to Mastodon"; "Scene.Settings.AboutMastodon.ContributeToMastodon" = "Zu Mastodon beitragen";
"Scene.Settings.AboutMastodon.MoreSettings" = "Noch mehr Einstellungen"; "Scene.Settings.AboutMastodon.MoreSettings" = "Noch mehr Einstellungen";
"Scene.Settings.AboutMastodon.PrivacyPolicy" = "Datenschutzerklärung"; "Scene.Settings.AboutMastodon.PrivacyPolicy" = "Datenschutzerklärung";
"Scene.Settings.AboutMastodon.Title" = "Über"; "Scene.Settings.AboutMastodon.Title" = "Über";
"Scene.Settings.General.Appearance.Dark" = "Dark"; "Scene.Settings.General.Appearance.Dark" = "Dunkel";
"Scene.Settings.General.Appearance.Light" = "Light"; "Scene.Settings.General.Appearance.Light" = "Hell";
"Scene.Settings.General.Appearance.SectionTitle" = "Appearance"; "Scene.Settings.General.Appearance.SectionTitle" = "Farbschema";
"Scene.Settings.General.Appearance.System" = "Use Device Appearance"; "Scene.Settings.General.Appearance.System" = "Einstellungen des Geräts übernehmen";
"Scene.Settings.General.Design.SectionTitle" = "Design"; "Scene.Settings.General.Design.SectionTitle" = "Design";
"Scene.Settings.General.Design.ShowAnimations" = "Play Animated Avatars and Emoji"; "Scene.Settings.General.Design.ShowAnimations" = "Play Animated Avatars and Emoji";
"Scene.Settings.General.Links.OpenInBrowser" = "Open in Browser"; "Scene.Settings.General.Links.OpenInBrowser" = "Im Browser öffnen";
"Scene.Settings.General.Links.OpenInMastodon" = "Open in Mastodon"; "Scene.Settings.General.Links.OpenInMastodon" = "In Mastodon öffnen";
"Scene.Settings.General.Links.SectionTitle" = "Links"; "Scene.Settings.General.Links.SectionTitle" = "Links";
"Scene.Settings.General.Title" = "General"; "Scene.Settings.General.Title" = "Allgemein";
"Scene.Settings.Notifications.Alert.Boosts" = "Boosts"; "Scene.Settings.Notifications.Alert.Boosts" = "Boosts";
"Scene.Settings.Notifications.Alert.Favorites" = "Favorites"; "Scene.Settings.Notifications.Alert.Favorites" = "Favorites";
"Scene.Settings.Notifications.Alert.MentionsAndReplies" = "Mentions & Replies"; "Scene.Settings.Notifications.Alert.MentionsAndReplies" = "Mentions & Replies";
"Scene.Settings.Notifications.Alert.NewFollowers" = "New Followers"; "Scene.Settings.Notifications.Alert.NewFollowers" = "New Followers";
"Scene.Settings.Notifications.Disabled.GoToSettings" = "Go to Notification Settings"; "Scene.Settings.Notifications.Disabled.GoToSettings" = "Go to Notification Settings";
"Scene.Settings.Notifications.Disabled.NotificationHint" = "Turn on notifications from your device settings to see updates on your lock screen."; "Scene.Settings.Notifications.Disabled.NotificationHint" = "Turn on notifications from your device settings to see updates on your lock screen.";
"Scene.Settings.Notifications.Policy.Anyone" = "Anyone"; "Scene.Settings.Notifications.Policy.Anyone" = "Jeder";
"Scene.Settings.Notifications.Policy.Follow" = "People you follow"; "Scene.Settings.Notifications.Policy.Follow" = "People you follow";
"Scene.Settings.Notifications.Policy.Followers" = "People who follow you"; "Scene.Settings.Notifications.Policy.Followers" = "People who follow you";
"Scene.Settings.Notifications.Policy.Noone" = "No one"; "Scene.Settings.Notifications.Policy.Noone" = "Niemand";
"Scene.Settings.Notifications.Policy.Title" = "Get Notifications from"; "Scene.Settings.Notifications.Policy.Title" = "Mitteilungen erhalten von";
"Scene.Settings.Notifications.Title" = "Notifications"; "Scene.Settings.Notifications.Title" = "Mitteilungen";
"Scene.Settings.Overview.AboutMastodon" = "About Mastodon"; "Scene.Settings.Overview.AboutMastodon" = "Über Mastodon";
"Scene.Settings.Overview.General" = "General"; "Scene.Settings.Overview.General" = "Allgemein";
"Scene.Settings.Overview.Logout" = "Logout %@"; "Scene.Settings.Overview.Logout" = "%@ abmelden";
"Scene.Settings.Overview.Notifications" = "Notifications"; "Scene.Settings.Overview.Notifications" = "Benachrichtigungen";
"Scene.Settings.Overview.ServerDetails" = "Server Details"; "Scene.Settings.Overview.ServerDetails" = "Serverdetails";
"Scene.Settings.Overview.SupportMastodon" = "Mastodon unterstützen"; "Scene.Settings.Overview.SupportMastodon" = "Mastodon unterstützen";
"Scene.Settings.Overview.Title" = "Einstellungen"; "Scene.Settings.Overview.Title" = "Einstellungen";
"Scene.Settings.ServerDetails.About" = "Über"; "Scene.Settings.ServerDetails.About" = "Über";

View File

@ -70,9 +70,10 @@
"Common.Controls.Actions.UnblockDomain" = "Άρση αποκλεισμού %@"; "Common.Controls.Actions.UnblockDomain" = "Άρση αποκλεισμού %@";
"Common.Controls.Actions.Unfollow" = "Κατάργηση ακολούθησης του %@"; "Common.Controls.Actions.Unfollow" = "Κατάργηση ακολούθησης του %@";
"Common.Controls.Friendship.Block" = "Αποκλεισμός"; "Common.Controls.Friendship.Block" = "Αποκλεισμός";
"Common.Controls.Friendship.BlockDomain" = "Αποκλεισμός %@"; "Common.Controls.Friendship.BlockDomain" = "Αποκλεισμός τομέα %@";
"Common.Controls.Friendship.BlockUser" = "Αποκλεισμός %@"; "Common.Controls.Friendship.BlockUser" = "Αποκλεισμός %@";
"Common.Controls.Friendship.Blocked" = "Αποκλείστηκε"; "Common.Controls.Friendship.Blocked" = "Αποκλείστηκε";
"Common.Controls.Friendship.DomainBlocked" = "Ο Τομέας αποκλείστηκε";
"Common.Controls.Friendship.EditInfo" = "Επεξεργασία Πληροφοριών"; "Common.Controls.Friendship.EditInfo" = "Επεξεργασία Πληροφοριών";
"Common.Controls.Friendship.Follow" = "Ακολούθησε"; "Common.Controls.Friendship.Follow" = "Ακολούθησε";
"Common.Controls.Friendship.Following" = "Ακολουθείς"; "Common.Controls.Friendship.Following" = "Ακολουθείς";
@ -334,6 +335,8 @@
"Scene.Profile.Fields.Verified.Long" = "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε στις %@"; "Scene.Profile.Fields.Verified.Long" = "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε στις %@";
"Scene.Profile.Fields.Verified.Short" = "Επαληθεύτηκε στις %@"; "Scene.Profile.Fields.Verified.Short" = "Επαληθεύτηκε στις %@";
"Scene.Profile.Header.FollowsYou" = "Σε Ακολουθεί"; "Scene.Profile.Header.FollowsYou" = "Σε Ακολουθεί";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Message" = "Επιβεβαίωση αποκλεισμού τομέα %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockDomain.Title" = "Αποκλεισμός τομέα";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Επιβεβαίωση αποκλεισμού %@"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Επιβεβαίωση αποκλεισμού %@";
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Αποκλεισμός Λογαριασμού"; "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Αποκλεισμός Λογαριασμού";
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Επιβεβαίωση απόκρυψης αναδημοσιεύσεων"; "Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Επιβεβαίωση απόκρυψης αναδημοσιεύσεων";
@ -342,6 +345,8 @@
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Σίγαση Λογαριασμού"; "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Σίγαση Λογαριασμού";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Επιβεβαίωση εμφάνισης αναδημοσιεύσεων"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Επιβεβαίωση εμφάνισης αναδημοσιεύσεων";
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Εμφάνιση Αναδημοσιεύσεων"; "Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Εμφάνιση Αναδημοσιεύσεων";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Message" = "Επιβεβαίωση άρσης αποκλεισμού τομέα %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockDomain.Title" = "Άρση αποκλεισμού τομέα";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Επιβεβαίωση άρσης αποκλεισμού %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Επιβεβαίωση άρσης αποκλεισμού %@";
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Άρση Αποκλεισμού Λογαριασμού"; "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Άρση Αποκλεισμού Λογαριασμού";
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Επιβεβαίωσε για άρση σίγασης %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Επιβεβαίωσε για άρση σίγασης %@";
@ -443,8 +448,8 @@
"Scene.Search.Searching.ClearAll" = "Εκκαθάριση όλων"; "Scene.Search.Searching.ClearAll" = "Εκκαθάριση όλων";
"Scene.Search.Searching.EmptyState.NoResults" = "Κανένα αποτέλεσμα"; "Scene.Search.Searching.EmptyState.NoResults" = "Κανένα αποτέλεσμα";
"Scene.Search.Searching.Hashtag" = "Μετάβαση στο #%@"; "Scene.Search.Searching.Hashtag" = "Μετάβαση στο #%@";
"Scene.Search.Searching.NoUser.Message" = "There's no Useraccount \"%@\" on %@"; "Scene.Search.Searching.NoUser.Message" = "Δεν υπάρχει λογαριασμός χρήστη \"%@\" στο %@";
"Scene.Search.Searching.NoUser.Title" = "No User Account Found"; "Scene.Search.Searching.NoUser.Title" = "Δεν Βρέθηκε Λογαριασμός Χρήστη";
"Scene.Search.Searching.People" = "Άτομα που ταιριάζουν με «%@»"; "Scene.Search.Searching.People" = "Άτομα που ταιριάζουν με «%@»";
"Scene.Search.Searching.Posts" = "Αναρτήσεις που ταιριάζουν με «%@»"; "Scene.Search.Searching.Posts" = "Αναρτήσεις που ταιριάζουν με «%@»";
"Scene.Search.Searching.Profile" = "Μετάβαση στο @%@@%@"; "Scene.Search.Searching.Profile" = "Μετάβαση στο @%@@%@";
@ -489,45 +494,45 @@
"Scene.ServerRules.Subtitle" = "Αυτά ορίζονται και επιβάλλονται από τους συντονιστές %@."; "Scene.ServerRules.Subtitle" = "Αυτά ορίζονται και επιβάλλονται από τους συντονιστές %@.";
"Scene.ServerRules.TermsOfService" = "όροι υπηρεσίας"; "Scene.ServerRules.TermsOfService" = "όροι υπηρεσίας";
"Scene.ServerRules.Title" = "Ορισμένοι βασικοί κανόνες."; "Scene.ServerRules.Title" = "Ορισμένοι βασικοί κανόνες.";
"Scene.Settings.AboutMastodon.ClearMediaStorage" = "Clear Media Storage"; "Scene.Settings.AboutMastodon.ClearMediaStorage" = "Εκκαθάριση Χώρου Αποθήκευσης Πολυμέσων";
"Scene.Settings.AboutMastodon.ContributeToMastodon" = "Contribute to Mastodon"; "Scene.Settings.AboutMastodon.ContributeToMastodon" = "Συνείσφερε στο Mastodon";
"Scene.Settings.AboutMastodon.MoreSettings" = "Even More Settings"; "Scene.Settings.AboutMastodon.MoreSettings" = "Ακόμα Περισσότερες Ρυθμίσεις";
"Scene.Settings.AboutMastodon.PrivacyPolicy" = "Privacy Policy"; "Scene.Settings.AboutMastodon.PrivacyPolicy" = "Πολιτική Απορρήτου";
"Scene.Settings.AboutMastodon.Title" = "About"; "Scene.Settings.AboutMastodon.Title" = "Σχετικά";
"Scene.Settings.General.Appearance.Dark" = "Dark"; "Scene.Settings.General.Appearance.Dark" = "Σκοτεινό";
"Scene.Settings.General.Appearance.Light" = "Light"; "Scene.Settings.General.Appearance.Light" = "Φωτεινό";
"Scene.Settings.General.Appearance.SectionTitle" = "Appearance"; "Scene.Settings.General.Appearance.SectionTitle" = "Εμφάνιση";
"Scene.Settings.General.Appearance.System" = "Use Device Appearance"; "Scene.Settings.General.Appearance.System" = "Χρήση Εμφάνισης Συσκευής";
"Scene.Settings.General.Design.SectionTitle" = "Design"; "Scene.Settings.General.Design.SectionTitle" = "Σχεδίαση";
"Scene.Settings.General.Design.ShowAnimations" = "Play Animated Avatars and Emoji"; "Scene.Settings.General.Design.ShowAnimations" = "Αναπαραγωγή κινούμενων Avatars και Emoji";
"Scene.Settings.General.Links.OpenInBrowser" = "Open in Browser"; "Scene.Settings.General.Links.OpenInBrowser" = "Άνοιγμα στον Περιηγητή";
"Scene.Settings.General.Links.OpenInMastodon" = "Open in Mastodon"; "Scene.Settings.General.Links.OpenInMastodon" = "Άνοιγμα στο Mastodon";
"Scene.Settings.General.Links.SectionTitle" = "Links"; "Scene.Settings.General.Links.SectionTitle" = "Σύνδεσμοι";
"Scene.Settings.General.Title" = "General"; "Scene.Settings.General.Title" = "Γενικά";
"Scene.Settings.Notifications.Alert.Boosts" = "Boosts"; "Scene.Settings.Notifications.Alert.Boosts" = "Ενισχύσεις";
"Scene.Settings.Notifications.Alert.Favorites" = "Favorites"; "Scene.Settings.Notifications.Alert.Favorites" = "Αγαπημένα";
"Scene.Settings.Notifications.Alert.MentionsAndReplies" = "Mentions & Replies"; "Scene.Settings.Notifications.Alert.MentionsAndReplies" = "Αναφορές & Απαντήσεις";
"Scene.Settings.Notifications.Alert.NewFollowers" = "New Followers"; "Scene.Settings.Notifications.Alert.NewFollowers" = "Νέοι Ακόλουθοι";
"Scene.Settings.Notifications.Disabled.GoToSettings" = "Go to Notification Settings"; "Scene.Settings.Notifications.Disabled.GoToSettings" = "Μετάβαση στις Ρυθμίσεις Ειδοποιήσεων";
"Scene.Settings.Notifications.Disabled.NotificationHint" = "Turn on notifications from your device settings to see updates on your lock screen."; "Scene.Settings.Notifications.Disabled.NotificationHint" = "Ενεργοποίησε τις ειδοποιήσεις από τις ρυθμίσεις της συσκευής σου για να βλέπεις ενημερώσεις στην οθόνη κλειδώματος.";
"Scene.Settings.Notifications.Policy.Anyone" = "Anyone"; "Scene.Settings.Notifications.Policy.Anyone" = "Οποιοσδήποτε";
"Scene.Settings.Notifications.Policy.Follow" = "People you follow"; "Scene.Settings.Notifications.Policy.Follow" = "Άτομα που ακολουθείς";
"Scene.Settings.Notifications.Policy.Followers" = "People who follow you"; "Scene.Settings.Notifications.Policy.Followers" = "Άτομα που σε ακολουθούν";
"Scene.Settings.Notifications.Policy.Noone" = "No one"; "Scene.Settings.Notifications.Policy.Noone" = "Κανένας";
"Scene.Settings.Notifications.Policy.Title" = "Get Notifications from"; "Scene.Settings.Notifications.Policy.Title" = "Λήψη Ειδοποιήσεων από";
"Scene.Settings.Notifications.Title" = "Notifications"; "Scene.Settings.Notifications.Title" = "Ειδοποιήσεις";
"Scene.Settings.Overview.AboutMastodon" = "About Mastodon"; "Scene.Settings.Overview.AboutMastodon" = "Σχετικά με το Mastodon";
"Scene.Settings.Overview.General" = "General"; "Scene.Settings.Overview.General" = "Γενικά";
"Scene.Settings.Overview.Logout" = "Logout %@"; "Scene.Settings.Overview.Logout" = "Αποσύνδεση %@";
"Scene.Settings.Overview.Notifications" = "Notifications"; "Scene.Settings.Overview.Notifications" = "Ειδοποιήσεις";
"Scene.Settings.Overview.ServerDetails" = "Server Details"; "Scene.Settings.Overview.ServerDetails" = "Λεπτομέρειες Διακομιστή";
"Scene.Settings.Overview.SupportMastodon" = "Support Mastodon"; "Scene.Settings.Overview.SupportMastodon" = "Υποστήριξε το Mastodon";
"Scene.Settings.Overview.Title" = "Settings"; "Scene.Settings.Overview.Title" = "Ρυθμίσεις";
"Scene.Settings.ServerDetails.About" = "About"; "Scene.Settings.ServerDetails.About" = "Σχετικά";
"Scene.Settings.ServerDetails.AboutInstance.LegalNotice" = "A legal notice"; "Scene.Settings.ServerDetails.AboutInstance.LegalNotice" = "Μια νομική ειδοποίηση";
"Scene.Settings.ServerDetails.AboutInstance.MessageAdmin" = "Message Admin"; "Scene.Settings.ServerDetails.AboutInstance.MessageAdmin" = "Στείλε μήνυμα σε διαχειριστή";
"Scene.Settings.ServerDetails.AboutInstance.Title" = "Administrator"; "Scene.Settings.ServerDetails.AboutInstance.Title" = "Διαχειριστής";
"Scene.Settings.ServerDetails.Rules" = "Rules"; "Scene.Settings.ServerDetails.Rules" = "Κανόνες";
"Scene.SuggestionAccount.FollowAll" = "Ακολούθησε τους όλους"; "Scene.SuggestionAccount.FollowAll" = "Ακολούθησε τους όλους";
"Scene.SuggestionAccount.Title" = "Δημοφιλή στο Mastodon"; "Scene.SuggestionAccount.Title" = "Δημοφιλή στο Mastodon";
"Scene.Thread.BackTitle" = "Ανάρτηση"; "Scene.Thread.BackTitle" = "Ανάρτηση";

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