|
@@ -4,7 +4,9 @@ import 'dart:ui';
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
|
import 'modules/index.dart';
|
|
|
-import 'types.dart' show IPropQueryable, ModuleBase, StringLocaleExtensions;
|
|
|
+import 'types.dart'
|
|
|
+ show FTrStr, IPropQueryable, ModuleBase, StringLocaleExtensions;
|
|
|
+import 'types.dart' as t show StringMapUtils;
|
|
|
|
|
|
/// 翻译字典
|
|
|
class FTrKeybook implements IPropQueryable {
|
|
@@ -22,11 +24,14 @@ class FTrKeybook implements IPropQueryable {
|
|
|
required this.measure,
|
|
|
required this.upload,
|
|
|
required this.errorCodes,
|
|
|
+ this.moduleMap,
|
|
|
});
|
|
|
|
|
|
/// 当前是否中文
|
|
|
bool get isCurrentChinese => locale.languageCode.toLowerCase() == "zh";
|
|
|
|
|
|
+ Map<String, dynamic>? moduleMap;
|
|
|
+
|
|
|
/// 字典语言
|
|
|
final Locale locale;
|
|
|
|
|
@@ -76,24 +81,27 @@ class FTrKeybook implements IPropQueryable {
|
|
|
throw ArgumentError(
|
|
|
"FTrKeybook .ctor: argument-map must be a not null Map<String, dynamic>.");
|
|
|
|
|
|
- return FTrKeybook._(locale,
|
|
|
- auth: map.pick(AuthModule.ModuleName, (v) => AuthModule(v)),
|
|
|
- bodyParts:
|
|
|
- map.pick(BodyPartsModule.ModuleName, (v) => BodyPartsModule(v)),
|
|
|
- common: map.pick(CommonModule.ModuleName, (v) => CommonModule(v)),
|
|
|
- homePage: map.pick(HomePageModule.ModuleName, (v) => HomePageModule(v)),
|
|
|
- profileComplete: map.pick(
|
|
|
- ProfileCompleteModule.ModuleName, (v) => ProfileCompleteModule(v)),
|
|
|
- setting: map.pick(SettingModule.ModuleName, (v) => SettingModule(v)),
|
|
|
- user: map.pick(UserModule.ModuleName, (v) => UserModule(v)),
|
|
|
- remedical:
|
|
|
- map.pick(RemedicalModule.ModuleName, (v) => RemedicalModule(v)),
|
|
|
- organization: map.pick(
|
|
|
- OrganizationModule.ModuleName, (v) => OrganizationModule(v)),
|
|
|
- measure: map.pick(MeasureModule.ModuleName, (v) => MeasureModule(v)),
|
|
|
- errorCodes:
|
|
|
- map.pick(ErrorCodesModule.ModuleName, (v) => ErrorCodesModule(v)),
|
|
|
- upload: map.pick(UploadModule.ModuleName, (v) => UploadModule(v)));
|
|
|
+ return FTrKeybook._(
|
|
|
+ locale,
|
|
|
+ auth: map.pick(AuthModule.ModuleName, (v) => AuthModule(v)),
|
|
|
+ bodyParts:
|
|
|
+ map.pick(BodyPartsModule.ModuleName, (v) => BodyPartsModule(v)),
|
|
|
+ common: map.pick(CommonModule.ModuleName, (v) => CommonModule(v)),
|
|
|
+ homePage: map.pick(HomePageModule.ModuleName, (v) => HomePageModule(v)),
|
|
|
+ profileComplete: map.pick(
|
|
|
+ ProfileCompleteModule.ModuleName, (v) => ProfileCompleteModule(v)),
|
|
|
+ setting: map.pick(SettingModule.ModuleName, (v) => SettingModule(v)),
|
|
|
+ user: map.pick(UserModule.ModuleName, (v) => UserModule(v)),
|
|
|
+ remedical:
|
|
|
+ map.pick(RemedicalModule.ModuleName, (v) => RemedicalModule(v)),
|
|
|
+ organization:
|
|
|
+ map.pick(OrganizationModule.ModuleName, (v) => OrganizationModule(v)),
|
|
|
+ measure: map.pick(MeasureModule.ModuleName, (v) => MeasureModule(v)),
|
|
|
+ errorCodes:
|
|
|
+ map.pick(ErrorCodesModule.ModuleName, (v) => ErrorCodesModule(v)),
|
|
|
+ upload: map.pick(UploadModule.ModuleName, (v) => UploadModule(v)),
|
|
|
+ moduleMap: map,
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
/// 通过json字符串构造创建字典
|
|
@@ -111,7 +119,7 @@ class FTrKeybook implements IPropQueryable {
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
- getProp(String propName) {
|
|
|
+ dynamic getProp(String propName) {
|
|
|
switch (propName) {
|
|
|
case AuthModule.ModuleName:
|
|
|
return auth;
|
|
@@ -120,6 +128,20 @@ class FTrKeybook implements IPropQueryable {
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ /// 获取翻译单元
|
|
|
+ ///
|
|
|
+ /// [moduleName] 模块名
|
|
|
+ ///
|
|
|
+ /// [key] 翻译键
|
|
|
+ FTrStr? getTrItem(String moduleName, String key) {
|
|
|
+ if (moduleMap?.containsKey(moduleName) == false) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ final map = moduleMap![moduleName]! as Map<String, dynamic>;
|
|
|
+ final item = t.StringMapUtils.pickTrStr(map, key);
|
|
|
+ return item;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
typedef T _ModuleBuilder<T>(Map<String, dynamic> v);
|