app-starlock/star_lock/lib/translations/translation_loader.dart
2024-01-12 19:05:44 +08:00

41 lines
1.1 KiB
Dart

part of lib_trans;
class TranslationLoader {
static bool get isZh => Get.locale?.languageCode.toLowerCase() == 'zh';
static bool get isEn => Get.locale?.languageCode.toLowerCase() == 'en';
static Map<String,String>
_zhMap = {},
_enMap = {},
_keyMap = {};
static Map<String,String> get zhDic => _zhMap;
static Map<String,String> get enDic => _enMap;
static LanKeyEntity? _lanKeyEntity;
static LanKeyEntity? get lanKeys => _lanKeyEntity;
static Future loadTranslation({
String? zhSource,
String? enSource,
String? keySource,}) async {
_zhMap = await _loadJsonFile(zhSource!);
_enMap = await _loadJsonFile(enSource!);
_keyMap = await _loadJsonFile(keySource!);
_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({});
});
}