527 lines
13 KiB
Dart
Executable File
527 lines
13 KiB
Dart
Executable File
import 'dart:ui';
|
|
import 'package:get/get.dart';
|
|
|
|
import '../tools/app_manager.dart';
|
|
|
|
enum AppDept {
|
|
starLock,
|
|
}
|
|
|
|
extension ExtensionAppDept on AppDept {
|
|
static AppDept fromAppPackageName(String packageName) {
|
|
AppDept dept = AppDept.starLock;
|
|
packageName = packageName.toLowerCase();
|
|
if (packageName.contains('starLock')) {
|
|
dept = AppDept.starLock;
|
|
}
|
|
return dept;
|
|
}
|
|
|
|
List<Locale> get deptSupportedLocales {
|
|
const Locale enL = Locale('en', 'US');
|
|
const Locale zhL = Locale('zh', 'CN');
|
|
const Locale twL = Locale('zh', 'TW');
|
|
const Locale frL = Locale('fr', 'FR');
|
|
const Locale ruL = Locale('ru', 'RU');
|
|
const Locale deL = Locale('de', 'DE');
|
|
const Locale jaL = Locale('ja', 'JP');
|
|
const Locale koL = Locale('ko', 'KR');
|
|
const Locale itL = Locale('it', 'IT');
|
|
const Locale ptL = Locale('pt', 'PT');
|
|
const Locale esL = Locale('es', 'ES');
|
|
const Locale arL = Locale('ar', 'SA');
|
|
const Locale viL = Locale('vi', 'VN');
|
|
const Locale msL = Locale('ms', 'MY');
|
|
const Locale nlL = Locale('nl', 'NL');
|
|
const Locale roL = Locale('ro', 'RO');
|
|
const Locale ltL = Locale('lt', 'LT');
|
|
const Locale svL = Locale('sv', 'SE');
|
|
const Locale etL = Locale('et', 'EE');
|
|
const Locale plL = Locale('pl', 'PL');
|
|
const Locale skL = Locale('sk', 'SK');
|
|
const Locale csL = Locale('cs', 'CZ');
|
|
const Locale elL = Locale('el', 'GR');
|
|
const Locale heL = Locale('he', 'IL');
|
|
const Locale trL = Locale('tr', 'TR');
|
|
const Locale huL = Locale('hu', 'HU');
|
|
const Locale bgL = Locale('bg', 'BG');
|
|
const Locale kkL = Locale('kk', 'KZ');
|
|
const Locale bnL = Locale('bn', 'BD');
|
|
const Locale hbsL = Locale('hr', 'BA');
|
|
const Locale thL = Locale('th', 'TH');
|
|
const Locale idL = Locale('id', 'ID');
|
|
const Locale fiL = Locale('fi', 'FI');
|
|
const Locale daL = Locale('da', 'DK');
|
|
const Locale ukL = Locale('uk', 'UA');
|
|
const Locale srCyrillic = Locale('sr', 'RS');
|
|
|
|
return [
|
|
enL,
|
|
zhL,
|
|
twL,
|
|
frL,
|
|
ruL,
|
|
deL,
|
|
jaL,
|
|
koL,
|
|
itL,
|
|
ptL,
|
|
esL,
|
|
arL,
|
|
viL,
|
|
msL,
|
|
nlL,
|
|
roL,
|
|
ltL,
|
|
svL,
|
|
etL,
|
|
plL,
|
|
skL,
|
|
csL,
|
|
elL,
|
|
heL,
|
|
trL,
|
|
huL,
|
|
bgL,
|
|
kkL,
|
|
bnL,
|
|
hbsL,
|
|
thL,
|
|
idL,
|
|
fiL,
|
|
daL,
|
|
ukL,
|
|
srCyrillic
|
|
];
|
|
}
|
|
}
|
|
|
|
AppDept appDept = ExtensionAppDept.fromAppPackageName(AppManager().packageName);
|
|
|
|
final List<Locale> appSupportedLocales = appDept.deptSupportedLocales;
|
|
|
|
enum LanguageType {
|
|
chinese,
|
|
english,
|
|
// 繁体中文
|
|
traditionalChinese,
|
|
// 法语
|
|
french,
|
|
// 俄语
|
|
russian,
|
|
// 德语
|
|
german,
|
|
// 日语
|
|
japanese,
|
|
// 韩语
|
|
korean,
|
|
// 意大利语
|
|
italian,
|
|
// 乌克兰语
|
|
// ukrainian,
|
|
// 葡萄牙语
|
|
portuguese,
|
|
// 西班牙语
|
|
spanish,
|
|
// 阿拉伯语
|
|
arabic,
|
|
// 越南语
|
|
vietnamese,
|
|
// 马莱语
|
|
malay,
|
|
// 荷兰语
|
|
dutch,
|
|
// 罗马尼亚语
|
|
romanian,
|
|
// 立陶宛语
|
|
lithuanian,
|
|
// 瑞典语
|
|
swedish,
|
|
// 爱沙尼亚语
|
|
estonian,
|
|
// 波兰语
|
|
polish,
|
|
// 斯洛伐克语
|
|
slovak,
|
|
// 捷克语
|
|
czech,
|
|
// 希腊语
|
|
greek,
|
|
// 希伯来语
|
|
hebrew,
|
|
// 塞尔维亚语(西里尔文)
|
|
serbian,
|
|
// 土耳其语
|
|
turkish,
|
|
// 匈牙利语
|
|
hungarian,
|
|
// 保加利亚语
|
|
bulgarian,
|
|
// 哈萨克斯坦语
|
|
kazakh,
|
|
// 孟加拉语
|
|
bengali,
|
|
// 克罗地亚语
|
|
croatian,
|
|
// 泰语
|
|
thai,
|
|
// 印度尼西亚语
|
|
indonesian,
|
|
// 芬兰语
|
|
finnish,
|
|
// 丹麦语
|
|
danish,
|
|
// 乌克兰语
|
|
ukrainian
|
|
}
|
|
|
|
extension ExtensionLanguageType on LanguageType {
|
|
String get lanTitle {
|
|
var str = '';
|
|
switch (this) {
|
|
case LanguageType.english:
|
|
str = '英文'.tr;
|
|
break;
|
|
case LanguageType.chinese:
|
|
str = '简体中文'.tr;
|
|
break;
|
|
case LanguageType.traditionalChinese:
|
|
str = '繁体中文'.tr;
|
|
break;
|
|
case LanguageType.french:
|
|
str = '法语'.tr;
|
|
break;
|
|
case LanguageType.russian:
|
|
str = '俄语'.tr;
|
|
break;
|
|
case LanguageType.german:
|
|
str = '德语'.tr;
|
|
break;
|
|
case LanguageType.japanese:
|
|
str = '日语'.tr;
|
|
break;
|
|
case LanguageType.korean:
|
|
str = '韩语'.tr;
|
|
break;
|
|
case LanguageType.italian:
|
|
str = '意大利语'.tr;
|
|
break;
|
|
case LanguageType.portuguese:
|
|
str = '葡萄牙语'.tr;
|
|
break;
|
|
case LanguageType.spanish:
|
|
str = '西班牙语'.tr;
|
|
break;
|
|
case LanguageType.arabic:
|
|
str = '阿拉伯语'.tr;
|
|
break;
|
|
case LanguageType.vietnamese:
|
|
str = '越南语'.tr;
|
|
break;
|
|
case LanguageType.malay:
|
|
str = '马来语'.tr;
|
|
break;
|
|
case LanguageType.dutch:
|
|
str = '荷兰语'.tr;
|
|
break;
|
|
case LanguageType.romanian:
|
|
str = '罗马尼亚语'.tr;
|
|
break;
|
|
case LanguageType.lithuanian:
|
|
str = '立陶宛语'.tr;
|
|
break;
|
|
case LanguageType.swedish:
|
|
str = '瑞典语'.tr;
|
|
break;
|
|
case LanguageType.estonian:
|
|
str = '爱沙尼亚语'.tr;
|
|
break;
|
|
case LanguageType.polish:
|
|
str = '波兰语'.tr;
|
|
break;
|
|
case LanguageType.slovak:
|
|
str = '斯洛伐克语'.tr;
|
|
break;
|
|
case LanguageType.czech:
|
|
str = '捷克语'.tr;
|
|
break;
|
|
case LanguageType.greek:
|
|
str = '希腊语'.tr;
|
|
break;
|
|
case LanguageType.hebrew:
|
|
str = '希伯来语'.tr;
|
|
break;
|
|
case LanguageType.serbian:
|
|
str = '塞尔维亚语'.tr;
|
|
break;
|
|
case LanguageType.turkish:
|
|
str = '土耳其语'.tr;
|
|
break;
|
|
case LanguageType.hungarian:
|
|
str = '匈牙利语'.tr;
|
|
break;
|
|
case LanguageType.bulgarian:
|
|
str = '保加利亚语'.tr;
|
|
break;
|
|
case LanguageType.kazakh:
|
|
str = '哈萨克斯坦语'.tr;
|
|
break;
|
|
case LanguageType.bengali:
|
|
str = '孟加拉语'.tr;
|
|
break;
|
|
case LanguageType.croatian:
|
|
str = '克罗地亚语'.tr;
|
|
break;
|
|
case LanguageType.thai:
|
|
str = '泰语'.tr;
|
|
break;
|
|
case LanguageType.indonesian:
|
|
str = '印度尼西亚语'.tr;
|
|
break;
|
|
case LanguageType.finnish:
|
|
str = '芬兰语'.tr;
|
|
break;
|
|
case LanguageType.danish:
|
|
str = '丹麦语'.tr;
|
|
break;
|
|
case LanguageType.ukrainian:
|
|
str = '乌克兰语'.tr;
|
|
break;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
// static LanguageType fromLanguageCode(String code) {
|
|
// LanguageType languageType = LanguageType.english;
|
|
// switch(code.toLowerCase()){
|
|
// case 'en':
|
|
// languageType = LanguageType.english;
|
|
// break;
|
|
// case 'zh':
|
|
// languageType = LanguageType.chinese;
|
|
// break;
|
|
// case 'tw':
|
|
// languageType = LanguageType.traditionalChinese;
|
|
// break;
|
|
// case 'fr':
|
|
// languageType = LanguageType.french;
|
|
// break;
|
|
// case 'ru':
|
|
// languageType = LanguageType.russian;
|
|
// break;
|
|
// case 'de':
|
|
// languageType = LanguageType.german;
|
|
// break;
|
|
// case 'ja':
|
|
// languageType = LanguageType.japanese;
|
|
// break;
|
|
// case 'ko':
|
|
// languageType = LanguageType.korean;
|
|
// break;
|
|
// case 'it':
|
|
// languageType = LanguageType.italian;
|
|
// break;
|
|
// // case 'uk':
|
|
// // languageType = LanguageType.ukrainian;
|
|
// // break;
|
|
// case 'pt':
|
|
// languageType = LanguageType.portuguese;
|
|
// break;
|
|
// case 'es':
|
|
// languageType = LanguageType.spanish;
|
|
// break;
|
|
// case 'ar':
|
|
// languageType = LanguageType.arabic;
|
|
// break;
|
|
// case 'vi':
|
|
// languageType = LanguageType.vietnamese;
|
|
// break;
|
|
// case 'ms':
|
|
// languageType = LanguageType.malay;
|
|
// break;
|
|
// case 'nl':
|
|
// languageType = LanguageType.dutch;
|
|
// break;
|
|
// case 'ro':
|
|
// languageType = LanguageType.romanian;
|
|
// break;
|
|
// case 'lt':
|
|
// languageType = LanguageType.lithuanian;
|
|
// break;
|
|
// case 'sv':
|
|
// languageType = LanguageType.swedish;
|
|
// break;
|
|
// case 'et':
|
|
// languageType = LanguageType.estonian;
|
|
// break;
|
|
// case 'pl':
|
|
// languageType = LanguageType.polish;
|
|
// break;
|
|
// case 'sk':
|
|
// languageType = LanguageType.slovak;
|
|
// break;
|
|
// case 'cs':
|
|
// languageType = LanguageType.czech;
|
|
// break;
|
|
// case 'el':
|
|
// languageType = LanguageType.greek;
|
|
// break;
|
|
// case 'he':
|
|
// languageType = LanguageType.hebrew;
|
|
// break;
|
|
// // case 'sr':
|
|
// // languageType = LanguageType.serbian;
|
|
// // break;
|
|
// case 'tr':
|
|
// languageType = LanguageType.turkish;
|
|
// break;
|
|
// case 'hu':
|
|
// languageType = LanguageType.hungarian;
|
|
// break;
|
|
// case 'bg':
|
|
// languageType = LanguageType.bulgarian;
|
|
// break;
|
|
// case 'kk':
|
|
// languageType = LanguageType.kazakh;
|
|
// break;
|
|
// case 'bn':
|
|
// languageType = LanguageType.bengali;
|
|
// break;
|
|
// case 'hr':
|
|
// languageType = LanguageType.croatian;
|
|
// break;
|
|
// case 'th':
|
|
// languageType = LanguageType.thai;
|
|
// break;
|
|
// case 'id':
|
|
// languageType = LanguageType.indonesian;
|
|
// break;
|
|
// case 'fi':
|
|
// languageType = LanguageType.finnish;
|
|
// break;
|
|
// case 'da':
|
|
// languageType = LanguageType.danish;
|
|
// break;
|
|
// }
|
|
// return languageType;
|
|
// }
|
|
|
|
static LanguageType fromLocale(Locale locale) {
|
|
LanguageType languageType = LanguageType.english;
|
|
final String code = locale.languageCode;
|
|
final String countryCode = locale.countryCode ?? '';
|
|
switch (code.toLowerCase()) {
|
|
case 'en':
|
|
languageType = LanguageType.english;
|
|
break;
|
|
case 'zh':
|
|
if (countryCode.toLowerCase() == 'cn') {
|
|
languageType = LanguageType.chinese;
|
|
} else {
|
|
languageType = LanguageType.traditionalChinese;
|
|
}
|
|
break;
|
|
case 'fr':
|
|
languageType = LanguageType.french;
|
|
break;
|
|
case 'ru':
|
|
languageType = LanguageType.russian;
|
|
break;
|
|
case 'de':
|
|
languageType = LanguageType.german;
|
|
break;
|
|
case 'ja':
|
|
languageType = LanguageType.japanese;
|
|
break;
|
|
case 'ko':
|
|
languageType = LanguageType.korean;
|
|
break;
|
|
case 'it':
|
|
languageType = LanguageType.italian;
|
|
break;
|
|
case 'pt':
|
|
languageType = LanguageType.portuguese;
|
|
break;
|
|
case 'es':
|
|
languageType = LanguageType.spanish;
|
|
break;
|
|
case 'ar':
|
|
languageType = LanguageType.arabic;
|
|
break;
|
|
case 'vi':
|
|
languageType = LanguageType.vietnamese;
|
|
break;
|
|
case 'ms':
|
|
languageType = LanguageType.malay;
|
|
break;
|
|
case 'nl':
|
|
languageType = LanguageType.dutch;
|
|
break;
|
|
case 'ro':
|
|
languageType = LanguageType.romanian;
|
|
break;
|
|
case 'lt':
|
|
languageType = LanguageType.lithuanian;
|
|
break;
|
|
case 'sv':
|
|
languageType = LanguageType.swedish;
|
|
break;
|
|
case 'et':
|
|
languageType = LanguageType.estonian;
|
|
break;
|
|
case 'pl':
|
|
languageType = LanguageType.polish;
|
|
break;
|
|
case 'sk':
|
|
languageType = LanguageType.slovak;
|
|
break;
|
|
case 'cs':
|
|
languageType = LanguageType.czech;
|
|
break;
|
|
case 'el':
|
|
languageType = LanguageType.greek;
|
|
break;
|
|
case 'he':
|
|
languageType = LanguageType.hebrew;
|
|
break;
|
|
case 'sr':
|
|
languageType = LanguageType.serbian;
|
|
break;
|
|
case 'tr':
|
|
languageType = LanguageType.turkish;
|
|
break;
|
|
case 'hu':
|
|
languageType = LanguageType.hungarian;
|
|
break;
|
|
case 'bg':
|
|
languageType = LanguageType.bulgarian;
|
|
break;
|
|
case 'kk':
|
|
languageType = LanguageType.kazakh;
|
|
break;
|
|
case 'bn':
|
|
languageType = LanguageType.bengali;
|
|
break;
|
|
case 'hr':
|
|
languageType = LanguageType.croatian;
|
|
break;
|
|
case 'th':
|
|
languageType = LanguageType.thai;
|
|
break;
|
|
case 'id':
|
|
languageType = LanguageType.indonesian;
|
|
break;
|
|
case 'fi':
|
|
languageType = LanguageType.finnish;
|
|
break;
|
|
case 'da':
|
|
languageType = LanguageType.danish;
|
|
break;
|
|
case 'uk':
|
|
languageType = LanguageType.ukrainian;
|
|
break;
|
|
}
|
|
return languageType;
|
|
}
|
|
}
|