diff --git a/Sources/Showcase/LocalizationPlayground.swift b/Sources/Showcase/LocalizationPlayground.swift index 11cc6d4..5e5f013 100644 --- a/Sources/Showcase/LocalizationPlayground.swift +++ b/Sources/Showcase/LocalizationPlayground.swift @@ -21,7 +21,13 @@ struct LocalizationPlayground: View { struct LocalizationPreview: View { @Environment(\.locale) var currentLocale @State var date = Date.now - + + private var calendar: Calendar { + var result = Calendar(identifier: .gregorian) + result.locale = Locale(identifier: currentLocale.identifier) + return result + } + func formatter(dateStyle: DateFormatter.Style, timeStyle: DateFormatter.Style) -> DateFormatter { let fmt = DateFormatter() fmt.dateStyle = dateStyle @@ -31,36 +37,61 @@ struct LocalizationPreview: View { } var body: some View { - VStack { - Text("Welcome") - .font(.largeTitle) - Text(LocalizedStringResource("Welcome")) - .font(.title) + ScrollView { + VStack { + Text("Welcome") + .font(.largeTitle) + Text(LocalizedStringResource("Welcome")) + .font(.title) - Divider() + Divider() - Text(verbatim: currentLocale.localizedString(forLanguageCode: currentLocale.language.languageCode?.identifier ?? currentLocale.identifier) ?? "") - .font(.title) - Text(verbatim: currentLocale.localizedString(forRegionCode: currentLocale.region?.identifier ?? currentLocale.identifier) ?? "") - .font(.title2) - Text(verbatim: currentLocale.localizedString(forScriptCode: currentLocale.language.script?.identifier ?? currentLocale.identifier) ?? "") - .font(.title2) + Text(verbatim: currentLocale.localizedString(forLanguageCode: currentLocale.language.languageCode?.identifier ?? currentLocale.identifier) ?? "") + .font(.title) + Text(verbatim: currentLocale.localizedString(forRegionCode: currentLocale.region?.identifier ?? currentLocale.identifier) ?? "") + .font(.title2) + Text(verbatim: currentLocale.localizedString(forScriptCode: currentLocale.language.script?.identifier ?? currentLocale.identifier) ?? "") + .font(.title2) - Divider() + Divider() - Text(verbatim: formatter(dateStyle: .full, timeStyle: .short).string(from: date)) - Text(verbatim: formatter(dateStyle: .none, timeStyle: .full).string(from: date)) + Text(verbatim: formatter(dateStyle: .full, timeStyle: .short).string(from: date)) + Text(verbatim: formatter(dateStyle: .none, timeStyle: .full).string(from: date)) - Text(verbatim: formatter(dateStyle: .long, timeStyle: .none).string(from: date)) - Text(verbatim: formatter(dateStyle: .none, timeStyle: .long).string(from: date)) + Text(verbatim: formatter(dateStyle: .long, timeStyle: .none).string(from: date)) + Text(verbatim: formatter(dateStyle: .none, timeStyle: .long).string(from: date)) - Text(verbatim: formatter(dateStyle: .medium, timeStyle: .none).string(from: date)) - Text(verbatim: formatter(dateStyle: .none, timeStyle: .medium).string(from: date)) + Text(verbatim: formatter(dateStyle: .medium, timeStyle: .none).string(from: date)) + Text(verbatim: formatter(dateStyle: .none, timeStyle: .medium).string(from: date)) - Text(verbatim: formatter(dateStyle: .short, timeStyle: .none).string(from: date)) - Text(verbatim: formatter(dateStyle: .none, timeStyle: .short).string(from: date)) + Text(verbatim: formatter(dateStyle: .short, timeStyle: .none).string(from: date)) + Text(verbatim: formatter(dateStyle: .none, timeStyle: .short).string(from: date)) - DatePicker("", selection: $date) + DatePicker("", selection: $date) + + Divider() + + let pluralizationTypes = [(0, "zero"), (1, "singular"), (2, "plural")] + ForEach(pluralizationTypes, id: \.0) { pluralizationType in + let numberOfDays = pluralizationType.0 + let localizedStringResource = LocalizedStringResource("repeats_every_day", locale: currentLocale) + let localizedString = String(localized: localizedStringResource) + Text(String.localizedStringWithFormat(localizedString, numberOfDays)).font(.body) + } + + Divider() + + let monthSymbols = calendar.shortMonthSymbols + let monthSymbolsToUse = monthSymbols.enumerated().filter { $0.offset % 2 == 0 }.map { $0.element }.prefix(3) + let monthSymbolsString = monthSymbolsToUse.joined(separator: ", ") + + ForEach(pluralizationTypes, id: \.0) { pluralizationType in + let numberOfYears = pluralizationType.0 + let localizedStringResource = LocalizedStringResource("repeats_every_year_in", locale: currentLocale) + let localizedString = String(localized: localizedStringResource) + Text(String.localizedStringWithFormat(localizedString, numberOfYears, monthSymbolsString)).font(.body) + } + } } .navigationTitle(currentLocale.localizedString(forIdentifier: currentLocale.identifier) ?? "???") } diff --git a/Sources/Showcase/Resources/Localizable.xcstrings b/Sources/Showcase/Resources/Localizable.xcstrings index 8e42cc9..cf6f805 100644 --- a/Sources/Showcase/Resources/Localizable.xcstrings +++ b/Sources/Showcase/Resources/Localizable.xcstrings @@ -2481,6 +2481,1132 @@ }, "Remove all pending notifications" : { + }, + "repeats_every_day" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل %1$d أيام" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل %1$d يومًا" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر يوميًا" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل %1$d يوم" + } + }, + "two" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل يومين" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "لا يتكرر أبدًا" + } + } + } + } + }, + "ca" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es repeteix diàriament" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es repeteix cada %1$d dies" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No es repeteix mai" + } + } + } + } + }, + "de" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederholt sich täglich" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederholt sich alle %1$d Tage" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederholt sich nie" + } + } + } + } + }, + "el" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Επαναλαμβάνεται καθημερινά" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Επαναλαμβάνεται κάθε %1$d ημέρες" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Δεν επαναλαμβάνεται ποτέ" + } + } + } + } + }, + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats daily" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats every %1$d days" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats never" + } + } + } + } + }, + "es" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se repite a diario" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se repite cada %1$d días" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se repite nunca" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se répète chaque jour" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se répète tous les %1$d jours" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne se répète jamais" + } + } + } + } + }, + "id" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berulang setiap %1$d hari" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tidak pernah berulang" + } + } + } + } + }, + "it" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ripete ogni giorno" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ripete ogni %1$d giorni" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non si ripete mai" + } + } + } + } + }, + "ja" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$d日ごとに繰り返す" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "繰り返さない" + } + } + } + } + }, + "ko" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$d일마다 반복" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "반복 안 함" + } + } + } + } + }, + "ms" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berulang setiap %1$d hari" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tidak pernah berulang" + } + } + } + } + }, + "nl" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herhaalt dagelijks" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herhaalt elke %1$d dagen" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herhaalt nooit" + } + } + } + } + }, + "pl" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co %1$d dni" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co %1$d dni" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się codziennie" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co %1$d dnia" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nigdy się nie powtarza" + } + } + } + } + }, + "pt-BR" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repete-se diariamente" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repete-se a cada %1$d dias" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nunca se repete" + } + } + } + } + }, + "ru" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется каждые %1$d дня" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется каждые %1$d дней" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется ежедневно" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется каждые %1$d дней" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Никогда не повторяется" + } + } + } + } + }, + "sv" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upprepas dagligen" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upprepas var %1$d:e dag" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upprepas aldrig" + } + } + } + } + }, + "th" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "ทำซ้ำทุก %1$d วัน" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "ไม่ทำซ้ำ" + } + } + } + } + }, + "tr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Her gün tekrarlanır" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Her %1$d günde bir tekrarlanır" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Asla tekrarlanmaz" + } + } + } + } + }, + "uk" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється кожні %1$d дні" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється кожні %1$d днів" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється щодня" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється кожні %1$d днів" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ніколи не повторюється" + } + } + } + } + }, + "vi" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lặp lại mỗi %1$d ngày" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không lặp lại" + } + } + } + } + }, + "zh-Hans" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "每 %1$d 天重复一次" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "从不重复" + } + } + } + } + }, + "zh-Hant" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "每 %1$d 天重複一次" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "從不重複" + } + } + } + } + } + } + }, + "repeats_every_year_in" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل %1$d سنوات في %2$@" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل %1$d سنة في %2$@" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر سنويًا في %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل %1$d سنة في %2$@" + } + }, + "two" : { + "stringUnit" : { + "state" : "translated", + "value" : "يتكرر كل سنتين في %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "لا يتكرر أبدًا" + } + } + } + } + }, + "ca" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es repeteix anualment el %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Es repeteix cada %1$d anys el %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No es repeteix mai" + } + } + } + } + }, + "de" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederholt sich jährlich im %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederholt sich alle %1$d Jahre im %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Wiederholt sich nie" + } + } + } + } + }, + "el" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Επαναλαμβάνεται ετησίως τον %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Επαναλαμβάνεται κάθε %1$d χρόνια τον %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Δεν επαναλαμβάνεται ποτέ" + } + } + } + } + }, + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats yearly in %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats every %1$d years in %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repeats never" + } + } + } + } + }, + "es" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se repite anualmente en %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se repite cada %1$d años en %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "No se repite nunca" + } + } + } + } + }, + "fr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se répète annuellement en %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Se répète tous les %1$d ans en %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ne se répète jamais" + } + } + } + } + }, + "id" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berulang setiap %1$d tahun pada bulan %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tidak pernah berulang" + } + } + } + } + }, + "it" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ripete ogni anno a %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Si ripete ogni %1$d anni a %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Non si ripete mai" + } + } + } + } + }, + "ja" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$d年ごとに %2$@に繰り返す" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "繰り返さない" + } + } + } + } + }, + "ko" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%1$d년마다 %2$@에 반복" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "반복 안 함" + } + } + } + } + }, + "ms" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Berulang setiap %1$d tahun pada %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Tidak pernah berulang" + } + } + } + } + }, + "nl" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herhaalt jaarlijks in %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herhaalt elke %1$d jaar in %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Herhaalt nooit" + } + } + } + } + }, + "pl" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co %1$d lata w %2$@" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co %1$d lat w %2$@" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co rok w %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Powtarza się co %1$d roku w %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nigdy się nie powtarza" + } + } + } + } + }, + "pt-BR" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repete-se anualmente em %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Repete-se a cada %1$d anos em %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Nunca se repete" + } + } + } + } + }, + "ru" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется каждые %1$d года в %2$@" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется каждые %1$d лет в %2$@" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется ежегодно в %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторяется каждые %1$d лет в %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Никогда не повторяется" + } + } + } + } + }, + "sv" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upprepas årligen i %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upprepas vart %1$d:e år i %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Upprepas aldrig" + } + } + } + } + }, + "th" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "ทำซ้ำทุก %1$d ปีในเดือน%2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "ไม่ทำซ้ำ" + } + } + } + } + }, + "tr" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Her yıl %2$@ ayında tekrarlanır" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Her %1$d yılda bir %2$@ ayında tekrarlanır" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Asla tekrarlanmaz" + } + } + } + } + }, + "uk" : { + "variations" : { + "plural" : { + "few" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється кожні %1$d роки у %2$@" + } + }, + "many" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється кожні %1$d років у %2$@" + } + }, + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється щороку у %2$@" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Повторюється кожні %1$d років у %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ніколи не повторюється" + } + } + } + } + }, + "vi" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "Lặp lại mỗi %1$d năm vào %2$@" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "Không lặp lại" + } + } + } + } + }, + "zh-Hans" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "每 %1$d 年的 %2$@ 重复一次" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "从不重复" + } + } + } + } + }, + "zh-Hant" : { + "variations" : { + "plural" : { + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "每 %1$d 年的 %2$@ 重複一次" + } + }, + "zero" : { + "stringUnit" : { + "state" : "translated", + "value" : "從不重複" + } + } + } + } + } + } }, "Repository item tap count: %lld" : {