mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
feat: improve the i18n workflow
This commit is contained in:
parent
33383de85d
commit
220fd6ae02
@ -47,6 +47,7 @@ private func convert(from inputDirectoryURL: URL, to outputDirectory: URL) {
|
||||
|
||||
private func map(language: String) -> String? {
|
||||
switch language {
|
||||
case "Base.lproj": return "Base"
|
||||
case "ar.lproj": return "ar" // Arabic
|
||||
case "eu.lproj": return "eu" // Basque
|
||||
case "ca.lproj": return "ca" // Catalan
|
||||
|
@ -0,0 +1,631 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>no unread notification</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notifications</string>
|
||||
<key>many</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>Input limit exceeds %#@character_count@</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 characters</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_remains</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>Input limit remains %#@character_count@</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 characters</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.characters_left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@character_count@ left</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>no characters</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.followed_by_and_mutual</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@names@%#@count_mutual@</string>
|
||||
<key>names</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
<key>count_mutual</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>Followed by %1$@</string>
|
||||
<key>one</key>
|
||||
<string>Followed by %1$@, and another mutual</string>
|
||||
<key>few</key>
|
||||
<string>Followed by %1$@, and %ld mutuals</string>
|
||||
<key>many</key>
|
||||
<string>Followed by %1$@, and %ld mutuals</string>
|
||||
<key>other</key>
|
||||
<string>Followed by %1$@, and %ld mutuals</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.metric_formatted.post</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%@ %#@post_count@</string>
|
||||
<key>post_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>posts</string>
|
||||
<key>one</key>
|
||||
<string>post</string>
|
||||
<key>few</key>
|
||||
<string>posts</string>
|
||||
<key>many</key>
|
||||
<string>posts</string>
|
||||
<key>other</key>
|
||||
<string>posts</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.media</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@media_count@</string>
|
||||
<key>media_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 media</string>
|
||||
<key>one</key>
|
||||
<string>1 media</string>
|
||||
<key>few</key>
|
||||
<string>%ld media</string>
|
||||
<key>many</key>
|
||||
<string>%ld media</string>
|
||||
<key>other</key>
|
||||
<string>%ld media</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.post</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@post_count@</string>
|
||||
<key>post_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 posts</string>
|
||||
<key>one</key>
|
||||
<string>1 post</string>
|
||||
<key>few</key>
|
||||
<string>%ld posts</string>
|
||||
<key>many</key>
|
||||
<string>%ld posts</string>
|
||||
<key>other</key>
|
||||
<string>%ld posts</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.favorite</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@favorite_count@</string>
|
||||
<key>favorite_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 favorites</string>
|
||||
<key>one</key>
|
||||
<string>1 favorite</string>
|
||||
<key>few</key>
|
||||
<string>%ld favorites</string>
|
||||
<key>many</key>
|
||||
<string>%ld favorites</string>
|
||||
<key>other</key>
|
||||
<string>%ld favorites</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.reblog</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@reblog_count@</string>
|
||||
<key>reblog_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 reblogs</string>
|
||||
<key>one</key>
|
||||
<string>1 reblog</string>
|
||||
<key>few</key>
|
||||
<string>%ld reblogs</string>
|
||||
<key>many</key>
|
||||
<string>%ld reblogs</string>
|
||||
<key>other</key>
|
||||
<string>%ld reblogs</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.reply</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@reply_count@</string>
|
||||
<key>reply_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 replies</string>
|
||||
<key>one</key>
|
||||
<string>1 reply</string>
|
||||
<key>few</key>
|
||||
<string>%ld replies</string>
|
||||
<key>many</key>
|
||||
<string>%ld replies</string>
|
||||
<key>other</key>
|
||||
<string>%ld replies</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.vote</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@vote_count@</string>
|
||||
<key>vote_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 votes</string>
|
||||
<key>one</key>
|
||||
<string>1 vote</string>
|
||||
<key>few</key>
|
||||
<string>%ld votes</string>
|
||||
<key>many</key>
|
||||
<string>%ld votes</string>
|
||||
<key>other</key>
|
||||
<string>%ld votes</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.voter</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@voter_count@</string>
|
||||
<key>voter_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 voters</string>
|
||||
<key>one</key>
|
||||
<string>1 voter</string>
|
||||
<key>few</key>
|
||||
<string>%ld voters</string>
|
||||
<key>many</key>
|
||||
<string>%ld voters</string>
|
||||
<key>other</key>
|
||||
<string>%ld voters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.people_talking</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_people_talking@</string>
|
||||
<key>count_people_talking</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 people talking</string>
|
||||
<key>one</key>
|
||||
<string>1 people talking</string>
|
||||
<key>few</key>
|
||||
<string>%ld people talking</string>
|
||||
<key>many</key>
|
||||
<string>%ld people talking</string>
|
||||
<key>other</key>
|
||||
<string>%ld people talking</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.following</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_following@</string>
|
||||
<key>count_following</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 following</string>
|
||||
<key>one</key>
|
||||
<string>1 following</string>
|
||||
<key>few</key>
|
||||
<string>%ld following</string>
|
||||
<key>many</key>
|
||||
<string>%ld following</string>
|
||||
<key>other</key>
|
||||
<string>%ld following</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.follower</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_follower@</string>
|
||||
<key>count_follower</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 followers</string>
|
||||
<key>one</key>
|
||||
<string>1 follower</string>
|
||||
<key>few</key>
|
||||
<string>%ld followers</string>
|
||||
<key>many</key>
|
||||
<string>%ld followers</string>
|
||||
<key>other</key>
|
||||
<string>%ld followers</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.year.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_year_left@</string>
|
||||
<key>count_year_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 years left</string>
|
||||
<key>one</key>
|
||||
<string>1 year left</string>
|
||||
<key>few</key>
|
||||
<string>%ld years left</string>
|
||||
<key>many</key>
|
||||
<string>%ld years left</string>
|
||||
<key>other</key>
|
||||
<string>%ld years left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.month.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_month_left@</string>
|
||||
<key>count_month_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 months left</string>
|
||||
<key>one</key>
|
||||
<string>1 months left</string>
|
||||
<key>few</key>
|
||||
<string>%ld months left</string>
|
||||
<key>many</key>
|
||||
<string>%ld months left</string>
|
||||
<key>other</key>
|
||||
<string>%ld months left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.day.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_day_left@</string>
|
||||
<key>count_day_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 days left</string>
|
||||
<key>one</key>
|
||||
<string>1 day left</string>
|
||||
<key>few</key>
|
||||
<string>%ld days left</string>
|
||||
<key>many</key>
|
||||
<string>%ld days left</string>
|
||||
<key>other</key>
|
||||
<string>%ld days left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.hour.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_hour_left@</string>
|
||||
<key>count_hour_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 hours left</string>
|
||||
<key>one</key>
|
||||
<string>1 hour left</string>
|
||||
<key>few</key>
|
||||
<string>%ld hours left</string>
|
||||
<key>many</key>
|
||||
<string>%ld hours left</string>
|
||||
<key>other</key>
|
||||
<string>%ld hours left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.minute.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_minute_left@</string>
|
||||
<key>count_minute_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 minutes left</string>
|
||||
<key>one</key>
|
||||
<string>1 minute left</string>
|
||||
<key>few</key>
|
||||
<string>%ld minutes left</string>
|
||||
<key>many</key>
|
||||
<string>%ld minutes left</string>
|
||||
<key>other</key>
|
||||
<string>%ld minutes left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.second.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_second_left@</string>
|
||||
<key>count_second_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 seconds left</string>
|
||||
<key>one</key>
|
||||
<string>1 second left</string>
|
||||
<key>few</key>
|
||||
<string>%ld seconds left</string>
|
||||
<key>many</key>
|
||||
<string>%ld seconds left</string>
|
||||
<key>other</key>
|
||||
<string>%ld seconds left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.year.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_year_ago_abbr@</string>
|
||||
<key>count_year_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0y ago</string>
|
||||
<key>one</key>
|
||||
<string>1y ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldy ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldy ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldy ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.month.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_month_ago_abbr@</string>
|
||||
<key>count_month_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0M ago</string>
|
||||
<key>one</key>
|
||||
<string>1M ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldM ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldM ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldM ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.day.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_day_ago_abbr@</string>
|
||||
<key>count_day_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0d ago</string>
|
||||
<key>one</key>
|
||||
<string>1d ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldd ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldd ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldd ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.hour.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_hour_ago_abbr@</string>
|
||||
<key>count_hour_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0h ago</string>
|
||||
<key>one</key>
|
||||
<string>1h ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldh ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldh ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldh ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.minute.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_minute_ago_abbr@</string>
|
||||
<key>count_minute_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0m ago</string>
|
||||
<key>one</key>
|
||||
<string>1m ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldm ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldm ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldm ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.second.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_second_ago_abbr@</string>
|
||||
<key>count_second_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0s ago</string>
|
||||
<key>one</key>
|
||||
<string>1s ago</string>
|
||||
<key>few</key>
|
||||
<string>%lds ago</string>
|
||||
<key>many</key>
|
||||
<string>%lds ago</string>
|
||||
<key>other</key>
|
||||
<string>%lds ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
718
Localization/StringsConvertor/input/Base.lproj/app.json
Normal file
718
Localization/StringsConvertor/input/Base.lproj/app.json
Normal file
@ -0,0 +1,718 @@
|
||||
{
|
||||
"common": {
|
||||
"alerts": {
|
||||
"common": {
|
||||
"please_try_again": "Please try again.",
|
||||
"please_try_again_later": "Please try again later."
|
||||
},
|
||||
"sign_up_failure": {
|
||||
"title": "Sign Up Failure"
|
||||
},
|
||||
"server_error": {
|
||||
"title": "Server Error"
|
||||
},
|
||||
"vote_failure": {
|
||||
"title": "Vote Failure",
|
||||
"poll_ended": "The poll has ended"
|
||||
},
|
||||
"discard_post_content": {
|
||||
"title": "Discard Draft",
|
||||
"message": "Confirm to discard composed post content."
|
||||
},
|
||||
"publish_post_failure": {
|
||||
"title": "Publish Failure",
|
||||
"message": "Failed to publish the post.\nPlease check your internet connection.",
|
||||
"attachments_message": {
|
||||
"video_attach_with_photo": "Cannot attach a video to a post that already contains images.",
|
||||
"more_than_one_video": "Cannot attach more than one video."
|
||||
}
|
||||
},
|
||||
"edit_profile_failure": {
|
||||
"title": "Edit Profile Error",
|
||||
"message": "Cannot edit profile. Please try again."
|
||||
},
|
||||
"sign_out": {
|
||||
"title": "Sign Out",
|
||||
"message": "Are you sure you want to sign out?",
|
||||
"confirm": "Sign Out"
|
||||
},
|
||||
"block_domain": {
|
||||
"title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.",
|
||||
"block_entire_domain": "Block Domain"
|
||||
},
|
||||
"save_photo_failure": {
|
||||
"title": "Save Photo Failure",
|
||||
"message": "Please enable the photo library access permission to save the photo."
|
||||
},
|
||||
"delete_post": {
|
||||
"title": "Delete Post",
|
||||
"message": "Are you sure you want to delete this post?"
|
||||
},
|
||||
"clean_cache": {
|
||||
"title": "Clean Cache",
|
||||
"message": "Successfully cleaned %s cache."
|
||||
}
|
||||
},
|
||||
"controls": {
|
||||
"actions": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"previous": "Previous",
|
||||
"open": "Open",
|
||||
"add": "Add",
|
||||
"remove": "Remove",
|
||||
"edit": "Edit",
|
||||
"save": "Save",
|
||||
"ok": "OK",
|
||||
"done": "Done",
|
||||
"confirm": "Confirm",
|
||||
"continue": "Continue",
|
||||
"compose": "Compose",
|
||||
"cancel": "Cancel",
|
||||
"discard": "Discard",
|
||||
"try_again": "Try Again",
|
||||
"take_photo": "Take Photo",
|
||||
"save_photo": "Save Photo",
|
||||
"copy_photo": "Copy Photo",
|
||||
"sign_in": "Sign In",
|
||||
"sign_up": "Sign Up",
|
||||
"see_more": "See More",
|
||||
"preview": "Preview",
|
||||
"share": "Share",
|
||||
"share_user": "Share %s",
|
||||
"share_post": "Share Post",
|
||||
"open_in_safari": "Open in Safari",
|
||||
"open_in_browser": "Open in Browser",
|
||||
"find_people": "Find people to follow",
|
||||
"manually_search": "Manually search instead",
|
||||
"skip": "Skip",
|
||||
"reply": "Reply",
|
||||
"report_user": "Report %s",
|
||||
"block_domain": "Block %s",
|
||||
"unblock_domain": "Unblock %s",
|
||||
"settings": "Settings",
|
||||
"delete": "Delete"
|
||||
},
|
||||
"tabs": {
|
||||
"home": "Home",
|
||||
"search": "Search",
|
||||
"notification": "Notification",
|
||||
"profile": "Profile"
|
||||
},
|
||||
"keyboard": {
|
||||
"common": {
|
||||
"switch_to_tab": "Switch to %s",
|
||||
"compose_new_post": "Compose New Post",
|
||||
"show_favorites": "Show Favorites",
|
||||
"open_settings": "Open Settings"
|
||||
},
|
||||
"timeline": {
|
||||
"previous_status": "Previous Post",
|
||||
"next_status": "Next Post",
|
||||
"open_status": "Open Post",
|
||||
"open_author_profile": "Open Author's Profile",
|
||||
"open_reblogger_profile": "Open Reblogger's Profile",
|
||||
"reply_status": "Reply to Post",
|
||||
"toggle_reblog": "Toggle Reblog on Post",
|
||||
"toggle_favorite": "Toggle Favorite on Post",
|
||||
"toggle_content_warning": "Toggle Content Warning",
|
||||
"preview_image": "Preview Image"
|
||||
},
|
||||
"segmented_control": {
|
||||
"previous_section": "Previous Section",
|
||||
"next_section": "Next Section"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"user_reblogged": "%s reblogged",
|
||||
"user_replied_to": "Replied to %s",
|
||||
"show_post": "Show Post",
|
||||
"show_user_profile": "Show user profile",
|
||||
"content_warning": "Content Warning",
|
||||
"sensitive_content": "Sensitive Content",
|
||||
"media_content_warning": "Tap anywhere to reveal",
|
||||
"tap_to_reveal": "Tap to reveal",
|
||||
"poll": {
|
||||
"vote": "Vote",
|
||||
"closed": "Closed"
|
||||
},
|
||||
"meta_entity": {
|
||||
"url": "Link: %s",
|
||||
"hashtag": "Hashtag: %s",
|
||||
"mention": "Show Profile: %s",
|
||||
"email": "Email address: %s"
|
||||
},
|
||||
"actions": {
|
||||
"reply": "Reply",
|
||||
"reblog": "Reblog",
|
||||
"unreblog": "Undo reblog",
|
||||
"favorite": "Favorite",
|
||||
"unfavorite": "Unfavorite",
|
||||
"menu": "Menu",
|
||||
"hide": "Hide",
|
||||
"show_image": "Show image",
|
||||
"show_gif": "Show GIF",
|
||||
"show_video_player": "Show video player",
|
||||
"tap_then_hold_to_show_menu": "Tap then hold to show menu"
|
||||
},
|
||||
"tag": {
|
||||
"url": "URL",
|
||||
"mention": "Mention",
|
||||
"link": "Link",
|
||||
"hashtag": "Hashtag",
|
||||
"email": "Email",
|
||||
"emoji": "Emoji"
|
||||
},
|
||||
"visibility": {
|
||||
"unlisted": "Everyone can see this post but not display in the public timeline.",
|
||||
"private": "Only their followers can see this post.",
|
||||
"private_from_me": "Only my followers can see this post.",
|
||||
"direct": "Only mentioned user can see this post."
|
||||
}
|
||||
},
|
||||
"friendship": {
|
||||
"follow": "Follow",
|
||||
"following": "Following",
|
||||
"request": "Request",
|
||||
"pending": "Pending",
|
||||
"block": "Block",
|
||||
"block_user": "Block %s",
|
||||
"block_domain": "Block %s",
|
||||
"unblock": "Unblock",
|
||||
"unblock_user": "Unblock %s",
|
||||
"blocked": "Blocked",
|
||||
"mute": "Mute",
|
||||
"mute_user": "Mute %s",
|
||||
"unmute": "Unmute",
|
||||
"unmute_user": "Unmute %s",
|
||||
"muted": "Muted",
|
||||
"edit_info": "Edit Info",
|
||||
"show_reblogs": "Show Reblogs",
|
||||
"hide_reblogs": "Hide Reblogs"
|
||||
},
|
||||
"timeline": {
|
||||
"filtered": "Filtered",
|
||||
"timestamp": {
|
||||
"now": "Now"
|
||||
},
|
||||
"loader": {
|
||||
"load_missing_posts": "Load missing posts",
|
||||
"loading_missing_posts": "Loading missing posts...",
|
||||
"show_more_replies": "Show more replies"
|
||||
},
|
||||
"header": {
|
||||
"no_status_found": "No Post Found",
|
||||
"blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.",
|
||||
"user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.",
|
||||
"blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.",
|
||||
"user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.",
|
||||
"suspended_warning": "This user has been suspended.",
|
||||
"user_suspended_warning": "%s’s account has been suspended."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"scene": {
|
||||
"welcome": {
|
||||
"slogan": "Social networking\nback in your hands.",
|
||||
"get_started": "Get Started",
|
||||
"log_in": "Log In"
|
||||
},
|
||||
"server_picker": {
|
||||
"title": "Mastodon is made of users in different servers.",
|
||||
"subtitle": "Pick a server based on your interests, region, or a general purpose one.",
|
||||
"subtitle_extend": "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.",
|
||||
"button": {
|
||||
"category": {
|
||||
"all": "All",
|
||||
"all_accessiblity_description": "Category: All",
|
||||
"academia": "academia",
|
||||
"activism": "activism",
|
||||
"food": "food",
|
||||
"furry": "furry",
|
||||
"games": "games",
|
||||
"general": "general",
|
||||
"journalism": "journalism",
|
||||
"lgbt": "lgbt",
|
||||
"regional": "regional",
|
||||
"art": "art",
|
||||
"music": "music",
|
||||
"tech": "tech"
|
||||
},
|
||||
"see_less": "See Less",
|
||||
"see_more": "See More"
|
||||
},
|
||||
"label": {
|
||||
"language": "LANGUAGE",
|
||||
"users": "USERS",
|
||||
"category": "CATEGORY"
|
||||
},
|
||||
"input": {
|
||||
"placeholder": "Search servers",
|
||||
"search_servers_or_enter_url": "Search servers or enter URL"
|
||||
},
|
||||
"empty_state": {
|
||||
"finding_servers": "Finding available servers...",
|
||||
"bad_network": "Something went wrong while loading the data. Check your internet connection.",
|
||||
"no_results": "No results"
|
||||
}
|
||||
},
|
||||
"register": {
|
||||
"title": "Let’s get you set up on %s",
|
||||
"lets_get_you_set_up_on_domain": "Let’s get you set up on %s",
|
||||
"input": {
|
||||
"avatar": {
|
||||
"delete": "Delete"
|
||||
},
|
||||
"username": {
|
||||
"placeholder": "username",
|
||||
"duplicate_prompt": "This username is taken."
|
||||
},
|
||||
"display_name": {
|
||||
"placeholder": "display name"
|
||||
},
|
||||
"email": {
|
||||
"placeholder": "email"
|
||||
},
|
||||
"password": {
|
||||
"placeholder": "password",
|
||||
"require": "Your password needs at least:",
|
||||
"character_limit": "8 characters",
|
||||
"accessibility": {
|
||||
"checked": "checked",
|
||||
"unchecked": "unchecked"
|
||||
},
|
||||
"hint": "Your password needs at least eight characters"
|
||||
},
|
||||
"invite": {
|
||||
"registration_user_invite_request": "Why do you want to join?"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
"item": {
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
"password": "Password",
|
||||
"agreement": "Agreement",
|
||||
"locale": "Locale",
|
||||
"reason": "Reason"
|
||||
},
|
||||
"reason": {
|
||||
"blocked": "%s contains a disallowed email provider",
|
||||
"unreachable": "%s does not seem to exist",
|
||||
"taken": "%s is already in use",
|
||||
"reserved": "%s is a reserved keyword",
|
||||
"accepted": "%s must be accepted",
|
||||
"blank": "%s is required",
|
||||
"invalid": "%s is invalid",
|
||||
"too_long": "%s is too long",
|
||||
"too_short": "%s is too short",
|
||||
"inclusion": "%s is not a supported value"
|
||||
},
|
||||
"special": {
|
||||
"username_invalid": "Username must only contain alphanumeric characters and underscores",
|
||||
"username_too_long": "Username is too long (can’t be longer than 30 characters)",
|
||||
"email_invalid": "This is not a valid email address",
|
||||
"password_too_short": "Password is too short (must be at least 8 characters)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"server_rules": {
|
||||
"title": "Some ground rules.",
|
||||
"subtitle": "These are set and enforced by the %s moderators.",
|
||||
"prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.",
|
||||
"terms_of_service": "terms of service",
|
||||
"privacy_policy": "privacy policy",
|
||||
"button": {
|
||||
"confirm": "I Agree"
|
||||
}
|
||||
},
|
||||
"confirm_email": {
|
||||
"title": "One last thing.",
|
||||
"subtitle": "Tap the link we emailed to you to verify your account.",
|
||||
"tap_the_link_we_emailed_to_you_to_verify_your_account": "Tap the link we emailed to you to verify your account",
|
||||
"button": {
|
||||
"open_email_app": "Open Email App",
|
||||
"resend": "Resend"
|
||||
},
|
||||
"dont_receive_email": {
|
||||
"title": "Check your email",
|
||||
"description": "Check if your email address is correct as well as your junk folder if you haven’t.",
|
||||
"resend_email": "Resend Email"
|
||||
},
|
||||
"open_email_app": {
|
||||
"title": "Check your inbox.",
|
||||
"description": "We just sent you an email. Check your junk folder if you haven’t.",
|
||||
"mail": "Mail",
|
||||
"open_email_client": "Open Email Client"
|
||||
}
|
||||
},
|
||||
"home_timeline": {
|
||||
"title": "Home",
|
||||
"navigation_bar_state": {
|
||||
"offline": "Offline",
|
||||
"new_posts": "See new posts",
|
||||
"published": "Published!",
|
||||
"Publishing": "Publishing post...",
|
||||
"accessibility": {
|
||||
"logo_label": "Logo Button",
|
||||
"logo_hint": "Tap to scroll to top and tap again to previous location"
|
||||
}
|
||||
}
|
||||
},
|
||||
"suggestion_account": {
|
||||
"title": "Find People to Follow",
|
||||
"follow_explain": "When you follow someone, you’ll see their posts in your home feed."
|
||||
},
|
||||
"compose": {
|
||||
"title": {
|
||||
"new_post": "New Post",
|
||||
"new_reply": "New Reply"
|
||||
},
|
||||
"media_selection": {
|
||||
"camera": "Take Photo",
|
||||
"photo_library": "Photo Library",
|
||||
"browse": "Browse"
|
||||
},
|
||||
"content_input_placeholder": "Type or paste what’s on your mind",
|
||||
"compose_action": "Publish",
|
||||
"replying_to_user": "replying to %s",
|
||||
"attachment": {
|
||||
"photo": "photo",
|
||||
"video": "video",
|
||||
"attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.",
|
||||
"description_photo": "Describe the photo for the visually-impaired...",
|
||||
"description_video": "Describe the video for the visually-impaired...",
|
||||
"load_failed": "Load Failed",
|
||||
"upload_failed": "Upload Failed",
|
||||
"can_not_recognize_this_media_attachment": "Can not recognize this media attachment",
|
||||
"attachment_too_large": "Attachment too large",
|
||||
"compressing_state": "Compressing...",
|
||||
"server_processing_state": "Server Processing..."
|
||||
},
|
||||
"poll": {
|
||||
"duration_time": "Duration: %s",
|
||||
"thirty_minutes": "30 minutes",
|
||||
"one_hour": "1 Hour",
|
||||
"six_hours": "6 Hours",
|
||||
"one_day": "1 Day",
|
||||
"three_days": "3 Days",
|
||||
"seven_days": "7 Days",
|
||||
"option_number": "Option %ld",
|
||||
"the_poll_is_invalid": "The poll is invalid",
|
||||
"the_poll_has_empty_option": "The poll has empty option"
|
||||
},
|
||||
"content_warning": {
|
||||
"placeholder": "Write an accurate warning here..."
|
||||
},
|
||||
"visibility": {
|
||||
"public": "Public",
|
||||
"unlisted": "Unlisted",
|
||||
"private": "Followers only",
|
||||
"direct": "Only people I mention"
|
||||
},
|
||||
"auto_complete": {
|
||||
"space_to_add": "Space to add"
|
||||
},
|
||||
"accessibility": {
|
||||
"append_attachment": "Add Attachment",
|
||||
"append_poll": "Add Poll",
|
||||
"remove_poll": "Remove Poll",
|
||||
"custom_emoji_picker": "Custom Emoji Picker",
|
||||
"enable_content_warning": "Enable Content Warning",
|
||||
"disable_content_warning": "Disable Content Warning",
|
||||
"post_visibility_menu": "Post Visibility Menu",
|
||||
"post_options": "Post Options",
|
||||
"posting_as": "Posting as %s"
|
||||
},
|
||||
"keyboard": {
|
||||
"discard_post": "Discard Post",
|
||||
"publish_post": "Publish Post",
|
||||
"toggle_poll": "Toggle Poll",
|
||||
"toggle_content_warning": "Toggle Content Warning",
|
||||
"append_attachment_entry": "Add Attachment - %s",
|
||||
"select_visibility_entry": "Select Visibility - %s"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"header": {
|
||||
"follows_you": "Follows You"
|
||||
},
|
||||
"dashboard": {
|
||||
"posts": "posts",
|
||||
"following": "following",
|
||||
"followers": "followers"
|
||||
},
|
||||
"fields": {
|
||||
"add_row": "Add Row",
|
||||
"placeholder": {
|
||||
"label": "Label",
|
||||
"content": "Content"
|
||||
}
|
||||
},
|
||||
"segmented_control": {
|
||||
"posts": "Posts",
|
||||
"replies": "Replies",
|
||||
"posts_and_replies": "Posts and Replies",
|
||||
"media": "Media",
|
||||
"about": "About"
|
||||
},
|
||||
"relationship_action_alert": {
|
||||
"confirm_mute_user": {
|
||||
"title": "Mute Account",
|
||||
"message": "Confirm to mute %s"
|
||||
},
|
||||
"confirm_unmute_user": {
|
||||
"title": "Unmute Account",
|
||||
"message": "Confirm to unmute %s"
|
||||
},
|
||||
"confirm_block_user": {
|
||||
"title": "Block Account",
|
||||
"message": "Confirm to block %s"
|
||||
},
|
||||
"confirm_unblock_user": {
|
||||
"title": "Unblock Account",
|
||||
"message": "Confirm to unblock %s"
|
||||
},
|
||||
"confirm_show_reblogs": {
|
||||
"title": "Show Reblogs",
|
||||
"message": "Confirm to show reblogs"
|
||||
},
|
||||
"confirm_hide_reblogs": {
|
||||
"title": "Hide Reblogs",
|
||||
"message": "Confirm to hide reblogs"
|
||||
}
|
||||
},
|
||||
"accessibility": {
|
||||
"show_avatar_image": "Show avatar image",
|
||||
"edit_avatar_image": "Edit avatar image",
|
||||
"show_banner_image": "Show banner image",
|
||||
"double_tap_to_open_the_list": "Double tap to open the list"
|
||||
}
|
||||
},
|
||||
"follower": {
|
||||
"title": "follower",
|
||||
"footer": "Followers from other servers are not displayed."
|
||||
},
|
||||
"following": {
|
||||
"title": "following",
|
||||
"footer": "Follows from other servers are not displayed."
|
||||
},
|
||||
"familiarFollowers": {
|
||||
"title": "Followers you familiar",
|
||||
"followed_by_names": "Followed by %s"
|
||||
},
|
||||
"favorited_by": {
|
||||
"title": "Favorited By"
|
||||
},
|
||||
"reblogged_by": {
|
||||
"title": "Reblogged By"
|
||||
},
|
||||
"search": {
|
||||
"title": "Search",
|
||||
"search_bar": {
|
||||
"placeholder": "Search hashtags and users",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"recommend": {
|
||||
"button_text": "See All",
|
||||
"hash_tag": {
|
||||
"title": "Trending on Mastodon",
|
||||
"description": "Hashtags that are getting quite a bit of attention",
|
||||
"people_talking": "%s people are talking"
|
||||
},
|
||||
"accounts": {
|
||||
"title": "Accounts you might like",
|
||||
"description": "You may like to follow these accounts",
|
||||
"follow": "Follow"
|
||||
}
|
||||
},
|
||||
"searching": {
|
||||
"segment": {
|
||||
"all": "All",
|
||||
"people": "People",
|
||||
"hashtags": "Hashtags",
|
||||
"posts": "Posts"
|
||||
},
|
||||
"empty_state": {
|
||||
"no_results": "No results"
|
||||
},
|
||||
"recent_search": "Recent searches",
|
||||
"clear": "Clear"
|
||||
}
|
||||
},
|
||||
"discovery": {
|
||||
"tabs": {
|
||||
"posts": "Posts",
|
||||
"hashtags": "Hashtags",
|
||||
"news": "News",
|
||||
"community": "Community",
|
||||
"for_you": "For You"
|
||||
},
|
||||
"intro": "These are the posts gaining traction in your corner of Mastodon."
|
||||
},
|
||||
"favorite": {
|
||||
"title": "Your Favorites"
|
||||
},
|
||||
"notification": {
|
||||
"title": {
|
||||
"Everything": "Everything",
|
||||
"Mentions": "Mentions"
|
||||
},
|
||||
"notification_description": {
|
||||
"followed_you": "followed you",
|
||||
"favorited_your_post": "favorited your post",
|
||||
"reblogged_your_post": "reblogged your post",
|
||||
"mentioned_you": "mentioned you",
|
||||
"request_to_follow_you": "request to follow you",
|
||||
"poll_has_ended": "poll has ended"
|
||||
},
|
||||
"keyobard": {
|
||||
"show_everything": "Show Everything",
|
||||
"show_mentions": "Show Mentions"
|
||||
},
|
||||
"follow_request": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"reject": "reject",
|
||||
"rejected": "Rejected"
|
||||
}
|
||||
},
|
||||
"thread": {
|
||||
"back_title": "Post",
|
||||
"title": "Post from %s"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
"section": {
|
||||
"appearance": {
|
||||
"title": "Appearance",
|
||||
"automatic": "Automatic",
|
||||
"light": "Always Light",
|
||||
"dark": "Always Dark"
|
||||
},
|
||||
"look_and_feel": {
|
||||
"title": "Look and Feel",
|
||||
"use_system": "Use System",
|
||||
"really_dark": "Really Dark",
|
||||
"sorta_dark": "Sorta Dark",
|
||||
"light": "Light"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Notifications",
|
||||
"favorites": "Favorites my post",
|
||||
"follows": "Follows me",
|
||||
"boosts": "Reblogs my post",
|
||||
"mentions": "Mentions me",
|
||||
"trigger": {
|
||||
"anyone": "anyone",
|
||||
"follower": "a follower",
|
||||
"follow": "anyone I follow",
|
||||
"noone": "no one",
|
||||
"title": "Notify me when"
|
||||
}
|
||||
},
|
||||
"preference": {
|
||||
"title": "Preferences",
|
||||
"true_black_dark_mode": "True black dark mode",
|
||||
"disable_avatar_animation": "Disable animated avatars",
|
||||
"disable_emoji_animation": "Disable animated emojis",
|
||||
"using_default_browser": "Use default browser to open links",
|
||||
"open_links_in_mastodon": "Open links in Mastodon"
|
||||
},
|
||||
"boring_zone": {
|
||||
"title": "The Boring Zone",
|
||||
"account_settings": "Account Settings",
|
||||
"terms": "Terms of Service",
|
||||
"privacy": "Privacy Policy"
|
||||
},
|
||||
"spicy_zone": {
|
||||
"title": "The Spicy Zone",
|
||||
"clear": "Clear Media Cache",
|
||||
"signout": "Sign Out"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)"
|
||||
},
|
||||
"keyboard": {
|
||||
"close_settings_window": "Close Settings Window"
|
||||
}
|
||||
},
|
||||
"report": {
|
||||
"title_report": "Report",
|
||||
"title": "Report %s",
|
||||
"step1": "Step 1 of 2",
|
||||
"step2": "Step 2 of 2",
|
||||
"content1": "Are there any other posts you’d like to add to the report?",
|
||||
"content2": "Is there anything the moderators should know about this report?",
|
||||
"report_sent_title": "Thanks for reporting, we’ll look into this.",
|
||||
"send": "Send Report",
|
||||
"skip_to_send": "Send without comment",
|
||||
"text_placeholder": "Type or paste additional comments",
|
||||
"reported": "REPORTED",
|
||||
"step_one": {
|
||||
"step_1_of_4": "Step 1 of 4",
|
||||
"whats_wrong_with_this_post": "What's wrong with this post?",
|
||||
"whats_wrong_with_this_account": "What's wrong with this account?",
|
||||
"whats_wrong_with_this_username": "What's wrong with %s?",
|
||||
"select_the_best_match": "Select the best match",
|
||||
"i_dont_like_it": "I don’t like it",
|
||||
"it_is_not_something_you_want_to_see": "It is not something you want to see",
|
||||
"its_spam": "It’s spam",
|
||||
"malicious_links_fake_engagement_or_repetetive_replies": "Malicious links, fake engagement, or repetetive replies",
|
||||
"it_violates_server_rules": "It violates server rules",
|
||||
"you_are_aware_that_it_breaks_specific_rules": "You are aware that it breaks specific rules",
|
||||
"its_something_else": "It’s something else",
|
||||
"the_issue_does_not_fit_into_other_categories": "The issue does not fit into other categories"
|
||||
},
|
||||
"step_two": {
|
||||
"step_2_of_4": "Step 2 of 4",
|
||||
"which_rules_are_being_violated": "Which rules are being violated?",
|
||||
"select_all_that_apply": "Select all that apply",
|
||||
"i_just_don’t_like_it": "I just don’t like it"
|
||||
},
|
||||
"step_three": {
|
||||
"step_3_of_4": "Step 3 of 4",
|
||||
"are_there_any_posts_that_back_up_this_report": "Are there any posts that back up this report?",
|
||||
"select_all_that_apply": "Select all that apply"
|
||||
},
|
||||
"step_four": {
|
||||
"step_4_of_4": "Step 4 of 4",
|
||||
"is_there_anything_else_we_should_know": "Is there anything else we should know?"
|
||||
},
|
||||
"step_final": {
|
||||
"dont_want_to_see_this": "Don’t 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 don’t like on Mastodon, you can remove the person from your experience.",
|
||||
"unfollow": "Unfollow",
|
||||
"unfollowed": "Unfollowed",
|
||||
"unfollow_user": "Unfollow %s",
|
||||
"mute_user": "Mute %s",
|
||||
"you_wont_see_their_posts_or_reblogs_in_your_home_feed_they_wont_know_they_ve_been_muted": "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.",
|
||||
"block_user": "Block %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 they’ve been blocked.",
|
||||
"while_we_review_this_you_can_take_action_against_user": "While we review this, you can take action against %s"
|
||||
}
|
||||
},
|
||||
"preview": {
|
||||
"keyboard": {
|
||||
"close_preview": "Close Preview",
|
||||
"show_next": "Show Next",
|
||||
"show_previous": "Show Previous"
|
||||
}
|
||||
},
|
||||
"account_list": {
|
||||
"tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher",
|
||||
"dismiss_account_switcher": "Dismiss Account Switcher",
|
||||
"add_account": "Add Account"
|
||||
},
|
||||
"wizard": {
|
||||
"new_in_mastodon": "New in Mastodon",
|
||||
"multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.",
|
||||
"accessibility_hint": "Double tap to dismiss this wizard"
|
||||
},
|
||||
"bookmark": {
|
||||
"title": "Bookmarks"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"NSCameraUsageDescription": "Used to take photo for post status",
|
||||
"NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library",
|
||||
"NewPostShortcutItemTitle": "New Post",
|
||||
"SearchShortcutItemTitle": "Search"
|
||||
}
|
@ -385,7 +385,7 @@
|
||||
"description_video": "Describe the video for the visually-impaired...",
|
||||
"load_failed": "Load Failed",
|
||||
"upload_failed": "Upload Failed",
|
||||
"can_not_recognize_this_media_attachment": "Can not regonize this media attachment",
|
||||
"can_not_recognize_this_media_attachment": "Can not recognize this media attachment",
|
||||
"attachment_too_large": "Attachment too large",
|
||||
"compressing_state": "Compressing...",
|
||||
"server_processing_state": "Server Processing..."
|
||||
|
@ -8,6 +8,9 @@
|
||||
#elseif os(tvOS) || os(watchOS)
|
||||
import UIKit
|
||||
#endif
|
||||
#if canImport(SwiftUI)
|
||||
import SwiftUI
|
||||
#endif
|
||||
|
||||
// Deprecated typealiases
|
||||
@available(*, deprecated, renamed: "ColorAsset.Color", message: "This typealias will be removed in SwiftGen 7.0")
|
||||
@ -279,6 +282,24 @@ public final class ColorAsset {
|
||||
return color
|
||||
}()
|
||||
|
||||
#if os(iOS) || os(tvOS)
|
||||
@available(iOS 11.0, tvOS 11.0, *)
|
||||
public func color(compatibleWith traitCollection: UITraitCollection) -> Color {
|
||||
let bundle = Bundle.module
|
||||
guard let color = Color(named: name, in: bundle, compatibleWith: traitCollection) else {
|
||||
fatalError("Unable to load color asset named \(name).")
|
||||
}
|
||||
return color
|
||||
}
|
||||
#endif
|
||||
|
||||
#if canImport(SwiftUI)
|
||||
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
|
||||
public private(set) lazy var swiftUIColor: SwiftUI.Color = {
|
||||
SwiftUI.Color(asset: self)
|
||||
}()
|
||||
#endif
|
||||
|
||||
fileprivate init(name: String) {
|
||||
self.name = name
|
||||
}
|
||||
@ -298,6 +319,16 @@ public extension ColorAsset.Color {
|
||||
}
|
||||
}
|
||||
|
||||
#if canImport(SwiftUI)
|
||||
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
|
||||
public extension SwiftUI.Color {
|
||||
init(asset: ColorAsset) {
|
||||
let bundle = Bundle.module
|
||||
self.init(asset.name, bundle: bundle)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
public struct ImageAsset {
|
||||
public fileprivate(set) var name: String
|
||||
|
||||
@ -307,6 +338,7 @@ public struct ImageAsset {
|
||||
public typealias Image = UIImage
|
||||
#endif
|
||||
|
||||
@available(iOS 8.0, tvOS 9.0, watchOS 2.0, macOS 10.7, *)
|
||||
public var image: Image {
|
||||
let bundle = Bundle.module
|
||||
#if os(iOS) || os(tvOS)
|
||||
@ -322,9 +354,28 @@ public struct ImageAsset {
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
#if os(iOS) || os(tvOS)
|
||||
@available(iOS 8.0, tvOS 9.0, *)
|
||||
public func image(compatibleWith traitCollection: UITraitCollection) -> Image {
|
||||
let bundle = Bundle.module
|
||||
guard let result = Image(named: name, in: bundle, compatibleWith: traitCollection) else {
|
||||
fatalError("Unable to load image asset named \(name).")
|
||||
}
|
||||
return result
|
||||
}
|
||||
#endif
|
||||
|
||||
#if canImport(SwiftUI)
|
||||
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
|
||||
public var swiftUIImage: SwiftUI.Image {
|
||||
SwiftUI.Image(asset: self)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public extension ImageAsset.Image {
|
||||
@available(iOS 8.0, tvOS 9.0, watchOS 2.0, *)
|
||||
@available(macOS, deprecated,
|
||||
message: "This initializer is unsafe on macOS, please use the ImageAsset.image property")
|
||||
convenience init?(asset: ImageAsset) {
|
||||
@ -338,3 +389,23 @@ public extension ImageAsset.Image {
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if canImport(SwiftUI)
|
||||
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
|
||||
public extension SwiftUI.Image {
|
||||
init(asset: ImageAsset) {
|
||||
let bundle = Bundle.module
|
||||
self.init(asset.name, bundle: bundle)
|
||||
}
|
||||
|
||||
init(asset: ImageAsset, label: Text) {
|
||||
let bundle = Bundle.module
|
||||
self.init(asset.name, bundle: bundle, label: label)
|
||||
}
|
||||
|
||||
init(decorative asset: ImageAsset) {
|
||||
let bundle = Bundle.module
|
||||
self.init(decorative: asset.name, bundle: bundle)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1,18 +1,20 @@
|
||||
// swiftlint:disable all
|
||||
// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen
|
||||
|
||||
#if os(OSX)
|
||||
#if os(macOS)
|
||||
import AppKit.NSFont
|
||||
#elseif os(iOS) || os(tvOS) || os(watchOS)
|
||||
import UIKit.UIFont
|
||||
#endif
|
||||
#if canImport(SwiftUI)
|
||||
import SwiftUI
|
||||
#endif
|
||||
|
||||
// Deprecated typealiases
|
||||
@available(*, deprecated, renamed: "FontConvertible.Font", message: "This typealias will be removed in SwiftGen 7.0")
|
||||
public typealias Font = FontConvertible.Font
|
||||
|
||||
// swiftlint:disable superfluous_disable_command
|
||||
// swiftlint:disable file_length
|
||||
// swiftlint:disable superfluous_disable_command file_length implicit_return
|
||||
|
||||
// MARK: - Fonts
|
||||
|
||||
@ -36,7 +38,7 @@ public struct FontConvertible {
|
||||
public let family: String
|
||||
public let path: String
|
||||
|
||||
#if os(OSX)
|
||||
#if os(macOS)
|
||||
public typealias Font = NSFont
|
||||
#elseif os(iOS) || os(tvOS) || os(watchOS)
|
||||
public typealias Font = UIFont
|
||||
@ -49,12 +51,41 @@ public struct FontConvertible {
|
||||
return font
|
||||
}
|
||||
|
||||
#if canImport(SwiftUI)
|
||||
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
|
||||
public func swiftUIFont(size: CGFloat) -> SwiftUI.Font {
|
||||
return SwiftUI.Font.custom(self, size: size)
|
||||
}
|
||||
|
||||
@available(iOS 14.0, tvOS 14.0, watchOS 7.0, macOS 11.0, *)
|
||||
public func swiftUIFont(fixedSize: CGFloat) -> SwiftUI.Font {
|
||||
return SwiftUI.Font.custom(self, fixedSize: fixedSize)
|
||||
}
|
||||
|
||||
@available(iOS 14.0, tvOS 14.0, watchOS 7.0, macOS 11.0, *)
|
||||
public func swiftUIFont(size: CGFloat, relativeTo textStyle: SwiftUI.Font.TextStyle) -> SwiftUI.Font {
|
||||
return SwiftUI.Font.custom(self, size: size, relativeTo: textStyle)
|
||||
}
|
||||
#endif
|
||||
|
||||
public func register() {
|
||||
// swiftlint:disable:next conditional_returns_on_newline
|
||||
guard let url = url else { return }
|
||||
CTFontManagerRegisterFontsForURL(url as CFURL, .process, nil)
|
||||
}
|
||||
|
||||
fileprivate func registerIfNeeded() {
|
||||
#if os(iOS) || os(tvOS) || os(watchOS)
|
||||
if !UIFont.fontNames(forFamilyName: family).contains(name) {
|
||||
register()
|
||||
}
|
||||
#elseif os(macOS)
|
||||
if let url = url, CTFontManagerGetScopeForURL(url as CFURL) == .none {
|
||||
register()
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
fileprivate var url: URL? {
|
||||
// swiftlint:disable:next implicit_return
|
||||
return Bundle.module.url(forResource: path, withExtension: nil)
|
||||
@ -63,16 +94,34 @@ public struct FontConvertible {
|
||||
|
||||
public extension FontConvertible.Font {
|
||||
convenience init?(font: FontConvertible, size: CGFloat) {
|
||||
#if os(iOS) || os(tvOS) || os(watchOS)
|
||||
if !UIFont.fontNames(forFamilyName: font.family).contains(font.name) {
|
||||
font.register()
|
||||
}
|
||||
#elseif os(OSX)
|
||||
if let url = font.url, CTFontManagerGetScopeForURL(url as CFURL) == .none {
|
||||
font.register()
|
||||
}
|
||||
#endif
|
||||
|
||||
font.registerIfNeeded()
|
||||
self.init(name: font.name, size: size)
|
||||
}
|
||||
}
|
||||
|
||||
#if canImport(SwiftUI)
|
||||
@available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
|
||||
public extension SwiftUI.Font {
|
||||
static func custom(_ font: FontConvertible, size: CGFloat) -> SwiftUI.Font {
|
||||
font.registerIfNeeded()
|
||||
return custom(font.name, size: size)
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 14.0, tvOS 14.0, watchOS 7.0, macOS 11.0, *)
|
||||
public extension SwiftUI.Font {
|
||||
static func custom(_ font: FontConvertible, fixedSize: CGFloat) -> SwiftUI.Font {
|
||||
font.registerIfNeeded()
|
||||
return custom(font.name, fixedSize: fixedSize)
|
||||
}
|
||||
|
||||
static func custom(
|
||||
_ font: FontConvertible,
|
||||
size: CGFloat,
|
||||
relativeTo textStyle: SwiftUI.Font.TextStyle
|
||||
) -> SwiftUI.Font {
|
||||
font.registerIfNeeded()
|
||||
return custom(font.name, size: size, relativeTo: textStyle)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,461 @@
|
||||
"Common.Alerts.BlockDomain.BlockEntireDomain" = "Block Domain";
|
||||
"Common.Alerts.BlockDomain.Title" = "Are you really, really sure you want to block the entire %@? 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.";
|
||||
"Common.Alerts.CleanCache.Message" = "Successfully cleaned %@ cache.";
|
||||
"Common.Alerts.CleanCache.Title" = "Clean Cache";
|
||||
"Common.Alerts.Common.PleaseTryAgain" = "Please try again.";
|
||||
"Common.Alerts.Common.PleaseTryAgainLater" = "Please try again later.";
|
||||
"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?";
|
||||
"Common.Alerts.DeletePost.Title" = "Delete Post";
|
||||
"Common.Alerts.DiscardPostContent.Message" = "Confirm to discard composed post content.";
|
||||
"Common.Alerts.DiscardPostContent.Title" = "Discard Draft";
|
||||
"Common.Alerts.EditProfileFailure.Message" = "Cannot edit profile. Please try again.";
|
||||
"Common.Alerts.EditProfileFailure.Title" = "Edit Profile Error";
|
||||
"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Cannot attach more than one video.";
|
||||
"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Cannot attach a video to a post that already contains images.";
|
||||
"Common.Alerts.PublishPostFailure.Message" = "Failed to publish the post.
|
||||
Please check your internet connection.";
|
||||
"Common.Alerts.PublishPostFailure.Title" = "Publish Failure";
|
||||
"Common.Alerts.SavePhotoFailure.Message" = "Please enable the photo library access permission to save the photo.";
|
||||
"Common.Alerts.SavePhotoFailure.Title" = "Save Photo Failure";
|
||||
"Common.Alerts.ServerError.Title" = "Server Error";
|
||||
"Common.Alerts.SignOut.Confirm" = "Sign Out";
|
||||
"Common.Alerts.SignOut.Message" = "Are you sure you want to sign out?";
|
||||
"Common.Alerts.SignOut.Title" = "Sign Out";
|
||||
"Common.Alerts.SignUpFailure.Title" = "Sign Up Failure";
|
||||
"Common.Alerts.VoteFailure.PollEnded" = "The poll has ended";
|
||||
"Common.Alerts.VoteFailure.Title" = "Vote Failure";
|
||||
"Common.Controls.Actions.Add" = "Add";
|
||||
"Common.Controls.Actions.Back" = "Back";
|
||||
"Common.Controls.Actions.BlockDomain" = "Block %@";
|
||||
"Common.Controls.Actions.Cancel" = "Cancel";
|
||||
"Common.Controls.Actions.Compose" = "Compose";
|
||||
"Common.Controls.Actions.Confirm" = "Confirm";
|
||||
"Common.Controls.Actions.Continue" = "Continue";
|
||||
"Common.Controls.Actions.CopyPhoto" = "Copy Photo";
|
||||
"Common.Controls.Actions.Delete" = "Delete";
|
||||
"Common.Controls.Actions.Discard" = "Discard";
|
||||
"Common.Controls.Actions.Done" = "Done";
|
||||
"Common.Controls.Actions.Edit" = "Edit";
|
||||
"Common.Controls.Actions.FindPeople" = "Find people to follow";
|
||||
"Common.Controls.Actions.ManuallySearch" = "Manually search instead";
|
||||
"Common.Controls.Actions.Next" = "Next";
|
||||
"Common.Controls.Actions.Ok" = "OK";
|
||||
"Common.Controls.Actions.Open" = "Open";
|
||||
"Common.Controls.Actions.OpenInBrowser" = "Open in Browser";
|
||||
"Common.Controls.Actions.OpenInSafari" = "Open in Safari";
|
||||
"Common.Controls.Actions.Preview" = "Preview";
|
||||
"Common.Controls.Actions.Previous" = "Previous";
|
||||
"Common.Controls.Actions.Remove" = "Remove";
|
||||
"Common.Controls.Actions.Reply" = "Reply";
|
||||
"Common.Controls.Actions.ReportUser" = "Report %@";
|
||||
"Common.Controls.Actions.Save" = "Save";
|
||||
"Common.Controls.Actions.SavePhoto" = "Save Photo";
|
||||
"Common.Controls.Actions.SeeMore" = "See More";
|
||||
"Common.Controls.Actions.Settings" = "Settings";
|
||||
"Common.Controls.Actions.Share" = "Share";
|
||||
"Common.Controls.Actions.SharePost" = "Share Post";
|
||||
"Common.Controls.Actions.ShareUser" = "Share %@";
|
||||
"Common.Controls.Actions.SignIn" = "Sign In";
|
||||
"Common.Controls.Actions.SignUp" = "Sign Up";
|
||||
"Common.Controls.Actions.Skip" = "Skip";
|
||||
"Common.Controls.Actions.TakePhoto" = "Take Photo";
|
||||
"Common.Controls.Actions.TryAgain" = "Try Again";
|
||||
"Common.Controls.Actions.UnblockDomain" = "Unblock %@";
|
||||
"Common.Controls.Friendship.Block" = "Block";
|
||||
"Common.Controls.Friendship.BlockDomain" = "Block %@";
|
||||
"Common.Controls.Friendship.BlockUser" = "Block %@";
|
||||
"Common.Controls.Friendship.Blocked" = "Blocked";
|
||||
"Common.Controls.Friendship.EditInfo" = "Edit Info";
|
||||
"Common.Controls.Friendship.Follow" = "Follow";
|
||||
"Common.Controls.Friendship.Following" = "Following";
|
||||
"Common.Controls.Friendship.HideReblogs" = "Hide Reblogs";
|
||||
"Common.Controls.Friendship.Mute" = "Mute";
|
||||
"Common.Controls.Friendship.MuteUser" = "Mute %@";
|
||||
"Common.Controls.Friendship.Muted" = "Muted";
|
||||
"Common.Controls.Friendship.Pending" = "Pending";
|
||||
"Common.Controls.Friendship.Request" = "Request";
|
||||
"Common.Controls.Friendship.ShowReblogs" = "Show Reblogs";
|
||||
"Common.Controls.Friendship.Unblock" = "Unblock";
|
||||
"Common.Controls.Friendship.UnblockUser" = "Unblock %@";
|
||||
"Common.Controls.Friendship.Unmute" = "Unmute";
|
||||
"Common.Controls.Friendship.UnmuteUser" = "Unmute %@";
|
||||
"Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post";
|
||||
"Common.Controls.Keyboard.Common.OpenSettings" = "Open Settings";
|
||||
"Common.Controls.Keyboard.Common.ShowFavorites" = "Show Favorites";
|
||||
"Common.Controls.Keyboard.Common.SwitchToTab" = "Switch to %@";
|
||||
"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Next Section";
|
||||
"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Previous Section";
|
||||
"Common.Controls.Keyboard.Timeline.NextStatus" = "Next Post";
|
||||
"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Open Author's Profile";
|
||||
"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Open Reblogger's Profile";
|
||||
"Common.Controls.Keyboard.Timeline.OpenStatus" = "Open Post";
|
||||
"Common.Controls.Keyboard.Timeline.PreviewImage" = "Preview Image";
|
||||
"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Previous Post";
|
||||
"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reply to Post";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Toggle Content Warning";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toggle Favorite on Post";
|
||||
"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toggle Reblog on Post";
|
||||
"Common.Controls.Status.Actions.Favorite" = "Favorite";
|
||||
"Common.Controls.Status.Actions.Hide" = "Hide";
|
||||
"Common.Controls.Status.Actions.Menu" = "Menu";
|
||||
"Common.Controls.Status.Actions.Reblog" = "Reblog";
|
||||
"Common.Controls.Status.Actions.Reply" = "Reply";
|
||||
"Common.Controls.Status.Actions.ShowGif" = "Show GIF";
|
||||
"Common.Controls.Status.Actions.ShowImage" = "Show image";
|
||||
"Common.Controls.Status.Actions.ShowVideoPlayer" = "Show video player";
|
||||
"Common.Controls.Status.Actions.TapThenHoldToShowMenu" = "Tap then hold to show menu";
|
||||
"Common.Controls.Status.Actions.Unfavorite" = "Unfavorite";
|
||||
"Common.Controls.Status.Actions.Unreblog" = "Undo reblog";
|
||||
"Common.Controls.Status.ContentWarning" = "Content Warning";
|
||||
"Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal";
|
||||
"Common.Controls.Status.MetaEntity.Email" = "Email address: %@";
|
||||
"Common.Controls.Status.MetaEntity.Hashtag" = "Hashtag: %@";
|
||||
"Common.Controls.Status.MetaEntity.Mention" = "Show Profile: %@";
|
||||
"Common.Controls.Status.MetaEntity.Url" = "Link: %@";
|
||||
"Common.Controls.Status.Poll.Closed" = "Closed";
|
||||
"Common.Controls.Status.Poll.Vote" = "Vote";
|
||||
"Common.Controls.Status.SensitiveContent" = "Sensitive Content";
|
||||
"Common.Controls.Status.ShowPost" = "Show Post";
|
||||
"Common.Controls.Status.ShowUserProfile" = "Show user profile";
|
||||
"Common.Controls.Status.Tag.Email" = "Email";
|
||||
"Common.Controls.Status.Tag.Emoji" = "Emoji";
|
||||
"Common.Controls.Status.Tag.Hashtag" = "Hashtag";
|
||||
"Common.Controls.Status.Tag.Link" = "Link";
|
||||
"Common.Controls.Status.Tag.Mention" = "Mention";
|
||||
"Common.Controls.Status.Tag.Url" = "URL";
|
||||
"Common.Controls.Status.TapToReveal" = "Tap to reveal";
|
||||
"Common.Controls.Status.UserReblogged" = "%@ reblogged";
|
||||
"Common.Controls.Status.UserRepliedTo" = "Replied to %@";
|
||||
"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post.";
|
||||
"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post.";
|
||||
"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post.";
|
||||
"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline.";
|
||||
"Common.Controls.Tabs.Home" = "Home";
|
||||
"Common.Controls.Tabs.Notification" = "Notification";
|
||||
"Common.Controls.Tabs.Profile" = "Profile";
|
||||
"Common.Controls.Tabs.Search" = "Search";
|
||||
"Common.Controls.Timeline.Filtered" = "Filtered";
|
||||
"Common.Controls.Timeline.Header.BlockedWarning" = "You can’t view this user’s profile
|
||||
until they unblock you.";
|
||||
"Common.Controls.Timeline.Header.BlockingWarning" = "You can’t view this user's profile
|
||||
until you unblock them.
|
||||
Your profile looks like this to them.";
|
||||
"Common.Controls.Timeline.Header.NoStatusFound" = "No Post Found";
|
||||
"Common.Controls.Timeline.Header.SuspendedWarning" = "This user has been suspended.";
|
||||
"Common.Controls.Timeline.Header.UserBlockedWarning" = "You can’t view %@’s profile
|
||||
until they unblock you.";
|
||||
"Common.Controls.Timeline.Header.UserBlockingWarning" = "You can’t view %@’s profile
|
||||
until you unblock them.
|
||||
Your profile looks like this to them.";
|
||||
"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@’s account has been suspended.";
|
||||
"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Load missing posts";
|
||||
"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Loading missing posts...";
|
||||
"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Show more replies";
|
||||
"Common.Controls.Timeline.Timestamp.Now" = "Now";
|
||||
"Scene.AccountList.AddAccount" = "Add Account";
|
||||
"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher";
|
||||
"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher";
|
||||
"Scene.Bookmark.Title" = "Bookmarks";
|
||||
"Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment";
|
||||
"Scene.Compose.Accessibility.AppendPoll" = "Add Poll";
|
||||
"Scene.Compose.Accessibility.CustomEmojiPicker" = "Custom Emoji Picker";
|
||||
"Scene.Compose.Accessibility.DisableContentWarning" = "Disable Content Warning";
|
||||
"Scene.Compose.Accessibility.EnableContentWarning" = "Enable Content Warning";
|
||||
"Scene.Compose.Accessibility.PostOptions" = "Post Options";
|
||||
"Scene.Compose.Accessibility.PostVisibilityMenu" = "Post Visibility Menu";
|
||||
"Scene.Compose.Accessibility.PostingAs" = "Posting as %@";
|
||||
"Scene.Compose.Accessibility.RemovePoll" = "Remove Poll";
|
||||
"Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be
|
||||
uploaded to Mastodon.";
|
||||
"Scene.Compose.Attachment.AttachmentTooLarge" = "Attachment too large";
|
||||
"Scene.Compose.Attachment.CanNotRecognizeThisMediaAttachment" = "Can not recognize this media attachment";
|
||||
"Scene.Compose.Attachment.CompressingState" = "Compressing...";
|
||||
"Scene.Compose.Attachment.DescriptionPhoto" = "Describe the photo for the visually-impaired...";
|
||||
"Scene.Compose.Attachment.DescriptionVideo" = "Describe the video for the visually-impaired...";
|
||||
"Scene.Compose.Attachment.LoadFailed" = "Load Failed";
|
||||
"Scene.Compose.Attachment.Photo" = "photo";
|
||||
"Scene.Compose.Attachment.ServerProcessingState" = "Server Processing...";
|
||||
"Scene.Compose.Attachment.UploadFailed" = "Upload Failed";
|
||||
"Scene.Compose.Attachment.Video" = "video";
|
||||
"Scene.Compose.AutoComplete.SpaceToAdd" = "Space to add";
|
||||
"Scene.Compose.ComposeAction" = "Publish";
|
||||
"Scene.Compose.ContentInputPlaceholder" = "Type or paste what’s on your mind";
|
||||
"Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here...";
|
||||
"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Add Attachment - %@";
|
||||
"Scene.Compose.Keyboard.DiscardPost" = "Discard Post";
|
||||
"Scene.Compose.Keyboard.PublishPost" = "Publish Post";
|
||||
"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Select Visibility - %@";
|
||||
"Scene.Compose.Keyboard.ToggleContentWarning" = "Toggle Content Warning";
|
||||
"Scene.Compose.Keyboard.TogglePoll" = "Toggle Poll";
|
||||
"Scene.Compose.MediaSelection.Browse" = "Browse";
|
||||
"Scene.Compose.MediaSelection.Camera" = "Take Photo";
|
||||
"Scene.Compose.MediaSelection.PhotoLibrary" = "Photo Library";
|
||||
"Scene.Compose.Poll.DurationTime" = "Duration: %@";
|
||||
"Scene.Compose.Poll.OneDay" = "1 Day";
|
||||
"Scene.Compose.Poll.OneHour" = "1 Hour";
|
||||
"Scene.Compose.Poll.OptionNumber" = "Option %ld";
|
||||
"Scene.Compose.Poll.SevenDays" = "7 Days";
|
||||
"Scene.Compose.Poll.SixHours" = "6 Hours";
|
||||
"Scene.Compose.Poll.ThePollHasEmptyOption" = "The poll has empty option";
|
||||
"Scene.Compose.Poll.ThePollIsInvalid" = "The poll is invalid";
|
||||
"Scene.Compose.Poll.ThirtyMinutes" = "30 minutes";
|
||||
"Scene.Compose.Poll.ThreeDays" = "3 Days";
|
||||
"Scene.Compose.ReplyingToUser" = "replying to %@";
|
||||
"Scene.Compose.Title.NewPost" = "New Post";
|
||||
"Scene.Compose.Title.NewReply" = "New Reply";
|
||||
"Scene.Compose.Visibility.Direct" = "Only people I mention";
|
||||
"Scene.Compose.Visibility.Private" = "Followers only";
|
||||
"Scene.Compose.Visibility.Public" = "Public";
|
||||
"Scene.Compose.Visibility.Unlisted" = "Unlisted";
|
||||
"Scene.ConfirmEmail.Button.OpenEmailApp" = "Open Email App";
|
||||
"Scene.ConfirmEmail.Button.Resend" = "Resend";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t.";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email";
|
||||
"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.Description" = "We just sent you an email. Check your junk folder if you haven’t.";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client";
|
||||
"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox.";
|
||||
"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account.";
|
||||
"Scene.ConfirmEmail.TapTheLinkWeEmailedToYouToVerifyYourAccount" = "Tap the link we emailed to you to verify your account";
|
||||
"Scene.ConfirmEmail.Title" = "One last thing.";
|
||||
"Scene.Discovery.Intro" = "These are the posts gaining traction in your corner of Mastodon.";
|
||||
"Scene.Discovery.Tabs.Community" = "Community";
|
||||
"Scene.Discovery.Tabs.ForYou" = "For You";
|
||||
"Scene.Discovery.Tabs.Hashtags" = "Hashtags";
|
||||
"Scene.Discovery.Tabs.News" = "News";
|
||||
"Scene.Discovery.Tabs.Posts" = "Posts";
|
||||
"Scene.Familiarfollowers.FollowedByNames" = "Followed by %@";
|
||||
"Scene.Familiarfollowers.Title" = "Followers you familiar";
|
||||
"Scene.Favorite.Title" = "Your Favorites";
|
||||
"Scene.FavoritedBy.Title" = "Favorited By";
|
||||
"Scene.Follower.Footer" = "Followers from other servers are not displayed.";
|
||||
"Scene.Follower.Title" = "follower";
|
||||
"Scene.Following.Footer" = "Follows from other servers are not displayed.";
|
||||
"Scene.Following.Title" = "following";
|
||||
"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoHint" = "Tap to scroll to top and tap again to previous location";
|
||||
"Scene.HomeTimeline.NavigationBarState.Accessibility.LogoLabel" = "Logo Button";
|
||||
"Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts";
|
||||
"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline";
|
||||
"Scene.HomeTimeline.NavigationBarState.Published" = "Published!";
|
||||
"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post...";
|
||||
"Scene.HomeTimeline.Title" = "Home";
|
||||
"Scene.Notification.FollowRequest.Accept" = "Accept";
|
||||
"Scene.Notification.FollowRequest.Accepted" = "Accepted";
|
||||
"Scene.Notification.FollowRequest.Reject" = "reject";
|
||||
"Scene.Notification.FollowRequest.Rejected" = "Rejected";
|
||||
"Scene.Notification.Keyobard.ShowEverything" = "Show Everything";
|
||||
"Scene.Notification.Keyobard.ShowMentions" = "Show Mentions";
|
||||
"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post";
|
||||
"Scene.Notification.NotificationDescription.FollowedYou" = "followed you";
|
||||
"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you";
|
||||
"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended";
|
||||
"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post";
|
||||
"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you";
|
||||
"Scene.Notification.Title.Everything" = "Everything";
|
||||
"Scene.Notification.Title.Mentions" = "Mentions";
|
||||
"Scene.Preview.Keyboard.ClosePreview" = "Close Preview";
|
||||
"Scene.Preview.Keyboard.ShowNext" = "Show Next";
|
||||
"Scene.Preview.Keyboard.ShowPrevious" = "Show Previous";
|
||||
"Scene.Profile.Accessibility.DoubleTapToOpenTheList" = "Double tap to open the list";
|
||||
"Scene.Profile.Accessibility.EditAvatarImage" = "Edit avatar image";
|
||||
"Scene.Profile.Accessibility.ShowAvatarImage" = "Show avatar image";
|
||||
"Scene.Profile.Accessibility.ShowBannerImage" = "Show banner image";
|
||||
"Scene.Profile.Dashboard.Followers" = "followers";
|
||||
"Scene.Profile.Dashboard.Following" = "following";
|
||||
"Scene.Profile.Dashboard.Posts" = "posts";
|
||||
"Scene.Profile.Fields.AddRow" = "Add Row";
|
||||
"Scene.Profile.Fields.Placeholder.Content" = "Content";
|
||||
"Scene.Profile.Fields.Placeholder.Label" = "Label";
|
||||
"Scene.Profile.Header.FollowsYou" = "Follows You";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Message" = "Confirm to hide reblogs";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmHideReblogs.Title" = "Hide Reblogs";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Message" = "Confirm to show reblogs";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmShowReblogs.Title" = "Show Reblogs";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@";
|
||||
"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Unmute Account";
|
||||
"Scene.Profile.SegmentedControl.About" = "About";
|
||||
"Scene.Profile.SegmentedControl.Media" = "Media";
|
||||
"Scene.Profile.SegmentedControl.Posts" = "Posts";
|
||||
"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies";
|
||||
"Scene.Profile.SegmentedControl.Replies" = "Replies";
|
||||
"Scene.RebloggedBy.Title" = "Reblogged By";
|
||||
"Scene.Register.Error.Item.Agreement" = "Agreement";
|
||||
"Scene.Register.Error.Item.Email" = "Email";
|
||||
"Scene.Register.Error.Item.Locale" = "Locale";
|
||||
"Scene.Register.Error.Item.Password" = "Password";
|
||||
"Scene.Register.Error.Item.Reason" = "Reason";
|
||||
"Scene.Register.Error.Item.Username" = "Username";
|
||||
"Scene.Register.Error.Reason.Accepted" = "%@ must be accepted";
|
||||
"Scene.Register.Error.Reason.Blank" = "%@ is required";
|
||||
"Scene.Register.Error.Reason.Blocked" = "%@ contains a disallowed email provider";
|
||||
"Scene.Register.Error.Reason.Inclusion" = "%@ is not a supported value";
|
||||
"Scene.Register.Error.Reason.Invalid" = "%@ is invalid";
|
||||
"Scene.Register.Error.Reason.Reserved" = "%@ is a reserved keyword";
|
||||
"Scene.Register.Error.Reason.Taken" = "%@ is already in use";
|
||||
"Scene.Register.Error.Reason.TooLong" = "%@ is too long";
|
||||
"Scene.Register.Error.Reason.TooShort" = "%@ is too short";
|
||||
"Scene.Register.Error.Reason.Unreachable" = "%@ does not seem to exist";
|
||||
"Scene.Register.Error.Special.EmailInvalid" = "This is not a valid email address";
|
||||
"Scene.Register.Error.Special.PasswordTooShort" = "Password is too short (must be at least 8 characters)";
|
||||
"Scene.Register.Error.Special.UsernameInvalid" = "Username must only contain alphanumeric characters and underscores";
|
||||
"Scene.Register.Error.Special.UsernameTooLong" = "Username is too long (can’t be longer than 30 characters)";
|
||||
"Scene.Register.Input.Avatar.Delete" = "Delete";
|
||||
"Scene.Register.Input.DisplayName.Placeholder" = "display name";
|
||||
"Scene.Register.Input.Email.Placeholder" = "email";
|
||||
"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Why do you want to join?";
|
||||
"Scene.Register.Input.Password.Accessibility.Checked" = "checked";
|
||||
"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked";
|
||||
"Scene.Register.Input.Password.CharacterLimit" = "8 characters";
|
||||
"Scene.Register.Input.Password.Hint" = "Your password needs at least eight characters";
|
||||
"Scene.Register.Input.Password.Placeholder" = "password";
|
||||
"Scene.Register.Input.Password.Require" = "Your password needs at least:";
|
||||
"Scene.Register.Input.Username.DuplicatePrompt" = "This username is taken.";
|
||||
"Scene.Register.Input.Username.Placeholder" = "username";
|
||||
"Scene.Register.LetsGetYouSetUpOnDomain" = "Let’s get you set up on %@";
|
||||
"Scene.Register.Title" = "Let’s get you set up on %@";
|
||||
"Scene.Report.Content1" = "Are there any other posts you’d like to add to the report?";
|
||||
"Scene.Report.Content2" = "Is there anything the moderators should know about this report?";
|
||||
"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this.";
|
||||
"Scene.Report.Reported" = "REPORTED";
|
||||
"Scene.Report.Send" = "Send Report";
|
||||
"Scene.Report.SkipToSend" = "Send without comment";
|
||||
"Scene.Report.Step1" = "Step 1 of 2";
|
||||
"Scene.Report.Step2" = "Step 2 of 2";
|
||||
"Scene.Report.StepFinal.BlockUser" = "Block %@";
|
||||
"Scene.Report.StepFinal.DontWantToSeeThis" = "Don’t want to see this?";
|
||||
"Scene.Report.StepFinal.MuteUser" = "Mute %@";
|
||||
"Scene.Report.StepFinal.TheyWillNoLongerBeAbleToFollowOrSeeYourPostsButTheyCanSeeIfTheyveBeenBlocked" = "They will no longer be able to follow or see your posts, but they can see if they’ve been blocked.";
|
||||
"Scene.Report.StepFinal.Unfollow" = "Unfollow";
|
||||
"Scene.Report.StepFinal.UnfollowUser" = "Unfollow %@";
|
||||
"Scene.Report.StepFinal.Unfollowed" = "Unfollowed";
|
||||
"Scene.Report.StepFinal.WhenYouSeeSomethingYouDontLikeOnMastodonYouCanRemoveThePersonFromYourExperience." = "When you see something you don’t like on Mastodon, you can remove the person from your experience.";
|
||||
"Scene.Report.StepFinal.WhileWeReviewThisYouCanTakeActionAgainstUser" = "While we review this, you can take action against %@";
|
||||
"Scene.Report.StepFinal.YouWontSeeTheirPostsOrReblogsInYourHomeFeedTheyWontKnowTheyVeBeenMuted" = "You won’t see their posts or reblogs in your home feed. They won’t know they’ve been muted.";
|
||||
"Scene.Report.StepFour.IsThereAnythingElseWeShouldKnow" = "Is there anything else we should know?";
|
||||
"Scene.Report.StepFour.Step4Of4" = "Step 4 of 4";
|
||||
"Scene.Report.StepOne.IDontLikeIt" = "I don’t like it";
|
||||
"Scene.Report.StepOne.ItIsNotSomethingYouWantToSee" = "It is not something you want to see";
|
||||
"Scene.Report.StepOne.ItViolatesServerRules" = "It violates server rules";
|
||||
"Scene.Report.StepOne.ItsSomethingElse" = "It’s something else";
|
||||
"Scene.Report.StepOne.ItsSpam" = "It’s spam";
|
||||
"Scene.Report.StepOne.MaliciousLinksFakeEngagementOrRepetetiveReplies" = "Malicious links, fake engagement, or repetetive replies";
|
||||
"Scene.Report.StepOne.SelectTheBestMatch" = "Select the best match";
|
||||
"Scene.Report.StepOne.Step1Of4" = "Step 1 of 4";
|
||||
"Scene.Report.StepOne.TheIssueDoesNotFitIntoOtherCategories" = "The issue does not fit into other categories";
|
||||
"Scene.Report.StepOne.WhatsWrongWithThisAccount" = "What's wrong with this account?";
|
||||
"Scene.Report.StepOne.WhatsWrongWithThisPost" = "What's wrong with this post?";
|
||||
"Scene.Report.StepOne.WhatsWrongWithThisUsername" = "What's wrong with %@?";
|
||||
"Scene.Report.StepOne.YouAreAwareThatItBreaksSpecificRules" = "You are aware that it breaks specific rules";
|
||||
"Scene.Report.StepThree.AreThereAnyPostsThatBackUpThisReport" = "Are there any posts that back up this report?";
|
||||
"Scene.Report.StepThree.SelectAllThatApply" = "Select all that apply";
|
||||
"Scene.Report.StepThree.Step3Of4" = "Step 3 of 4";
|
||||
"Scene.Report.StepTwo.IJustDon’tLikeIt" = "I just don’t like it";
|
||||
"Scene.Report.StepTwo.SelectAllThatApply" = "Select all that apply";
|
||||
"Scene.Report.StepTwo.Step2Of4" = "Step 2 of 4";
|
||||
"Scene.Report.StepTwo.WhichRulesAreBeingViolated" = "Which rules are being violated?";
|
||||
"Scene.Report.TextPlaceholder" = "Type or paste additional comments";
|
||||
"Scene.Report.Title" = "Report %@";
|
||||
"Scene.Report.TitleReport" = "Report";
|
||||
"Scene.Search.Recommend.Accounts.Description" = "You may like to follow these accounts";
|
||||
"Scene.Search.Recommend.Accounts.Follow" = "Follow";
|
||||
"Scene.Search.Recommend.Accounts.Title" = "Accounts you might like";
|
||||
"Scene.Search.Recommend.ButtonText" = "See All";
|
||||
"Scene.Search.Recommend.HashTag.Description" = "Hashtags that are getting quite a bit of attention";
|
||||
"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ people are talking";
|
||||
"Scene.Search.Recommend.HashTag.Title" = "Trending on Mastodon";
|
||||
"Scene.Search.SearchBar.Cancel" = "Cancel";
|
||||
"Scene.Search.SearchBar.Placeholder" = "Search hashtags and users";
|
||||
"Scene.Search.Searching.Clear" = "Clear";
|
||||
"Scene.Search.Searching.EmptyState.NoResults" = "No results";
|
||||
"Scene.Search.Searching.RecentSearch" = "Recent searches";
|
||||
"Scene.Search.Searching.Segment.All" = "All";
|
||||
"Scene.Search.Searching.Segment.Hashtags" = "Hashtags";
|
||||
"Scene.Search.Searching.Segment.People" = "People";
|
||||
"Scene.Search.Searching.Segment.Posts" = "Posts";
|
||||
"Scene.Search.Title" = "Search";
|
||||
"Scene.ServerPicker.Button.Category.Academia" = "academia";
|
||||
"Scene.ServerPicker.Button.Category.Activism" = "activism";
|
||||
"Scene.ServerPicker.Button.Category.All" = "All";
|
||||
"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Category: All";
|
||||
"Scene.ServerPicker.Button.Category.Art" = "art";
|
||||
"Scene.ServerPicker.Button.Category.Food" = "food";
|
||||
"Scene.ServerPicker.Button.Category.Furry" = "furry";
|
||||
"Scene.ServerPicker.Button.Category.Games" = "games";
|
||||
"Scene.ServerPicker.Button.Category.General" = "general";
|
||||
"Scene.ServerPicker.Button.Category.Journalism" = "journalism";
|
||||
"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt";
|
||||
"Scene.ServerPicker.Button.Category.Music" = "music";
|
||||
"Scene.ServerPicker.Button.Category.Regional" = "regional";
|
||||
"Scene.ServerPicker.Button.Category.Tech" = "tech";
|
||||
"Scene.ServerPicker.Button.SeeLess" = "See Less";
|
||||
"Scene.ServerPicker.Button.SeeMore" = "See More";
|
||||
"Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection.";
|
||||
"Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers...";
|
||||
"Scene.ServerPicker.EmptyState.NoResults" = "No results";
|
||||
"Scene.ServerPicker.Input.Placeholder" = "Search servers";
|
||||
"Scene.ServerPicker.Input.SearchServersOrEnterUrl" = "Search servers or enter URL";
|
||||
"Scene.ServerPicker.Label.Category" = "CATEGORY";
|
||||
"Scene.ServerPicker.Label.Language" = "LANGUAGE";
|
||||
"Scene.ServerPicker.Label.Users" = "USERS";
|
||||
"Scene.ServerPicker.Subtitle" = "Pick a server based on your interests, region, or a general purpose one.";
|
||||
"Scene.ServerPicker.SubtitleExtend" = "Pick a server based on your interests, region, or a general purpose one. Each server is operated by an entirely independent organization or individual.";
|
||||
"Scene.ServerPicker.Title" = "Mastodon is made of users in different servers.";
|
||||
"Scene.ServerRules.Button.Confirm" = "I Agree";
|
||||
"Scene.ServerRules.PrivacyPolicy" = "privacy policy";
|
||||
"Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@.";
|
||||
"Scene.ServerRules.Subtitle" = "These are set and enforced by the %@ moderators.";
|
||||
"Scene.ServerRules.TermsOfService" = "terms of service";
|
||||
"Scene.ServerRules.Title" = "Some ground rules.";
|
||||
"Scene.Settings.Footer.MastodonDescription" = "Mastodon is open source software. You can report issues on GitHub at %@ (%@)";
|
||||
"Scene.Settings.Keyboard.CloseSettingsWindow" = "Close Settings Window";
|
||||
"Scene.Settings.Section.Appearance.Automatic" = "Automatic";
|
||||
"Scene.Settings.Section.Appearance.Dark" = "Always Dark";
|
||||
"Scene.Settings.Section.Appearance.Light" = "Always Light";
|
||||
"Scene.Settings.Section.Appearance.Title" = "Appearance";
|
||||
"Scene.Settings.Section.BoringZone.AccountSettings" = "Account Settings";
|
||||
"Scene.Settings.Section.BoringZone.Privacy" = "Privacy Policy";
|
||||
"Scene.Settings.Section.BoringZone.Terms" = "Terms of Service";
|
||||
"Scene.Settings.Section.BoringZone.Title" = "The Boring Zone";
|
||||
"Scene.Settings.Section.LookAndFeel.Light" = "Light";
|
||||
"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark";
|
||||
"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark";
|
||||
"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel";
|
||||
"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System";
|
||||
"Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post";
|
||||
"Scene.Settings.Section.Notifications.Favorites" = "Favorites my post";
|
||||
"Scene.Settings.Section.Notifications.Follows" = "Follows me";
|
||||
"Scene.Settings.Section.Notifications.Mentions" = "Mentions me";
|
||||
"Scene.Settings.Section.Notifications.Title" = "Notifications";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Anyone" = "anyone";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Follow" = "anyone I follow";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Noone" = "no one";
|
||||
"Scene.Settings.Section.Notifications.Trigger.Title" = "Notify me when";
|
||||
"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Disable animated avatars";
|
||||
"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Disable animated emojis";
|
||||
"Scene.Settings.Section.Preference.OpenLinksInMastodon" = "Open links in Mastodon";
|
||||
"Scene.Settings.Section.Preference.Title" = "Preferences";
|
||||
"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "True black dark mode";
|
||||
"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Use default browser to open links";
|
||||
"Scene.Settings.Section.SpicyZone.Clear" = "Clear Media Cache";
|
||||
"Scene.Settings.Section.SpicyZone.Signout" = "Sign Out";
|
||||
"Scene.Settings.Section.SpicyZone.Title" = "The Spicy Zone";
|
||||
"Scene.Settings.Title" = "Settings";
|
||||
"Scene.SuggestionAccount.FollowExplain" = "When you follow someone, you’ll see their posts in your home feed.";
|
||||
"Scene.SuggestionAccount.Title" = "Find People to Follow";
|
||||
"Scene.Thread.BackTitle" = "Post";
|
||||
"Scene.Thread.Title" = "Post from %@";
|
||||
"Scene.Welcome.GetStarted" = "Get Started";
|
||||
"Scene.Welcome.LogIn" = "Log In";
|
||||
"Scene.Welcome.Slogan" = "Social networking
|
||||
back in your hands.";
|
||||
"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard";
|
||||
"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button.";
|
||||
"Scene.Wizard.NewInMastodon" = "New in Mastodon";
|
@ -0,0 +1,631 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>a11y.plural.count.unread.notification</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@notification_count_unread_notification@</string>
|
||||
<key>notification_count_unread_notification</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>no unread notification</string>
|
||||
<key>one</key>
|
||||
<string>1 unread notification</string>
|
||||
<key>few</key>
|
||||
<string>%ld unread notifications</string>
|
||||
<key>many</key>
|
||||
<string>%ld unread notification</string>
|
||||
<key>other</key>
|
||||
<string>%ld unread notification</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_exceeds</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>Input limit exceeds %#@character_count@</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 characters</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.input_limit_remains</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>Input limit remains %#@character_count@</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 characters</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>a11y.plural.count.characters_left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@character_count@ left</string>
|
||||
<key>character_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>no characters</string>
|
||||
<key>one</key>
|
||||
<string>1 character</string>
|
||||
<key>few</key>
|
||||
<string>%ld characters</string>
|
||||
<key>many</key>
|
||||
<string>%ld characters</string>
|
||||
<key>other</key>
|
||||
<string>%ld characters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.followed_by_and_mutual</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@names@%#@count_mutual@</string>
|
||||
<key>names</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>other</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
<key>count_mutual</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>Followed by %1$@</string>
|
||||
<key>one</key>
|
||||
<string>Followed by %1$@, and another mutual</string>
|
||||
<key>few</key>
|
||||
<string>Followed by %1$@, and %ld mutuals</string>
|
||||
<key>many</key>
|
||||
<string>Followed by %1$@, and %ld mutuals</string>
|
||||
<key>other</key>
|
||||
<string>Followed by %1$@, and %ld mutuals</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.metric_formatted.post</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%@ %#@post_count@</string>
|
||||
<key>post_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>posts</string>
|
||||
<key>one</key>
|
||||
<string>post</string>
|
||||
<key>few</key>
|
||||
<string>posts</string>
|
||||
<key>many</key>
|
||||
<string>posts</string>
|
||||
<key>other</key>
|
||||
<string>posts</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.media</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@media_count@</string>
|
||||
<key>media_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 media</string>
|
||||
<key>one</key>
|
||||
<string>1 media</string>
|
||||
<key>few</key>
|
||||
<string>%ld media</string>
|
||||
<key>many</key>
|
||||
<string>%ld media</string>
|
||||
<key>other</key>
|
||||
<string>%ld media</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.post</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@post_count@</string>
|
||||
<key>post_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 posts</string>
|
||||
<key>one</key>
|
||||
<string>1 post</string>
|
||||
<key>few</key>
|
||||
<string>%ld posts</string>
|
||||
<key>many</key>
|
||||
<string>%ld posts</string>
|
||||
<key>other</key>
|
||||
<string>%ld posts</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.favorite</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@favorite_count@</string>
|
||||
<key>favorite_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 favorites</string>
|
||||
<key>one</key>
|
||||
<string>1 favorite</string>
|
||||
<key>few</key>
|
||||
<string>%ld favorites</string>
|
||||
<key>many</key>
|
||||
<string>%ld favorites</string>
|
||||
<key>other</key>
|
||||
<string>%ld favorites</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.reblog</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@reblog_count@</string>
|
||||
<key>reblog_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 reblogs</string>
|
||||
<key>one</key>
|
||||
<string>1 reblog</string>
|
||||
<key>few</key>
|
||||
<string>%ld reblogs</string>
|
||||
<key>many</key>
|
||||
<string>%ld reblogs</string>
|
||||
<key>other</key>
|
||||
<string>%ld reblogs</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.reply</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@reply_count@</string>
|
||||
<key>reply_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 replies</string>
|
||||
<key>one</key>
|
||||
<string>1 reply</string>
|
||||
<key>few</key>
|
||||
<string>%ld replies</string>
|
||||
<key>many</key>
|
||||
<string>%ld replies</string>
|
||||
<key>other</key>
|
||||
<string>%ld replies</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.vote</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@vote_count@</string>
|
||||
<key>vote_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 votes</string>
|
||||
<key>one</key>
|
||||
<string>1 vote</string>
|
||||
<key>few</key>
|
||||
<string>%ld votes</string>
|
||||
<key>many</key>
|
||||
<string>%ld votes</string>
|
||||
<key>other</key>
|
||||
<string>%ld votes</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.voter</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@voter_count@</string>
|
||||
<key>voter_count</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 voters</string>
|
||||
<key>one</key>
|
||||
<string>1 voter</string>
|
||||
<key>few</key>
|
||||
<string>%ld voters</string>
|
||||
<key>many</key>
|
||||
<string>%ld voters</string>
|
||||
<key>other</key>
|
||||
<string>%ld voters</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.people_talking</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_people_talking@</string>
|
||||
<key>count_people_talking</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 people talking</string>
|
||||
<key>one</key>
|
||||
<string>1 people talking</string>
|
||||
<key>few</key>
|
||||
<string>%ld people talking</string>
|
||||
<key>many</key>
|
||||
<string>%ld people talking</string>
|
||||
<key>other</key>
|
||||
<string>%ld people talking</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.following</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_following@</string>
|
||||
<key>count_following</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 following</string>
|
||||
<key>one</key>
|
||||
<string>1 following</string>
|
||||
<key>few</key>
|
||||
<string>%ld following</string>
|
||||
<key>many</key>
|
||||
<string>%ld following</string>
|
||||
<key>other</key>
|
||||
<string>%ld following</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>plural.count.follower</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_follower@</string>
|
||||
<key>count_follower</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 followers</string>
|
||||
<key>one</key>
|
||||
<string>1 follower</string>
|
||||
<key>few</key>
|
||||
<string>%ld followers</string>
|
||||
<key>many</key>
|
||||
<string>%ld followers</string>
|
||||
<key>other</key>
|
||||
<string>%ld followers</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.year.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_year_left@</string>
|
||||
<key>count_year_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 years left</string>
|
||||
<key>one</key>
|
||||
<string>1 year left</string>
|
||||
<key>few</key>
|
||||
<string>%ld years left</string>
|
||||
<key>many</key>
|
||||
<string>%ld years left</string>
|
||||
<key>other</key>
|
||||
<string>%ld years left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.month.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_month_left@</string>
|
||||
<key>count_month_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 months left</string>
|
||||
<key>one</key>
|
||||
<string>1 months left</string>
|
||||
<key>few</key>
|
||||
<string>%ld months left</string>
|
||||
<key>many</key>
|
||||
<string>%ld months left</string>
|
||||
<key>other</key>
|
||||
<string>%ld months left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.day.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_day_left@</string>
|
||||
<key>count_day_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 days left</string>
|
||||
<key>one</key>
|
||||
<string>1 day left</string>
|
||||
<key>few</key>
|
||||
<string>%ld days left</string>
|
||||
<key>many</key>
|
||||
<string>%ld days left</string>
|
||||
<key>other</key>
|
||||
<string>%ld days left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.hour.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_hour_left@</string>
|
||||
<key>count_hour_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 hours left</string>
|
||||
<key>one</key>
|
||||
<string>1 hour left</string>
|
||||
<key>few</key>
|
||||
<string>%ld hours left</string>
|
||||
<key>many</key>
|
||||
<string>%ld hours left</string>
|
||||
<key>other</key>
|
||||
<string>%ld hours left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.minute.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_minute_left@</string>
|
||||
<key>count_minute_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 minutes left</string>
|
||||
<key>one</key>
|
||||
<string>1 minute left</string>
|
||||
<key>few</key>
|
||||
<string>%ld minutes left</string>
|
||||
<key>many</key>
|
||||
<string>%ld minutes left</string>
|
||||
<key>other</key>
|
||||
<string>%ld minutes left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.second.left</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_second_left@</string>
|
||||
<key>count_second_left</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0 seconds left</string>
|
||||
<key>one</key>
|
||||
<string>1 second left</string>
|
||||
<key>few</key>
|
||||
<string>%ld seconds left</string>
|
||||
<key>many</key>
|
||||
<string>%ld seconds left</string>
|
||||
<key>other</key>
|
||||
<string>%ld seconds left</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.year.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_year_ago_abbr@</string>
|
||||
<key>count_year_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0y ago</string>
|
||||
<key>one</key>
|
||||
<string>1y ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldy ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldy ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldy ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.month.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_month_ago_abbr@</string>
|
||||
<key>count_month_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0M ago</string>
|
||||
<key>one</key>
|
||||
<string>1M ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldM ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldM ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldM ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.day.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_day_ago_abbr@</string>
|
||||
<key>count_day_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0d ago</string>
|
||||
<key>one</key>
|
||||
<string>1d ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldd ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldd ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldd ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.hour.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_hour_ago_abbr@</string>
|
||||
<key>count_hour_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0h ago</string>
|
||||
<key>one</key>
|
||||
<string>1h ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldh ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldh ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldh ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.minute.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_minute_ago_abbr@</string>
|
||||
<key>count_minute_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0m ago</string>
|
||||
<key>one</key>
|
||||
<string>1m ago</string>
|
||||
<key>few</key>
|
||||
<string>%ldm ago</string>
|
||||
<key>many</key>
|
||||
<string>%ldm ago</string>
|
||||
<key>other</key>
|
||||
<string>%ldm ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>date.second.ago.abbr</key>
|
||||
<dict>
|
||||
<key>NSStringLocalizedFormatKey</key>
|
||||
<string>%#@count_second_ago_abbr@</string>
|
||||
<key>count_second_ago_abbr</key>
|
||||
<dict>
|
||||
<key>NSStringFormatSpecTypeKey</key>
|
||||
<string>NSStringPluralRuleType</string>
|
||||
<key>NSStringFormatValueTypeKey</key>
|
||||
<string>ld</string>
|
||||
<key>zero</key>
|
||||
<string>0s ago</string>
|
||||
<key>one</key>
|
||||
<string>1s ago</string>
|
||||
<key>few</key>
|
||||
<string>%lds ago</string>
|
||||
<key>many</key>
|
||||
<string>%lds ago</string>
|
||||
<key>other</key>
|
||||
<string>%lds ago</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
@ -123,7 +123,7 @@ public struct AttachmentView: View {
|
||||
case .remove:
|
||||
switch viewModel.uploadState {
|
||||
case .compressing:
|
||||
return "Compressing..." // TODO: i18n
|
||||
return L10n.Scene.Compose.Attachment.compressingState
|
||||
default:
|
||||
if viewModel.fractionCompleted < 0.9 {
|
||||
let totalSizeInByte = viewModel.outputSizeInByte
|
||||
@ -132,7 +132,7 @@ public struct AttachmentView: View {
|
||||
let upload = viewModel.byteCountFormatter.string(fromByteCount: Int64(uploadSizeInByte))
|
||||
return "\(upload) / \(total)"
|
||||
} else {
|
||||
return "Server Processing..." // TODO: i18n
|
||||
return L10n.Scene.Compose.Attachment.serverProcessingState
|
||||
}
|
||||
}
|
||||
case .retry:
|
||||
|
@ -479,14 +479,14 @@ extension ComposeContentViewModel {
|
||||
public var errorDescription: String? {
|
||||
switch self {
|
||||
case .pollHasEmptyOption:
|
||||
return "The poll is invalid" // TODO: i18n
|
||||
return L10n.Scene.Compose.Poll.thePollIsInvalid
|
||||
}
|
||||
}
|
||||
|
||||
public var failureReason: String? {
|
||||
switch self {
|
||||
case .pollHasEmptyOption:
|
||||
return "The poll has empty option" // TODO: i18n
|
||||
return L10n.Scene.Compose.Poll.thePollHasEmptyOption
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
strings:
|
||||
inputs:
|
||||
- MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings
|
||||
- MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.stringsdict
|
||||
- MastodonSDK/Sources/MastodonLocalization/Resources/Base.lproj/Localizable.strings
|
||||
- MastodonSDK/Sources/MastodonLocalization/Resources/Base.lproj/Localizable.stringsdict
|
||||
outputs:
|
||||
- templateName: structured-swift5
|
||||
output: MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift
|
||||
|
@ -7,15 +7,28 @@ PODS_ROOT='Pods'
|
||||
|
||||
echo ${SRCROOT}
|
||||
|
||||
# task 1 generate strings file
|
||||
# Task 1
|
||||
# here we use the template source as input to
|
||||
# generate strings so we could use new strings
|
||||
# before sync to Crowdin
|
||||
|
||||
# clean Base.lproj
|
||||
rm -rf ${SRCROOT}/Localization/StringsConvertor/input/Base.lproj
|
||||
# copy tempate sources
|
||||
mkdir ${SRCROOT}/Localization/StringsConvertor/input/Base.lproj
|
||||
cp ${SRCROOT}/Localization/app.json ${SRCROOT}/Localization/StringsConvertor/input/Base.lproj/app.json
|
||||
cp ${SRCROOT}/Localization/ios-infoPlist.json ${SRCROOT}/Localization/StringsConvertor/input/Base.lproj/ios-infoPlist.json
|
||||
cp ${SRCROOT}/Localization/Localizable.stringsdict ${SRCROOT}/Localization/StringsConvertor/input/Base.lproj/Localizable.stringsdict
|
||||
|
||||
# Task 2 generate strings file
|
||||
cd ${SRCROOT}/Localization/StringsConvertor
|
||||
sh ./scripts/build.sh
|
||||
|
||||
# task 2 copy strings file
|
||||
# Task 3 copy strings file
|
||||
cp -R ${SRCROOT}/Localization/StringsConvertor/output/module/ ${SRCROOT}/MastodonSDK/Sources/MastodonLocalization/Resources
|
||||
cp -R ${SRCROOT}/Localization/StringsConvertor/Intents/output/ ${SRCROOT}/MastodonIntent
|
||||
|
||||
# task 3 swiftgen
|
||||
# Task 4 swiftgen
|
||||
cd ${SRCROOT}
|
||||
echo "${PODS_ROOT}/SwiftGen/bin/swiftgen"
|
||||
if [[ -f "${PODS_ROOT}/SwiftGen/bin/swiftgen" ]] then
|
||||
@ -24,6 +37,6 @@ else
|
||||
echo "Run 'bundle exec pod install' or update your CocoaPods installation."
|
||||
fi
|
||||
|
||||
#task 4 clean temp file
|
||||
# Task 5 clean temp file
|
||||
rm -rf ${SRCROOT}/Localization/StringsConvertor/output
|
||||
rm -rf ${SRCROOT}/Localization/StringsConvertor/intents/output
|
||||
|
Loading…
x
Reference in New Issue
Block a user