app-starlock/lib/translations/app_dept.dart

698 lines
19 KiB
Dart
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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');
const Locale ptBrL = Locale('pt', 'BR');
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,
ptBrL
];
}
}
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,
// 巴西葡萄牙语
brazilianPortuguese,
}
extension ExtensionLanguageType on LanguageType {
String get lanTitle {
var str = '';
switch (this) {
case LanguageType.english:
str = '英文'.tr + 'English';
break;
case LanguageType.chinese:
str = '简体中文'.tr + 'Simplified Chinese';
break;
case LanguageType.traditionalChineseTW:
str = '繁体中文(中国台湾)'.tr + 'Traditional Chinese TW';
break;
case LanguageType.traditionalChineseHK:
str = '繁体中文(中国香港)'.tr + 'Traditional Chinese HK';
break;
case LanguageType.french:
str = '法语'.tr + 'French';
break;
case LanguageType.russian:
str = '俄语'.tr + 'Russian';
break;
case LanguageType.german:
str = '德语'.tr + 'German';
break;
case LanguageType.japanese:
str = '日语'.tr + 'Japanese';
break;
case LanguageType.korean:
str = '韩语'.tr + 'Korean';
break;
case LanguageType.italian:
str = '意大利语'.tr + 'Italian';
break;
case LanguageType.portuguese:
str = '葡萄牙语'.tr + 'Portuguese';
break;
case LanguageType.spanish:
str = '西班牙语'.tr + 'Spanish';
break;
case LanguageType.arabic:
str = '阿拉伯语'.tr + 'Arabic';
break;
case LanguageType.vietnamese:
str = '越南语'.tr + 'Vietnamese';
break;
case LanguageType.malay:
str = '马来语'.tr + 'Malay';
break;
case LanguageType.dutch:
str = '荷兰语'.tr + 'Dutch';
break;
case LanguageType.romanian:
str = '罗马尼亚语'.tr + 'Romanian';
break;
case LanguageType.lithuanian:
str = '立陶宛语'.tr + 'Lithuanian';
break;
case LanguageType.swedish:
str = '瑞典语'.tr + 'Swedish';
break;
case LanguageType.estonian:
str = '爱沙尼亚语'.tr + 'Estonian';
break;
case LanguageType.polish:
str = '波兰语'.tr + 'Polish';
break;
case LanguageType.slovak:
str = '斯洛伐克语'.tr + 'Slovak';
break;
case LanguageType.czech:
str = '捷克语'.tr + 'Czech';
break;
case LanguageType.greek:
str = '希腊语'.tr + 'Greek';
break;
case LanguageType.hebrew:
str = '希伯来语'.tr + 'Hebrew';
break;
case LanguageType.serbian:
str = '塞尔维亚语'.tr + 'Serbian';
break;
case LanguageType.turkish:
str = '土耳其语'.tr + 'Turkish';
break;
case LanguageType.hungarian:
str = '匈牙利语'.tr + 'Hungarian';
break;
case LanguageType.bulgarian:
str = '保加利亚语'.tr + 'Bulgarian';
break;
case LanguageType.kazakh:
str = '哈萨克斯坦语'.tr + 'Kazakh';
break;
case LanguageType.bengali:
str = '孟加拉语'.tr + 'Bengali';
break;
case LanguageType.croatian:
str = '克罗地亚语'.tr + 'Croatian';
break;
case LanguageType.thai:
str = '泰语'.tr + 'Thai';
break;
case LanguageType.indonesian:
str = '印度尼西亚语'.tr + 'Indonesian';
break;
case LanguageType.finnish:
str = '芬兰语'.tr + 'Finnish';
break;
case LanguageType.danish:
str = '丹麦语'.tr + 'Danish';
break;
case LanguageType.ukrainian:
str = '乌克兰语'.tr + 'Ukrainian';
break;
case LanguageType.hindi:
str = '印地语'.tr + 'Hindi';
break;
case LanguageType.urdu:
str = '乌尔都语'.tr + 'Urdu';
break;
case LanguageType.armenian:
str = '亚美尼亚语'.tr + 'Armenian';
break;
case LanguageType.georgian:
str = '格鲁吉亚语'.tr + 'Georgian';
break;
case LanguageType.brazilianPortuguese:
str = '巴西葡萄牙语'.tr + 'Brazilian Portuguese';
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':
if (countryCode.toLowerCase() == 'br') {
languageType = LanguageType.brazilianPortuguese;
} else {
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.brazilianPortuguese:
if (locale.languageCode == 'pt' && locale.countryCode == 'BR') {
return locale;
}
break;
case LanguageType.system:
// TODO: Handle this case.
break;
}
}
return const Locale('en', 'US');
}
}