Lingo.dev + .arb(Flutter)

Lingo.dev CLI 翻译 Flutter 应用资源包(ARB)文件,同时保留元数据、占位符定义以及 Flutter 的 l10n 约定。CLI 与 flutter gen-l10n 无缝协作,维护 IDE 自动补全的占位符类型定义,保留开发者上下文和文档,并严格遵循 ARB 规范标准。

快速设置

为 Flutter 的标准 ARB 文件结构进行配置:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "flutter": {
      "include": ["lib/l10n/app_[locale].arb"]
    }
  }
}

提醒[locale] 是一个占位符,在配置中应保持原样,因为它会在 CLI 运行时被实际的语言区域替换。

翻译 ARB 文件

npx lingo.dev@latest i18n

在翻译内容的同时保留 ARB 元数据、占位符定义和 Flutter 特定格式。

Flutter ARB 功能

带类型的占位符

{
  "welcomeMessage": "Hello {name}, you have {count} messages",
  "@welcomeMessage": {
    "description": "包含用户名和消息数量的欢迎信息",
    "placeholders": {
      "name": {
        "type": "String"
      },
      "count": {
        "type": "int"
      }
    }
  }
}

复数形式

{
  "itemCount": "{count, plural, =0{no items} =1{one item} other{{count} items}}",
  "@itemCount": {
    "description": "项目数量",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  }
}

元数据保留

ARB 元数据(@key 条目)保持不翻译:

  • 描述:保留开发者上下文
  • 占位符:维护类型定义
  • 示例:保留使用示例
  • 自定义属性:保留所有附加元数据

高级配置

多个 ARB 文件

"flutter": {
  "include": [
    "lib/l10n/app_[locale].arb",
    "lib/l10n/errors_[locale].arb"
  ]
}

锁定元数据键

"flutter": {
  "include": ["lib/l10n/app_[locale].arb"],
  "lockedKeys": ["@@locale", "@@last_modified"]
}