app-starlock/lib/translations/app_dept.dart

682 lines
18 KiB
Dart
Executable File

import 'dart:ui';
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.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 hkL = Locale('zh', 'HK');
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', 'HR');
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 hiL = Locale('hi', 'IN');
const Locale urL = Locale('ur', 'PK');
const Locale hyL = Locale('hy', 'AM');
const Locale kaL = Locale('ka', 'GE');
const Locale srCyrillic = Locale('sr', 'RS');
return [
enL,
zhL,
twL,
hkL,
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,
hiL,
urL,
hyL,
kaL,
srCyrillic
];
}
}
AppDept appDept = ExtensionAppDept.fromAppPackageName(AppManager().packageName);
final List<Locale> appSupportedLocales = appDept.deptSupportedLocales;
enum LanguageType {
system,
chinese,
english,
// 繁体中文(中国台湾)
traditionalChineseTW,
// 繁体中文(中国香港)
traditionalChineseHK,
// 法语
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,
//印地语、
hindi,
//乌尔都语
urdu,
//亚美尼亚语
armenian,
//格鲁吉亚语
georgian,
}
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.traditionalChineseTW:
str = '繁体中文(中国台湾)'.tr;
break;
case LanguageType.traditionalChineseHK:
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;
case LanguageType.hindi:
str = '印地语'.tr;
break;
case LanguageType.urdu:
str = '乌尔都语'.tr;
break;
case LanguageType.armenian:
str = '亚美尼亚语'.tr;
break;
case LanguageType.georgian:
str = '格鲁吉亚语'.tr;
break;
}
return str;
}
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 if (countryCode.toLowerCase() == 'tw') {
languageType = LanguageType.traditionalChineseTW;
} else if (countryCode.toLowerCase() == 'hk') {
languageType = LanguageType.traditionalChineseHK;
}
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;
case 'hi':
languageType = LanguageType.hindi;
break;
case 'ur':
languageType = LanguageType.urdu;
break;
case 'hy':
languageType = LanguageType.armenian;
break;
case 'ka':
languageType = LanguageType.georgian;
break;
default:
languageType = LanguageType.english;
break;
}
return languageType;
}
static Locale fromLanguageType(LanguageType languageType) {
for (Locale locale in appDept.deptSupportedLocales) {
switch (languageType) {
case LanguageType.english:
if (locale.languageCode == 'en' && locale.countryCode == 'US') {
return locale;
}
break;
case LanguageType.chinese:
if (locale.languageCode == 'zh' && locale.countryCode == 'CN') {
return locale;
}
break;
case LanguageType.traditionalChineseTW:
if (locale.languageCode == 'zh' && locale.countryCode == 'TW') {
return locale;
}
break;
case LanguageType.traditionalChineseHK:
if (locale.languageCode == 'zh' && locale.countryCode == 'HK') {
return locale;
}
break;
case LanguageType.french:
if (locale.languageCode == 'fr' && locale.countryCode == 'FR') {
return locale;
}
break;
case LanguageType.russian:
if (locale.languageCode == 'ru' && locale.countryCode == 'RU') {
return locale;
}
break;
case LanguageType.german:
if (locale.languageCode == 'de' && locale.countryCode == 'DE') {
return locale;
}
break;
case LanguageType.japanese:
if (locale.languageCode == 'ja' && locale.countryCode == 'JP') {
return locale;
}
break;
case LanguageType.korean:
if (locale.languageCode == 'ko' && locale.countryCode == 'KR') {
return locale;
}
break;
case LanguageType.italian:
if (locale.languageCode == 'it' && locale.countryCode == 'IT') {
return locale;
}
break;
case LanguageType.portuguese:
if (locale.languageCode == 'pt' && locale.countryCode == 'PT') {
return locale;
}
break;
case LanguageType.spanish:
if (locale.languageCode == 'es' && locale.countryCode == 'ES') {
return locale;
}
break;
case LanguageType.arabic:
if (locale.languageCode == 'ar' && locale.countryCode == 'SA') {
return locale;
}
break;
case LanguageType.vietnamese:
if (locale.languageCode == 'vi' && locale.countryCode == 'VN') {
return locale;
}
break;
case LanguageType.malay:
if (locale.languageCode == 'ms' && locale.countryCode == 'MY') {
return locale;
}
break;
case LanguageType.dutch:
if (locale.languageCode == 'nl' && locale.countryCode == 'NL') {
return locale;
}
break;
case LanguageType.romanian:
if (locale.languageCode == 'ro' && locale.countryCode == 'RO') {
return locale;
}
break;
case LanguageType.lithuanian:
if (locale.languageCode == 'lt' && locale.countryCode == 'LT') {
return locale;
}
break;
case LanguageType.swedish:
if (locale.languageCode == 'sv' && locale.countryCode == 'SE') {
return locale;
}
break;
case LanguageType.estonian:
if (locale.languageCode == 'et' && locale.countryCode == 'EE') {
return locale;
}
break;
case LanguageType.polish:
if (locale.languageCode == 'pl' && locale.countryCode == 'PL') {
return locale;
}
break;
case LanguageType.slovak:
if (locale.languageCode == 'sk' && locale.countryCode == 'SK') {
return locale;
}
break;
case LanguageType.czech:
if (locale.languageCode == 'cs' && locale.countryCode == 'CZ') {
return locale;
}
break;
case LanguageType.greek:
if (locale.languageCode == 'el' && locale.countryCode == 'GR') {
return locale;
}
break;
case LanguageType.hebrew:
if (locale.languageCode == 'he' && locale.countryCode == 'IL') {
return locale;
}
break;
case LanguageType.serbian:
if (locale.languageCode == 'sr' && locale.countryCode == 'RS') {
return locale;
}
break;
case LanguageType.turkish:
if (locale.languageCode == 'tr' && locale.countryCode == 'TR') {
return locale;
}
break;
case LanguageType.hungarian:
if (locale.languageCode == 'hu' && locale.countryCode == 'HU') {
return locale;
}
break;
case LanguageType.bulgarian:
if (locale.languageCode == 'bg' && locale.countryCode == 'BG') {
return locale;
}
break;
case LanguageType.kazakh:
if (locale.languageCode == 'kk' && locale.countryCode == 'KZ') {
return locale;
}
break;
case LanguageType.bengali:
if (locale.languageCode == 'bn' && locale.countryCode == 'BD') {
return locale;
}
break;
case LanguageType.croatian:
if (locale.languageCode == 'hr' && locale.countryCode == 'HR') {
return locale;
}
break;
case LanguageType.thai:
if (locale.languageCode == 'th' && locale.countryCode == 'TH') {
return locale;
}
break;
case LanguageType.indonesian:
if (locale.languageCode == 'id' && locale.countryCode == 'ID') {
return locale;
}
break;
case LanguageType.finnish:
if (locale.languageCode == 'fi' && locale.countryCode == 'FI') {
return locale;
}
break;
case LanguageType.danish:
if (locale.languageCode == 'da' && locale.countryCode == 'DK') {
return locale;
}
break;
case LanguageType.ukrainian:
if (locale.languageCode == 'uk' && locale.countryCode == 'UA') {
return locale;
}
break;
case LanguageType.hindi:
if (locale.languageCode == 'hi' && locale.countryCode == 'HI') {
return locale;
}
break;
case LanguageType.urdu:
if (locale.languageCode == 'ur' && locale.countryCode == 'UR') {
return locale;
}
break;
case LanguageType.armenian:
if (locale.languageCode == 'hy' && locale.countryCode == 'AM') {
return locale;
}
break;
case LanguageType.georgian:
if (locale.languageCode == 'ka' && locale.countryCode == 'GE') {
return locale;
}
break;
case LanguageType.system:
// TODO: Handle this case.
break;
}
}
return const Locale('en', 'US');
}
}