refactor: use weblate languages data

This commit is contained in:
Rongjian Zhang 2021-02-27 17:41:57 +08:00
parent 36a161cc3b
commit f64c02b10b
3 changed files with 612 additions and 44 deletions

View File

@ -17,32 +17,6 @@ class DialogOption<T> {
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<String, String> 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;

View File

@ -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<ThemeModel>(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();
}
},

598
lib/utils/locale.dart Normal file
View File

@ -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": "NKo",
"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",
};