From f64c02b10b51be9e2df6436906216465e5668bf2 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Sat, 27 Feb 2021 17:41:57 +0800 Subject: [PATCH] refactor: use weblate languages data --- lib/models/theme.dart | 26 -- lib/screens/settings.dart | 32 +- lib/utils/locale.dart | 598 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 612 insertions(+), 44 deletions(-) create mode 100644 lib/utils/locale.dart diff --git a/lib/models/theme.dart b/lib/models/theme.dart index d8d1534..137e5b8 100644 --- a/lib/models/theme.dart +++ b/lib/models/theme.dart @@ -17,32 +17,6 @@ class DialogOption { DialogOption({this.value, this.widget}); } -class SupportedLocales { - static const en = 'en'; - static const hi = 'hi'; - static const es = 'es'; - static const nb_NO = 'nb_NO'; - static const pt_BR = 'pt_BR'; - static const zh_Hans = 'zh_Hans'; - static const values = [ - SupportedLocales.en, - SupportedLocales.hi, - SupportedLocales.es, - SupportedLocales.nb_NO, - SupportedLocales.pt_BR, - SupportedLocales.zh_Hans, - ]; - static const Map languageNameExpanded = { - 'en': 'English', - 'hi': 'हिन्दी', - 'es': 'Español', - 'nb_NO': 'Norsk bokmål (Norge) ', - 'pt_BR': 'Portugues (brasil)', - 'zh_Hans': '简体中文', - 'zh_Hant': '正体中文' - }; -} - class AppThemeType { static const material = 0; static const cupertino = 1; diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index d2eabf8..0a8bbb1 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -4,6 +4,7 @@ import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/code.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/scaffolds/single.dart'; +import 'package:git_touch/utils/locale.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/action_button.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; @@ -15,16 +16,6 @@ import 'package:tuple/tuple.dart'; import 'package:flutter_gen/gen_l10n/S.dart'; class SettingsScreen extends StatelessWidget { - // After translation finished, add locale name here to display in settings - static const localeNameMap = { - 'en': 'English', - 'hi': 'हिन्दी', - 'es': 'Español', - 'nb_NO': 'Norsk bokmål (Norge)', - 'pt_BR': 'Portugues (brasil)', - 'zh_Hans': '简体中文', - }; - @override Widget build(BuildContext context) { final theme = Provider.of(context); @@ -81,22 +72,27 @@ class SettingsScreen extends StatelessWidget { text: Text('App Language'), rightWidget: Text(theme.locale == null ? AppLocalizations.of(context).followSystem - : localeNameMap[theme.locale] ?? 'Unknown'), + : localeNameMap[theme.locale] ?? theme.locale), onTap: () { theme.showActions(context, [ - for (final e in [ - MapEntry(null, AppLocalizations.of(context).followSystem), - ...localeNameMap.entries + for (final key in [ + null, + ...AppLocalizations.supportedLocales + .map((l) => l.toString()) + .where((key) => localeNameMap[key] != null) ]) ActionItem( - text: e.value, + text: key == null + ? AppLocalizations.of(context).followSystem + : localeNameMap[key], onTap: (_) async { final res = await theme.showConfirm( context, - Text('Reload the App to take effect'), + Text( + 'The app will reload to make the language setting take effect'), ); - if (res && theme.locale != e.key) { - await theme.setLocale(e.key); + if (res && theme.locale != key) { + await theme.setLocale(key); auth.reloadApp(); } }, diff --git a/lib/utils/locale.dart b/lib/utils/locale.dart new file mode 100644 index 0000000..faf3dc8 --- /dev/null +++ b/lib/utils/locale.dart @@ -0,0 +1,598 @@ +/// https://github.com/WeblateOrg/language-data/blob/b94a8f45e9eddb33a607ccb5b924c8bd9db1b64b/languages.csv +/// +/// script: `replace(/(.*?);(.*?);.*/g, '"$1":"$2",')` +const localeNameMap = { + "aa": "Afar", + "ab": "Abkhazian", + "ace": "Acehnese", + "ach": "Acholi", + "ada": "Adangme", + "ady": "Adyghe", + "ae": "Avestan", + "af": "Afrikaans", + "afh": "Afrihili", + "aii": "Assyrian Neo-Aramaic", + "ain": "Ainu (Japan)", + "ak": "Akan", + "akk": "Akkadian", + "ale": "Aleut", + "alt": "Altai (Southern)", + "am": "Amharic", + "an": "Aragonese", + "ang": "English (Old)", + "anp": "Angika", + "ar": "Arabic", + "ar_BH": "Arabic (Bahrain)", + "ar_DZ": "Arabic (Algeria)", + "ar_EG": "Arabic (Egypt)", + "ar_KW": "Arabic (Kuwait)", + "ar_LY": "Arabic (Libya)", + "ar_MA": "Arabic (Morocco)", + "ar_SA": "Arabic (Saudi Arabia)", + "ar_XB": "Arabic (XB pseudolocale)", + "ar_YE": "Arabic (Yemen)", + "arc": "Aramaic", + "arn": "Mapudungun", + "arp": "Arapaho", + "ars": "Arabic (Najdi)", + "arw": "Arawak", + "as": "Assamese", + "asa": "Asu", + "ast": "Asturian", + "av": "Avaric", + "awa": "Awadhi", + "ay": "Aymará", + "ayc": "Aymara (Southern)", + "az": "Azerbaijani", + "azb": "Azerbaijani, South", + "ba": "Bashkir", + "bal": "Baluchi", + "ban": "Balinese", + "bar": "Bavarian", + "bas": "Basa (Cameroon)", + "be": "Belarusian", + "be_Latn": "Belarusian (latin)", + "bej": "Beja", + "bem": "Bemba", + "ber": "Berber", + "bez": "Bena", + "bg": "Bulgarian", + "bh": "Bihari", + "bho": "Bhojpuri", + "bi": "Bislama", + "bik": "Bikol", + "bin": "Bini", + "bla": "Siksika", + "bm": "Bambara", + "bn": "Bengali", + "bn_BD": "Bengali (Bangladesh)", + "bn_IN": "Bengali (India)", + "bnt": "Bantu (Other)", + "bo": "Tibetan", + "br": "Breton", + "bra": "Braj", + "brx": "Bodo", + "bs": "Bosnian", + "bs_Cyrl": "Bosnian (cyrillic)", + "bs_Latn": "Bosnian (latin)", + "bua": "Buriat", + "bug": "Buginese", + "byn": "Bilen", + "ca": "Catalan", + "ca@valencia": "Valencian", + "cad": "Caddo", + "cak": "Kaqchikel", + "car": "Galibi Carib", + "ce": "Chechen", + "ceb": "Cebuano", + "cgg": "Chiga", + "ch": "Chamorro", + "chb": "Chibcha", + "chg": "Chagatai", + "chk": "Chuukese", + "chm": "Mari", + "chn": "Chinook jargon", + "cho": "Choctaw", + "chp": "Chipewyan", + "chr": "Cherokee", + "chy": "Cheyenne", + "ckb": "Kurdish (Central)", + "ckb_IQ": "Kurdish (Central, Iraq)", + "ckb_IR": "Kurdish (Central, Iran)", + "co": "Corsican", + "cop": "Coptic", + "cpe": "Creoles and pidgins (English based)", + "cpf": "Creoles and pidgins (French-based)", + "cpp": "Creoles and pidgins (Portuguese-based)", + "cr": "Cree", + "crh": "Crimean Tatar", + "crp": "Creoles and pidgins", + "cs": "Czech", + "csb": "Kashubian", + "cu": "Slavonic (Old Church)", + "cv": "Chuvash", + "cy": "Welsh", + "da": "Danish", + "dak": "Dakota", + "dar": "Dargwa", + "de": "German", + "de@formal": "German (formal)", + "de@informal": "German (informal)", + "de_1901": "German (old spelling)", + "de_AT": "German (Austria)", + "de_CH": "German (Switzerland)", + "de_LU": "German (Luxembourg)", + "del": "Delaware", + "den": "Slave (Athapascan)", + "dgo": "Dogri", + "dgr": "Dogrib", + "din": "Dinka", + "doi": "Dogri", + "dsb": "Lower Sorbian", + "dua": "Duala", + "dum": "Dutch (Middle)", + "dv": "Dhivehi", + "dyu": "Dyula", + "dz": "Dzongkha", + "ee": "Ewe", + "efi": "Efik", + "egy": "Egyptian (Ancient)", + "eka": "Ekajuk", + "el": "Greek", + "elx": "Elamite", + "en": "English", + "en_AU": "English (Australia)", + "en_CA": "English (Canada)", + "en_GB": "English (United Kingdom)", + "en_IE": "English (Ireland)", + "en_IN": "English (India)", + "en_NZ": "English (New Zealand)", + "en_PH": "English (Philippines)", + "en_US": "English (United States)", + "en_XA": "English (XA pseudolocale)", + "en_ZA": "English (South Africa)", + "en_devel": "English (Developer)", + "enm": "English (Middle)", + "eo": "Esperanto", + "es": "Spanish", + "es_419": "Spanish (Latin America)", + "es_AR": "Spanish (Argentina)", + "es_BO": "Spanish (Bolivia)", + "es_CL": "Spanish (Chile)", + "es_CO": "Spanish (Colombia)", + "es_CR": "Spanish (Costa Rica)", + "es_DO": "Spanish (Dominican Republic)", + "es_EC": "Spanish (Ecuador)", + "es_MX": "Spanish (Mexico)", + "es_NI": "Spanish (Nicaragua)", + "es_PA": "Spanish (Panama)", + "es_PE": "Spanish (Peru)", + "es_PR": "Spanish (Puerto Rico)", + "es_SV": "Spanish (El Salvador)", + "es_US": "Spanish (American)", + "es_UY": "Spanish (Uruguay)", + "es_VE": "Spanish (Venezuela)", + "et": "Estonian", + "eu": "Basque", + "ewo": "Ewondo", + "ext": "Extremaduran", + "fa": "Persian", + "fa_AF": "Dari", + "fan": "Fang (Equatorial Guinea)", + "fat": "Fanti", + "ff": "Fulah", + "fi": "Finnish", + "fil": "Filipino", + "fj": "Fijian", + "fo": "Faroese", + "fon": "Fon", + "fr": "French", + "fr@formal": "French (formal)", + "fr@informal": "French (informal)", + "fr_AG": "French (Antigua and Barbuda)", + "fr_BE": "French (Belgium)", + "fr_CA": "French (Canada)", + "fr_CH": "French (Switzerland)", + "fr_LU": "French (Luxembourg)", + "fr_SN": "French (Senegal)", + "frm": "French (Middle)", + "fro": "French (Old)", + "frp": "Franco-Provençal", + "frr": "Frisian (Northern)", + "frs": "Frisian (Eastern)", + "fur": "Friulian", + "fy": "Frisian", + "ga": "Irish", + "gaa": "Ga", + "gay": "Gayo", + "gba": "Gbaya (Central African Republic)", + "gbm": "Garhwali", + "gd": "Gaelic", + "gez": "Ge'ez", + "gil": "Gilbertese", + "gl": "Galician", + "glk": "Gilaki", + "gmh": "High German (Middle)", + "gn": "Guarani", + "goh": "High German (Old)", + "gon": "Gondi", + "gor": "Gorontalo", + "got": "Gothic", + "grb": "Grebo", + "grc": "Greek (Ancient)", + "gsw": "Alemannic", + "gu": "Gujarati", + "gu_IN": "Gujarati (India)", + "gug": "Guaraní (Paraguayan)", + "gun": "Guaraní (Mbyá)", + "guw": "Gun", + "gv": "Manx", + "gwi": "Gwichʼin", + "ha": "Hausa", + "hai": "Haida", + "haw": "Hawaiian", + "he": "Hebrew", + "he_IL": "Hebrew (Israel)", + "hi": "Hindi", + "hi_Latn": "Hindi (latin)", + "hil": "Hiligaynon", + "hit": "Hittite", + "hmn": "Hmong", + "hne": "Chhattisgarhi", + "ho": "Hiri Motu", + "hr": "Croatian", + "hrx": "Hunsrik", + "hsb": "Upper Sorbian", + "ht": "Haitian", + "hu": "Hungarian", + "hup": "Hupa", + "hus": "Huastec", + "hy": "Armenian", + "hz": "Herero", + "ia": "Interlingua", + "iba": "Iban", + "id": "Indonesian", + "ie": "Occidental", + "ig": "Igbo", + "ii": "Nuosu", + "ik": "Inupiaq", + "ilo": "Iloko", + "inh": "Ingush", + "io": "Ido", + "is": "Icelandic", + "it": "Italian", + "it_CH": "Italian (Switzerland)", + "iu": "Inuktitut", + "ja": "Japanese", + "ja_KS": "Japanese (Kansai)", + "jam": "Jamaican Patois", + "jbo": "Lojban", + "jgo": "Ngomba", + "jmc": "Machame", + "jpr": "Judeo-Persian", + "jrb": "Judeo-Arabic", + "jv": "Javanese", + "ka": "Georgian", + "kaa": "Kara-Kalpak", + "kab": "Kabyle", + "kac": "Kachin", + "kaj": "Jju", + "kam": "Kamba (Kenya)", + "kaw": "Kawi", + "kbd": "Kabardian", + "kcg": "Tyap", + "kde": "Makonde", + "kea": "Kabuverdianu", + "kg": "Kongo", + "kha": "Khasi", + "kho": "Khotanese", + "ki": "Gikuyu", + "kj": "Kwanyama", + "kk": "Kazakh", + "kk_Latn": "Kazakh (latin)", + "kkj": "Kako", + "kl": "Greenlandic", + "km": "Khmer (Central)", + "kmb": "Kimbundu", + "kmr": "Kurdish (Northern)", + "kmr_Latn": "Kurdish (Northern, latin)", + "kn": "Kannada", + "ko": "Korean", + "kok": "Konkani", + "kos": "Kosraean", + "kpe": "Kpelle", + "kr": "Kanuri", + "krc": "Karachay-Balkar", + "krl": "Karelian", + "kru": "Kurukh", + "ks": "Kashmiri", + "ksb": "Shambala", + "ksh": "Colognian", + "ku": "Kurdish", + "kum": "Kumyk", + "kut": "Kutenai", + "kv": "Komi", + "kw": "Cornish", + "ky": "Kyrgyz", + "la": "Latin", + "lad": "Ladino", + "lag": "Langi", + "lah": "Lahnda", + "lam": "Lamba", + "lb": "Luxembourgish", + "lez": "Lezghian", + "lg": "Luganda", + "li": "Limburgish", + "lki": "Laki", + "lkt": "Lakota", + "ln": "Lingala", + "lo": "Lao", + "lol": "Mongo", + "loz": "Lozi", + "lt": "Lithuanian", + "ltg": "Latgalian", + "lu": "Luba-Katanga", + "lua": "Luba-Lulua", + "lui": "Luiseno", + "lun": "Lunda", + "luo": "Luo (Kenya and Tanzania)", + "lus": "Lushai", + "lv": "Latvian", + "mad": "Madurese", + "mag": "Magahi", + "mai": "Maithili", + "mak": "Makasar", + "man": "Mandingo", + "mas": "Masai", + "mdf": "Moksha", + "mdr": "Mandar", + "me": "Montenegrin", + "men": "Mende (Sierra Leone)", + "mfe": "Morisyen", + "mg": "Malagasy", + "mga": "Irish (Middle)", + "mgo": "Metaʼ", + "mh": "Marshallese", + "mhr": "Meadow Mari", + "mi": "Maori", + "mia": "Miami", + "mic": "Mi'kmaq", + "min": "Minangkabau", + "mjw": "Karbi", + "mk": "Macedonian", + "ml": "Malayalam", + "mn": "Mongolian", + "mnc": "Manchu", + "mni": "Manipuri", + "mnk": "Mandinka", + "moh": "Mohawk", + "mos": "Mossi", + "mr": "Marathi", + "ms": "Malay", + "ms_Arab": "Malay (Jawi)", + "mt": "Maltese", + "mus": "Creek", + "mwl": "Mirandese", + "mwr": "Marwari", + "my": "Burmese", + "myv": "Erzya", + "na": "Nauru", + "nah": "Nahuatl", + "nan": "Chinese (Min Nan)", + "nap": "Neapolitan", + "naq": "Nama", + "nb_NO": "Norwegian Bokmål", + "nd": "Ndebele (Northern)", + "nds": "German (Low)", + "ne": "Nepali", + "new": "Newari", + "ng": "Ndonga", + "nia": "Nias", + "niu": "Niuean", + "nl": "Dutch", + "nl_BE": "Dutch (Belgium)", + "nn": "Norwegian Nynorsk", + "nnh": "Ngiemboon", + "nog": "Nogai", + "non": "Norse (Old)", + "nqo": "N’Ko", + "nr": "Ndebele (Southern)", + "nso": "Pedi", + "nv": "Navaho", + "nwc": "Newari (Classical)", + "ny": "Nyanja", + "nym": "Nyamwezi", + "nyn": "Nyankole", + "nyo": "Nyoro", + "nzi": "Nzima", + "oc": "Occitan", + "oj": "Ojibwe", + "om": "Oromo", + "or": "Odia", + "os": "Ossetian", + "osa": "Osage", + "ota": "Turkish (Ottoman)", + "otk": "Kokturk", + "pa": "Punjabi", + "pag": "Pangasinan", + "pal": "Pahlavi", + "pam": "Pampanga", + "pap": "Papiamento", + "pau": "Palauan", + "peo": "Persian (Old)", + "phn": "Phoenician", + "pi": "Pali", + "pl": "Polish", + "pms": "Piemontese", + "pon": "Pohnpeian", + "pr": "Pirate", + "prg": "Prussian", + "pro": "Provençal (Old)", + "ps": "Pashto", + "pt": "Portuguese", + "pt_AO": "Portuguese (Angola)", + "pt_BR": "Portuguese (Brazil)", + "pt_PT": "Portuguese (Portugal)", + "qu": "Quechua", + "quc": "K'iche'", + "raj": "Rajasthani", + "rap": "Rapanui", + "rar": "Rarotongan", + "rcf": "Réunion Creole", + "rm": "Romansh", + "rn": "Rundi", + "ro": "Romanian", + "ro_MD": "Moldavian", + "rof": "Rombo", + "rom": "Romany", + "ru": "Russian", + "ru_UA": "Russian (Ukraine)", + "rue": "Rusyn", + "rup": "Macedo-Romanian", + "rw": "Kinyarwanda", + "rwk": "Rwa", + "sa": "Sanskrit", + "sad": "Sandawe", + "sah": "Yakut", + "sai": "South American Indian (Other)", + "sam": "Samaritan Aramaic", + "saq": "Samburu", + "sas": "Sasak", + "sat": "Santali", + "sc": "Sardinian", + "scn": "Sicilian", + "sco": "Scots", + "sd": "Sindhi", + "sdh": "Kurdish (Southern)", + "se": "Sami (Northern)", + "seh": "Sena", + "sel": "Selkup", + "ses": "Koyraboro Senni", + "sg": "Sango", + "sga": "Irish (Old)", + "sgn": "Sign Languages", + "shi": "Tachelhit", + "shn": "Shan", + "si": "Sinhala", + "sid": "Sidamo", + "sk": "Slovak", + "sl": "Slovenian", + "sm": "Samoan", + "sma": "Sami (Southern)", + "smi": "Sami", + "smj": "Sami (Lule)", + "sml": "Sama (Central)", + "smn": "Sami (Inari)", + "sms": "Sami (Skolt)", + "sn": "Shona", + "snk": "Soninke", + "so": "Somali", + "sog": "Sogdian", + "son": "Songhai", + "sq": "Albanian", + "sr": "Serbian", + "sr@ijekavian": "Serbian (Ijekavian)", + "sr@ijekavian_Latn": "Serbian (Ijekavian, latin)", + "sr_Cyrl": "Serbian (cyrillic)", + "sr_Latn": "Serbian (latin)", + "srn": "Sranan Tongo", + "srr": "Serer", + "ss": "Swati", + "ssy": "Saho", + "st": "Sotho (Southern)", + "su": "Sundanese", + "suk": "Sukuma", + "sus": "Susu", + "sux": "Sumerian", + "sv": "Swedish", + "sw": "Swahili", + "sw_CD": "Swahili (Congo)", + "sw_TZ": "Swahili (Tanzania)", + "syc": "Syriac (Classical)", + "syr": "Syriac", + "szl": "Silesian", + "ta": "Tamil", + "ta_LK": "Tamil (Sri Lanka)", + "te": "Telugu", + "tem": "Timne", + "teo": "Teso", + "ter": "Tereno", + "tet": "Tetum", + "tg": "Tajik", + "th": "Thai", + "ti": "Tigrinya", + "tig": "Tigre", + "tiv": "Tiv", + "tk": "Turkmen", + "tkl": "Tokelau", + "tl": "Tagalog", + "tlh-qaak": "Klingon (pIqaD)", + "tlh": "Klingon", + "tli": "Tlingit", + "tmh": "Tamashek", + "tn": "Tswana", + "to": "Tongan", + "tog": "Tonga (Nyasa)", + "tpi": "Tok Pisin", + "tr": "Turkish", + "trv": "Taroko", + "ts": "Tsonga", + "tsi": "Tsimshian", + "tsj": "Tshangla", + "tt": "Tatar", + "tt@iqtelif": "Tatar (IQTElif)", + "tum": "Tumbuka", + "tvl": "Tuvalu", + "tw": "Twi", + "ty": "Tahitian", + "tyv": "Tuvinian", + "tzj": "Tz'utujil", + "tzm": "Tamazight (Central Atlas)", + "udm": "Udmurt", + "ug": "Uyghur", + "uga": "Ugaritic", + "uk": "Ukrainian", + "umb": "Umbundu", + "und": "Undetermined", + "ur": "Urdu", + "ur_IN": "Urdu (India)", + "ur_PK": "Urdu (Pakistan)", + "uz": "Uzbek", + "uz_Latn": "Uzbek (latin)", + "vai": "Vai", + "ve": "Venda", + "vec": "Venetian", + "vi": "Vietnamese", + "vls": "Flemish (West)", + "vo": "Volapük", + "vot": "Votic", + "vun": "Vunjo", + "wa": "Walloon", + "wae": "German (Walser)", + "wal": "Wolaytta", + "war": "Waray (Philippines)", + "was": "Washo", + "wen": "Sorbian", + "wo": "Wolof", + "xal": "Kalmyk", + "xh": "Xhosa", + "xog": "Soga", + "yao": "Yao", + "yap": "Yapese", + "yi": "Yiddish", + "yo": "Yoruba", + "yue": "Yue", + "za": "Zhuang", + "zap": "Zapotec", + "zbl": "Blissymbols", + "zen": "Zenaga", + "zgh": "Tamazight (Standard Moroccan)", + "zh_Hans": "Chinese (Simplified)", + "zh_Hans_SG": "Chinese (Simplified, Singapore)", + "zh_Hant": "Chinese (Traditional)", + "zh_Hant_HK": "Chinese (Traditional, Hong Kong)", + "zh_Latn": "Chinese (Pinyin)", + "zu": "Zulu", + "zun": "Zuni", + "zza": "Zaza", +};