关于 flutter-localization
flutter-localization 是一项为 Flutter 项目配置本地化的技能,面向需要管理多语言界面的开发者。它涵盖 ARB 文件、自动生成、区域格式化和 RTL 布局规则。
主要功能
- 01配置 flutter_localizations 与 intl
- 02设置 ARB 文件和代码生成
- 03通过 context.l10n 访问字符串
- 04使用 ICU 复数与选择格式
- 05支持 RTL 布局和区域测试
适用场景
- 01为 Flutter 界面添加新语言
- 02生成并维护本地化字符串
- 03按当前区域格式化日期、时间和数字
- 04测试 RTL 语言下的界面方向
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dhruvanbhalara/ skills --skill flutter-localization安装后在 Claude Code 中输入/flutter-localization确认已加载。
详细介绍
本地化设置
- 使用 Flutter 内置的
flutter_localizations和intl包 - 在
pubspec.yaml中启用generate: true以自动生成代码 - 在项目根目录配置
l10n.yaml:arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart output-class: AppLocalizations nullable-getter: false
ARB 文件结构
- 将所有
.arb文件放在lib/l10n/中 - 使用
app_{locale}.arb命名约定(例如,app_en.arb、app_es.arb、app_hi.arb) - 模板 ARB 文件(
app_en.arb)必须为每个键包含@元数据:{ "loginTitle": "Sign In", "@loginTitle": { "description": "Title on the login screen" }, "itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}", "@itemCount": { "description": "Item count with pluralization", "placeholders": { "count": { "type": "int" } } } } - 键命名:使用
featureName_context格式(例如,settings_title、login_emailHint) - 在 ARB 文件中按功能分组键,并用注释分隔
使用规则
- 使用
BuildContext扩展通过context.l10n.keyName访问字符串 - 严格禁止在代码库的任何位置硬编码面向用户的字符串
- 严格禁止在
initState()中或组件树之外使用.l10n——必须能够访问context - 对于日期、时间和数字格式化,使用
intl包中采用当前地区设置的格式化器
复数与选择形式
- 对可计数项使用 ICU 复数语法:
{count, plural, =0{...} =1{...} other{...}} - 对性别或类别使用 ICU 选择语法:
{gender, select, male{...} female{...} other{...}} - 始终包含
other情况作为回退
RTL 支持
- 使用支持
Directionality和TextDirection的组件 - 对内边距和外边距优先使用
EdgeInsetsDirectional,而不是EdgeInsets - 在
MainAxisAlignment和CrossAxisAlignment中使用start/end,而不是left/right - 在组件测试期间使用 RTL 地区设置进行测试
添加新语言
- 创建包含所有键的译文的
app_{locale}.arb - 运行
flutter gen-l10n(或依赖自动生成) - 将
Locale添加到MaterialApp中的supportedLocales - 使用新地区设置通过组件测试进行验证
评论
支持 Markdown