Flutter ARB File Generator
Paste your strings as key = value lines, CSV or JSON and get a valid app_en.arb with the @@locale header, descriptions and typed placeholders that gen-l10n expects. Runs in your browser, no signup.
Your strings
app_en.arb
{
"@@locale": "en",
"appTitle": "Shopping List",
"@appTitle": {
"description": ""
},
"greeting": "Hello, {name}!",
"@greeting": {
"description": "",
"placeholders": {
"name": {
"type": "String"
}
}
},
"itemCount": "{count, plural, =0{No items} one{1 item} other{{count} items}}",
"@itemCount": {
"description": "",
"placeholders": {
"count": {
"type": "int"
}
}
},
"totalPrice": "Total: {price}",
"@totalPrice": {
"description": "",
"placeholders": {
"price": {
"type": "double"
}
}
},
"deleteConfirm": "Delete \"{title}\"? This cannot be undone.",
"@deleteConfirm": {
"description": "",
"placeholders": {
"title": {
"type": "String"
}
}
},
"lastSync": "Last synced {when}",
"@lastSync": {
"description": "",
"placeholders": {
"when": {
"type": "DateTime"
}
}
}
}
Now translate it into every language
Import the generated file into FlutterLocalisation, pick your languages, and let AI fill them in one click. Placeholders and plurals stay intact, a reviewer approves per language, and the ARB files land in your Git repo.
Input formats
Frequently asked questions
What is an ARB file?
ARB (Application Resource Bundle) is the JSON format Flutter uses for translations. Each key maps to a string, and an optional @key entry holds the description and the placeholder types that gen-l10n needs to generate typed Dart code.
How do I create an ARB file from a list of strings?
Paste one line per string as key = value, or a CSV with key, value and description columns, or a plain JSON object. The generator writes the @@locale header, one @key entry per string with placeholders detected from {braces}, and camel-cases keys so gen-l10n accepts them.
How are placeholder types chosen?
From the name. count, total, index, days and similar become int; price, amount, percent become double; date, time, when become DateTime; everything else is String. The variable of an ICU plural is always int. Edit the type in the output if the guess is wrong.
Why does gen-l10n reject my key?
Keys become Dart getter names, so they must be valid identifiers: letters, digits and underscores, not starting with a digit. The generator rewrites "item count" to itemCount and warns you.
How do I translate the generated ARB into other languages?
Create one copy per language (app_de.arb, app_fr.arb) with the same keys. FlutterLocalisation imports the file you generated here and translates every language with AI in one click, keeping placeholders and plural forms intact.