Translate JSON, ARB and JSON Lines files
Translate .json, .arb, .resjson, .jsonl and .ndjson files up to 8 MB into one or several languages. Keys, nesting and placeholders stay intact. Example instructions included.
JSON files (.json), Flutter ARB (.arb), Windows app resources (.resjson) and JSON Lines (.jsonl, .ndjson) are accepted up to 8 MB. Keys are structure, not words: they are never sent as translatable text, so they cannot come back translated. Only string values change.
What is translated, and what is left alone
| Translated | Left as it was | |
|---|---|---|
| JSON, resjson | String values at any depth | Keys, nesting, array order, numbers, booleans, nulls |
| ARB | Message strings | Keys, @ metadata entries when you say so, {placeholders} and ICU plural syntax |
| JSON Lines | The text fields you name, record by record | Keys and their order, ids, numbers, one record per line |
Placeholders such as {count}, {{name}}, %s and $1, and ICU syntax such as {count, plural, one{...} other{...}}, are kept in the translated string and placed where the target language needs them. Name any unusual convention in your instruction.
What you can ask
One job instead of one upload per language.
Translate the values into French, German and Spanish. Keep placeholders such as {{name}} and {count} unchanged.
Adds only what is missing, for the next release.
Translate only the keys that are missing from the French file, and keep the existing French translations.
Returns just the keys that were written.
Translate into Italian and return only the keys you changed.
For Flutter: keeps the descriptions that gen-l10n expects.
Translate the messages into Portuguese. Leave the @@locale value and all @ metadata entries as they are, and keep ICU plural syntax intact.
For a dataset or an export: ids and labels are not words.
Translate the title and description fields into French. Leave id, price and category unchanged.
Good to know
- Several languages in one job for JSON, ARB, resjson and JSON Lines. The plan shows where each language will be written: by default a sibling key with a language suffix next to the original, such as
title_fr. If your project expects one file per language (en.json,fr.json), translate once per language instead and you get one clean file each time. - Output filter. Available for JSON (“only the keys you changed”). The other formats on this page return the whole file.
- Formatting. JSON is written back with two-space indentation, so a source formatted differently can show whitespace changes in a diff. Keys keep their order. JSON Lines is written back compact, one record per line.
@@locale. An ARB file keeps its@@localevalue unless you ask for it to change. Set it to the target locale before you ship.- Plurals. Languages with extra plural forms, such as Russian or Arabic, can need ICU branches the English source does not have. Check them in review.
- A broken JSON Lines record is named by line number and the file is refused until it is fixed.
- Ceiling. 8 MB, a locale folder at once is possible in a ZIP.
Related
- YAML and TOML, Android and Apple strings and gettext PO for other locale formats.
- CSV for the same content as rows.
- All file formats