app-starlock/star_lock/lib/translations/translation_loader.dart

41 lines
1.1 KiB
Dart
Raw Normal View History

2023-07-10 17:50:31 +08:00
part of lib_trans;
class TranslationLoader {
2023-07-15 15:11:28 +08:00
static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';
static bool get isEn => Get.locale?.languageCode.toLowerCase() == 'en';
2023-07-10 17:50:31 +08:00
static Map<String,String>
_zhMap = {},
_enMap = {},
_keyMap = {};
static Map<String,String> get zhDic => _zhMap;
static Map<String,String> get enDic => _enMap;
2023-07-15 15:11:28 +08:00
static LanKeyEntity? _lanKeyEntity;
static LanKeyEntity? get lanKeys => _lanKeyEntity;
2023-07-10 17:50:31 +08:00
static Future loadTranslation({
2023-07-15 15:11:28 +08:00
String? zhSource,
String? enSource,
String? keySource,}) async {
_zhMap = await _loadJsonFile(zhSource!);
_enMap = await _loadJsonFile(enSource!);
_keyMap = await _loadJsonFile(keySource!);
2023-07-10 17:50:31 +08:00
_lanKeyEntity = LanKeyEntity.fromJson(_keyMap);
}
static Future<Map<String,String>> _loadJsonFile(String filePath) async => rootBundle.loadString(filePath).then((jsonString){
Map<String,dynamic> enJson = jsonDecode(jsonString);
Map<String,String> map = {};
enJson.forEach((key, value) {
map[key] = value.toString();
});
return map;
}).onError((error, stackTrace){
return Future.value({});
});
}