app-starlock/lib/translations/translation_loader.dart
2024-05-18 14:57:02 +08:00

41 lines
1.3 KiB
Dart
Executable File

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 = <String, String>{},
_enMap = <String, String>{},
_keyMap = <String, String>{};
static Map<String,String> get zhDic => _zhMap;
static Map<String,String> get enDic => _enMap;
static LanKeyEntity? _lanKeyEntity;
static LanKeyEntity? get lanKeys => _lanKeyEntity;
static Future<void> 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((String jsonString){
final Map<String,dynamic> enJson = jsonDecode(jsonString);
final Map<String,String> map = <String, String>{};
enJson.forEach((String key,dynamic value) {
map[key] = value.toString();
});
return map;
}).onError((Object? error, StackTrace stackTrace){
return Future<Map<String,String>>.value(<String, String>{});
});
}