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"]
}