
Translate Flutter ARB Files in Seconds
Metadata intact. Placeholders preserved. Plural forms correct per CLDR. Your ARB files translated without breaking flutter gen-l10n.
ARB Translation Breaks Flutter Builds
ARB files look like JSON but aren't. They carry @-prefixed metadata entries, placeholder definitions with type annotations, and ICU plural forms that must follow CLDR rules exactly. Generic translation tools corrupt all of it — and flutter gen-l10n fails silently or throws cryptic errors.
@-prefixed metadata entries get translated or deleted, breaking placeholder definitions and descriptions
Placeholder names inside curly braces get translated, renamed, or stripped — causing runtime crashes
ICU plural forms need exact CLDR categories per language, but generic tools either skip them or generate invalid structures
The @@locale header gets corrupted or mismatched, causing flutter gen-l10n to assign translations to the wrong language
{
"@@locale": "en",
"appTitle": "My Flutter App",
"@appTitle": {
"description": "The title of the application"
},
"greeting": "Hello, {name}!",
"@greeting": {
"description": "A greeting with the user's name",
"placeholders": {
"name": {
"type": "String",
"example": "John"
}
}
},
"itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}",
"@itemCount": {
"description": "Number of items in the cart",
"placeholders": {
"count": {
"type": "int"
}
}
},
"lastLogin": "Last login: {date}",
"@lastLogin": {
"placeholders": {
"date": {
"type": "DateTime",
"format": "yMMMd"
}
}
}
}{
"@@locale": "de",
"appTitle": "Meine Flutter-App",
"@appTitle": {
"description": "The title of the application"
},
"greeting": "Hallo, {name}!",
"@greeting": {
"description": "A greeting with the user's name",
"placeholders": {
"name": {
"type": "String",
"example": "John"
}
}
},
"itemCount": "{count, plural, =0{Keine Artikel} =1{1 Artikel} other{{count} Artikel}}",
"@itemCount": {
"description": "Number of items in the cart",
"placeholders": {
"count": {
"type": "int"
}
}
},
"lastLogin": "Letzte Anmeldung: {date}",
"@lastLogin": {
"placeholders": {
"date": {
"type": "DateTime",
"format": "yMMMd"
}
}
}
}What i18n Agent Preserves
@ Metadata Entries
All @-prefixed metadata — descriptions, placeholders, and type annotations — are preserved exactly as defined
Placeholder Safety
Named placeholders like {userName}, {count}, and {price} are detected and left untouched across all translations
CLDR Plural Forms
ICU plural categories (zero, one, two, few, many, other) are generated correctly for each target language per CLDR rules
JSON Structure
Key ordering, nesting, and ARB-specific formatting match your source file for clean diffs
Works With Your Flutter Stack
How It Works

No manual copy-paste. No string extraction. Just translated files.
Try i18n Agent Now
Drop your translation file here
JSON, YAML, PO, XML, CSV, Markdown, Properties
or click to browse
Target languages
Frequently Asked Questions
Enterprise team?
Still stuck on a TMS contract? Let's talk about migrating.