dart语言太啰嗦了,无休止的嵌套和括号。。。。
1,添加依赖配置
pubspec.yaml
dependencies: flutter: sdk: flutter #i18n flutter_localizations: sdk: flutter 。。。 # 从这里往下新增依赖库 english_words: ^4.0.0 # 英语字母库 # animations: ^2.0.0 #动画 intl: ^0.17.0 # 本地配置国际化 。。。 flutter: 。。。 # 本地国际化 generate: true
注意,这个文件对空格有要求,格式化也不能解决。。。。
2,项目根目录创建i18n.yaml
跟pubspec.yaml平级
arb-dir: lib/l10n template-arb-file: intl_en.arb output-localization-file: test_hello_localizations.dart output-class: TestHelloLocalizations preferred-supported-locales: - en use-deferred-loading: true
指定生成的文件和类名
3,增加本地化模板
新增英文 lib/i10n/intl_en.arb json格式
{ "replyDraftsLabel": "Drafts", "@replyDraftsLabel": { "description": "Text label for Drafts destination." } }
4.,增加翻译
如增加中文
lib/i10n/intl_zh.arb
{ "replyDraftsLabel": "草稿" }
5,生成
编译后,在项目根目录 .dart_tool/flutter_gen/gen_i10n/下生成了三个文件
SENRSL:hello senrsl$ ls .dart_tool/flutter_gen/gen_l10n/
test_hello_localizations.dart test_hello_localizations_en.dart test_hello_localizations_zh.dart
SENRSL:hello senrsl$
对应
abstract class TestHelloLocalizations {} class TestHelloLocalizationsEn extends TestHelloLocalizations {} class TestHelloLocalizationsZh extends TestHelloLocalizations {}
动态代理模式,返回指定语言下的指定内容
6,应用入口配置使用本地语言
import 'package:flutter_gen/gen_l10n/test_hello_localizations.dart'; void main() { runApp(const MaterialApp( title: "顶级title", localizationsDelegates: [ TestHelloLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], // localizationsDelegates: TestHelloLocalizations.localizationsDelegates, supportedLocales: TestHelloLocalizations.supportedLocales, // supportedLocales: [ // Locale("en",""), // Locale("cn",""), // ], home: TestRun10Widget(), )); }
Global啥的应该不用加,配置方法在TestHelloLocalizations中有详细介绍。。。。
7,使用
import 'package:flutter_gen/gen_l10n/test_hello_localizations.dart'; label: TestHelloLocalizations.of(context)?.bottomNavigationCommentsTab,
8,总结
flutter一定是一堆无聊透顶的老太太们设计的,逻辑啰嗦,无语至极。
--
senRsl
2021年12月15日17:43:54
senRsl
2021年12月15日17:43:54
没有评论 :
发表评论