Lingo.dev + .arb (Flutter)
Lingo.dev CLI translates Flutter Application Resource Bundle (ARB) files while preserving metadata, placeholder definitions, and Flutter's l10n conventions. The CLI works seamlessly with flutter gen-l10n
, maintains placeholder type definitions for IDE autocompletion, keeps developer context and documentation intact, and follows ARB specification standards exactly.
Quick Setup
Configure for Flutter's standard ARB file structure:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"flutter": {
"include": ["lib/l10n/app_[locale].arb"]
}
}
}
Reminder: [locale]
is a placeholder that should remain in the config literally, as it's replaced with the actual locale during CLI run.
Translate ARB Files
npx lingo.dev@latest i18n
Preserves ARB metadata, placeholder definitions, and Flutter-specific formatting while translating content.
Flutter ARB Features
Placeholders with Types
{
"welcomeMessage": "Hello {name}, you have {count} messages",
"@welcomeMessage": {
"description": "Welcome message with user name and count",
"placeholders": {
"name": {
"type": "String"
},
"count": {
"type": "int"
}
}
}
}
Plural Forms
{
"itemCount": "{count, plural, =0{no items} =1{one item} other{{count} items}}",
"@itemCount": {
"description": "Number of items",
"placeholders": {
"count": {
"type": "int"
}
}
}
}
Metadata Preservation
ARB metadata (@key
entries) remains untranslated:
- Descriptions: Developer context preserved
- Placeholders: Type definitions maintained
- Examples: Usage examples kept intact
- Custom Attributes: Any additional metadata preserved
Advanced Configuration
Multiple ARB Files
"flutter": {
"include": [
"lib/l10n/app_[locale].arb",
"lib/l10n/errors_[locale].arb"
]
}
Lock Metadata Keys
"flutter": {
"include": ["lib/l10n/app_[locale].arb"],
"lockedKeys": ["@@locale", "@@last_modified"]
}