denny c081bb0014 添加 项目有效性验证的错误码 | 4 luni în urmă | |
---|---|---|
.vscode | 4 luni în urmă | |
assets | 4 luni în urmă | |
lib | 4 luni în urmă | |
test | 8 luni în urmă | |
tools | 1 an în urmă | |
.gitignore | 1 an în urmă | |
.metadata | 3 ani în urmă | |
CHANGELOG.md | 3 ani în urmă | |
LICENSE | 3 ani în urmă | |
README.md | 1 an în urmă | |
pubspec.yaml | 8 luni în urmă |
A internationalization and localization(i18n) package project for Flyinsono application.
1. 本案设计按照模块维护各自的翻译字典,所以使用结构化对象提供字典文字,切换语言会重新构建字典对象,保证内存中始终保持一个字典。
2. 各语言对应字典要求唯一,语言(Locale)作为唯一键,不接受注入多个使用相同语言的字典选项。
3. 新增语言翻译字典,强制要求实现所有模块的所有翻译项,请认真填写。
4. 虽然国际化所有代码都放置在顶层项目中,不意味着可以随意修改。如有扩展需要,请联系框架负责人进行开发,禁止魔改!
// i18nBook : FI18n单例当前翻译书的代理,供全局快速访问(FI18n.ins.currentBook)
// user : user模块
// login : login项,获得当前语言对应的翻译文字
FText(i18nBook.user.login);
FI18n.ins.switchLanguage(); // 顺序向下选择
FI18n.ins.switchLanguage(FLangKeyBookEnglish.LocleConst); // 选择指定的语言
if(FI18n.ins.isCurrentChinese){
print('当前是中文!');
}
// 在 lib/localization/langs 目录下创建语言字典类 de_de.dart (语言缩写_国家二字码.dart)
import 'dart:ui';
import '../key_book.dart';
class FLangKeyBookGermany extends FLangKeyBook {
FLangKeyBookGermany() : super(LocaleConst);
// 方便其他地方访问,非必须
static const LocaleConst = const Locale("de", "DE");
// 实现Application模块的字典构建
@override
ApplicationModule buildApplicationKeys() {
return ApplicationModule(
fisServerName: "Flyinsono server",
wechat: "WeChat",
cloudImage: 'Wolke bilder',
localScreenshot: 'Lokal screenshots',
report: 'Prüfbericht',
);
}
/* 实现其他模块的build方法 */
}
// 在启动时注入 main.dart
final localization = FI18n(defaultLangBook, [
FLangKeyBookOption(
FLangKeyBookEnglish.LocaleConst,
() => FLangKeyBookEnglish(),
),
// 在这里添加新的字典选项
FLangKeyBookOption(
FLangKeyBookGermany.LocaleConst,
() => FLangKeyBookGermany(),
),
]);
// 启动后实时注入,可无限覆盖
FI18n.ins.setKeyBook(
FLangKeyBookGermany.LocaleConst,
() => FLangKeyBookGermany(),
);
// 1. 在 lib/localization/modules 目录下创建模块类 test.dart
class TestModule {
const TestModule({
required this.unitTest,
});
final String unitTest;
}
// 2. 在 lib/localization/key_book.dart的 class FLangKeyBook 中添加字段
/// 测试模块
late final TestModule test = buildTestKeys();
/// 构建测试模块字典
TestModule buildTestKeys();
// 3. 对 lib/localization/langs 目录下所有语言字典类实现 buildTestKeys()
@override
TestModule buildUserKeys() {
return TestModule(
unitTest: "单元测试",
);
}
python .\tools\generator.md
assets
内 json
文件重新生成一遍 modules
文件夹class_mapping.json
,并且 key_book.dart
等文件不会自动更新,需要手动修改python .\tools\JSON2Excel.md
assets
内 json
文件将翻译的中英文值写入当前目录下的 output.xlsx
,如果该文件已存在则会覆盖python .\tools\Excel2JSON.md
INPUT_PATH
❗python .\tools\JSON2MD.md
md-outputs
文件夹内python .\tools\chat_gpt_process.md
md-outputs
文件夹内的所有 markdown 表格发送给 Chat-GPT 进行翻译优化,优化结果会输出到当前目录下的 gpt-outputs
文件夹内OPENAI_API_KEY
否则无权调用 ❗prompt.md
内提示词以获得更优质结果chat_gpt_process.md
内的 model
变量即可(当前默认 gpt-3.5-turbo)python .\tools\apply_gpt_outputs.md
gpt-outputs
文件夹内的所有优化结果应用到 assets
文件夹内的 json 文件中index.html
fis_lib_i18n
下的 assets
文件夹Ctrl+F
)Code
按钮可以直接复制对应代码,形如:i18nBook.auth.login.t
Copy All & Text
按钮可以直接复制对应中文的正则查找表达式('|")[\u4E00-\u9FA5]+.*\1
,形如:'杏聆荟'
、"杏聆荟"