app-starlock/lib/translations/translation_loader.dart

41 lines
1.3 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>
2024-05-18 14:57:02 +08:00
_zhMap = <String, String>{},
_enMap = <String, String>{},
_keyMap = <String, String>{};
2023-07-10 17:50:31 +08:00
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
2024-05-18 14:57:02 +08:00
static Future<void> 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);
}
2024-05-18 14:57:02 +08:00
static Future<Map<String,String>> _loadJsonFile(String filePath) async => rootBundle.loadString(filePath).then((String jsonString){
final Map<String,dynamic> enJson = jsonDecode(jsonString);
final Map<String,String> map = <String, String>{};
enJson.forEach((String key,dynamic value) {
2023-07-10 17:50:31 +08:00
map[key] = value.toString();
});
return map;
2024-05-18 14:57:02 +08:00
}).onError((Object? error, StackTrace stackTrace){
return Future<Map<String,String>>.value(<String, String>{});
2023-07-10 17:50:31 +08:00
});
}