mcpField
F
flutter-localization

flutter-localization

github.com/dhruvanbhalara开发30115 次安装8 周前更新
代码仓库

关于 flutter-localization

flutter-localization 是一项为 Flutter 项目配置本地化的技能,面向需要管理多语言界面的开发者。它涵盖 ARB 文件、自动生成、区域格式化和 RTL 布局规则。

主要功能

  1. 01配置 flutter_localizations 与 intl
  2. 02设置 ARB 文件和代码生成
  3. 03通过 context.l10n 访问字符串
  4. 04使用 ICU 复数与选择格式
  5. 05支持 RTL 布局和区域测试

适用场景

  1. 01为 Flutter 界面添加新语言
  2. 02生成并维护本地化字符串
  3. 03按当前区域格式化日期、时间和数字
  4. 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 地区设置进行测试

添加新语言

  1. 创建包含所有键的译文的 app_{locale}.arb
  2. 运行 flutter gen-l10n(或依赖自动生成)
  3. 将 Locale 添加到 MaterialApp 中的 supportedLocales
  4. 使用新地区设置通过组件测试进行验证

评论

支持 Markdown