feat(i18n): add Azerbaijani, Kazakh, and Uzbek locales

Complete the contributed translations against the current English source and
register the locales in the language picker.

Fills the 51 keys the contributions predated, including the whole
downloads.backgroundWarning block that every locale must translate, and
restores the ${count} placeholder the sync-rule confirmation had dropped in all
three files.

Also corrects contributed strings: Azerbaijani "Imkan (Kopyalama)"
(possibility/copying) for resolution and several Turkish spellings, and Kazakh
Latin-script leaks ("Keyinirek", "Subtitr") plus Uzbek loanwords ("бош", "бир",
"муаммо") that do not read as Kazakh.

Consolidates #1689, #1690, and #1691.

Co-authored-by: Omc725 <98108290+Omc725@users.noreply.github.com>
This commit is contained in:
edde746
2026-07-26 22:04:58 +02:00
co-authored by Omc725
parent 7677d1594c
commit 100d7729df
8 changed files with 16115 additions and 2 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+47 -2
View File
@@ -3,8 +3,8 @@
/// Source: lib/i18n /// Source: lib/i18n
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 19 /// Locales: 22
/// Strings: 28256 (1487 per locale) /// Strings: 32747 (1488 per locale)
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint, unused_import // ignore_for_file: type=lint, unused_import
@@ -16,6 +16,7 @@ import 'package:slang/generated.dart';
import 'package:slang_flutter/slang_flutter.dart'; import 'package:slang_flutter/slang_flutter.dart';
export 'package:slang_flutter/slang_flutter.dart'; export 'package:slang_flutter/slang_flutter.dart';
import 'strings_az.g.dart' deferred as l_az;
import 'strings_bg.g.dart' deferred as l_bg; import 'strings_bg.g.dart' deferred as l_bg;
import 'strings_da.g.dart' deferred as l_da; import 'strings_da.g.dart' deferred as l_da;
import 'strings_de.g.dart' deferred as l_de; import 'strings_de.g.dart' deferred as l_de;
@@ -24,6 +25,7 @@ import 'strings_fr.g.dart' deferred as l_fr;
import 'strings_hu.g.dart' deferred as l_hu; import 'strings_hu.g.dart' deferred as l_hu;
import 'strings_it.g.dart' deferred as l_it; import 'strings_it.g.dart' deferred as l_it;
import 'strings_ja.g.dart' deferred as l_ja; import 'strings_ja.g.dart' deferred as l_ja;
import 'strings_kk.g.dart' deferred as l_kk;
import 'strings_ko.g.dart' deferred as l_ko; import 'strings_ko.g.dart' deferred as l_ko;
import 'strings_nb.g.dart' deferred as l_nb; import 'strings_nb.g.dart' deferred as l_nb;
import 'strings_nl.g.dart' deferred as l_nl; import 'strings_nl.g.dart' deferred as l_nl;
@@ -32,6 +34,7 @@ import 'strings_pt.g.dart' deferred as l_pt;
import 'strings_ru.g.dart' deferred as l_ru; import 'strings_ru.g.dart' deferred as l_ru;
import 'strings_sv.g.dart' deferred as l_sv; import 'strings_sv.g.dart' deferred as l_sv;
import 'strings_tr.g.dart' deferred as l_tr; import 'strings_tr.g.dart' deferred as l_tr;
import 'strings_uz.g.dart' deferred as l_uz;
import 'strings_zh.g.dart' deferred as l_zh; import 'strings_zh.g.dart' deferred as l_zh;
import 'strings_zh_Hant.g.dart' deferred as l_zh_Hant; import 'strings_zh_Hant.g.dart' deferred as l_zh_Hant;
part 'strings_en.g.dart'; part 'strings_en.g.dart';
@@ -44,6 +47,7 @@ part 'strings_en.g.dart';
/// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check /// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check
enum AppLocale with BaseAppLocale<AppLocale, Translations> { enum AppLocale with BaseAppLocale<AppLocale, Translations> {
en(languageCode: 'en'), en(languageCode: 'en'),
az(languageCode: 'az'),
bg(languageCode: 'bg'), bg(languageCode: 'bg'),
da(languageCode: 'da'), da(languageCode: 'da'),
de(languageCode: 'de'), de(languageCode: 'de'),
@@ -52,6 +56,7 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
hu(languageCode: 'hu'), hu(languageCode: 'hu'),
it(languageCode: 'it'), it(languageCode: 'it'),
ja(languageCode: 'ja'), ja(languageCode: 'ja'),
kk(languageCode: 'kk'),
ko(languageCode: 'ko'), ko(languageCode: 'ko'),
nb(languageCode: 'nb'), nb(languageCode: 'nb'),
nl(languageCode: 'nl'), nl(languageCode: 'nl'),
@@ -60,6 +65,7 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
ru(languageCode: 'ru'), ru(languageCode: 'ru'),
sv(languageCode: 'sv'), sv(languageCode: 'sv'),
tr(languageCode: 'tr'), tr(languageCode: 'tr'),
uz(languageCode: 'uz'),
zh(languageCode: 'zh'), zh(languageCode: 'zh'),
zhHant(languageCode: 'zh', scriptCode: 'Hant'); zhHant(languageCode: 'zh', scriptCode: 'Hant');
@@ -86,6 +92,13 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver, cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver, ordinalResolver: ordinalResolver,
); );
case AppLocale.az:
await l_az.loadLibrary();
return l_az.TranslationsAz(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.bg: case AppLocale.bg:
await l_bg.loadLibrary(); await l_bg.loadLibrary();
return l_bg.TranslationsBg( return l_bg.TranslationsBg(
@@ -142,6 +155,13 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver, cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver, ordinalResolver: ordinalResolver,
); );
case AppLocale.kk:
await l_kk.loadLibrary();
return l_kk.TranslationsKk(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ko: case AppLocale.ko:
await l_ko.loadLibrary(); await l_ko.loadLibrary();
return l_ko.TranslationsKo( return l_ko.TranslationsKo(
@@ -198,6 +218,13 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver, cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver, ordinalResolver: ordinalResolver,
); );
case AppLocale.uz:
await l_uz.loadLibrary();
return l_uz.TranslationsUz(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.zh: case AppLocale.zh:
await l_zh.loadLibrary(); await l_zh.loadLibrary();
return l_zh.TranslationsZh( return l_zh.TranslationsZh(
@@ -228,6 +255,12 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver, cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver, ordinalResolver: ordinalResolver,
); );
case AppLocale.az:
return l_az.TranslationsAz(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.bg: case AppLocale.bg:
return l_bg.TranslationsBg( return l_bg.TranslationsBg(
overrides: overrides, overrides: overrides,
@@ -276,6 +309,12 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver, cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver, ordinalResolver: ordinalResolver,
); );
case AppLocale.kk:
return l_kk.TranslationsKk(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.ko: case AppLocale.ko:
return l_ko.TranslationsKo( return l_ko.TranslationsKo(
overrides: overrides, overrides: overrides,
@@ -324,6 +363,12 @@ enum AppLocale with BaseAppLocale<AppLocale, Translations> {
cardinalResolver: cardinalResolver, cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver, ordinalResolver: ordinalResolver,
); );
case AppLocale.uz:
return l_uz.TranslationsUz(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.zh: case AppLocale.zh:
return l_zh.TranslationsZh( return l_zh.TranslationsZh(
overrides: overrides, overrides: overrides,
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -421,6 +421,12 @@ class AppearanceSettingsScreen extends StatelessWidget {
return 'Български'; return 'Български';
case AppLocale.tr: case AppLocale.tr:
return 'Türkçe'; return 'Türkçe';
case AppLocale.az:
return 'Azərbaycanca';
case AppLocale.kk:
return 'Қазақша';
case AppLocale.uz:
return 'Oʻzbekcha';
} }
} }