移动端出海,搞APP的就不得不提前预备应对方案,Flutter 实现国际化的方案有许多,例如:
flutter_localizationsIntlgetx
参考众多开源库,这里推荐一种较简单且容易理解的实现方案,通过flutter_localizations + getx组合实现多语言适配、切换刷新。具体实现方案如下:
通过Flutter的gen-l10n命令,基于arb资源文件生成对应的国际化语言文件及相关调用类
1. 准备
l10n.yaml- 在项目工程根目录新建一个
l10n.yaml文件 - 是
flutter gen-l10n命令的默认配置文件 gen-l10n命令的参数可以跟在命令行后面,同时也可以在项目中的l10n.yaml文件定义l10n.yaml大致内容
- 在项目工程根目录新建一个
arb-dir: lib/language/l10n #指定arb多国语文件目录
template-arb-file: app_zh.arb #指定arb多国语文件
output-dir: lib/language/l10n/gen
output-class: AppLocalizations
output-localization-file: app_localizations.dart #指定多国语配置生成的代码文件,代码中自动生成类文件AppLocalizations.dart
synthetic-package: false
untranslated-messages-file: lib/language/l10n/gen/app_localizations_untranslated.json
format: true
arb(Application Resource Bundle)文件- 准备要支持的国际化语言集合,如下:
#app_en.arb
{
"@@locale": "en",
"appVersion": "Version: {version}",
"@appVersion": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"helloWorld": "helloWorld"
}
#app_zh.arb
{
"@@locale": "zh",
"appVersion": "版本号: {version}",
"@appVersion": {
"placeholders": {
"version": {
"type": "String"
}
}
},
"helloWorld": "你好,世界"
}
2. 生成
在l10n.yaml同级目录下,运行命令flutter gen-l10n
生成的代码如下:
//app_localizations_en.dart
//略
//app_localizations_zh.dart
class AppLocalizationsZh extends AppLocalizations {
AppLocalizationsZh([String locale = 'zh']) : super(locale);

本文详细介绍了如何使用Flutter的gen-l10n工具配合GetX库实现移动应用的多语言国际化,包括配置l10n.yaml文件、生成arb文件、创建AppLocalizations类,以及在MaterialApp或GetMaterialApp中的集成和调用方法。
最低0.47元/天 解锁文章
1103

被折叠的 条评论
为什么被折叠?



