Web apps
Translate i18next and react-intl JSON without breaking placeholders
Parla translates i18next, react-intl and vue-i18n JSON files and checks every {{name}}, {count}, ICU plural and select, $t() nesting and <0>…</0> Trans tag against the source in code. Plural keys like items_one and items_other are written with the forms each language needs. Broken strings can't be approved or exported.
Plans from $29 a month; free to start with 1,000 AI-translated words a month.
What Parla understands in your JSON
- Nested and flat files, written back in the same shape.
- i18next v4 plurals: items_one / items_other are treated as one string, and Russian or Polish get _few and _many keys added; Japanese gets only _other.
- Interpolation {{name}}, nesting $t(key), and react-i18next <0>…</0> or <bold>…</bold> component tags.
- ICU MessageFormat inside values (react-intl, FormatJS, vue-i18n): {name}, {count, plural, one {# item} other {# items}} and {gender, select, …}.
What blocks a string
Each of these stops a translation from being approved and from reaching an exported file, so the bug never ships:
- {{count}} missing, or renamed to {{nombre}}.
- A <1> tag without its </1>, or a tag the source doesn't have.
- A select option translated ("male" becoming "homme"), since select keys are code values.
- An ICU plural without "other", or an unbalanced brace.
An example
en.json → de.json
"cart_one": "{{count}} item" → "cart_one": "{{count}} Artikel""cart_other": "{{count}} items" → "cart_other": "{{count}} Artikel""invite": "<0>{{name}}</0> invited you" → "invite": "<0>{{name}}</0> hat dich eingeladen"
Fits your release flow
- Upload en.json each release: new and changed keys are found and only those are translated.
- Pull and push through a GitHub pull request, or call the API from CI.
- Key names such as checkout.pay_button tell the AI where a string lives; add a description or character limit where it matters.
Questions
Does Parla support i18next plural suffixes?
Yes, the v4 suffixes _zero, _one, _two, _few, _many and _other. They are grouped into one string for translation and review, and written back with the keys the target language needs, so a Russian file gets _one, _few, _many and _other.
Will it translate the text inside react-i18next Trans tags?
Yes. The text between <0> and </0> is translated, and the tags themselves must come back exactly. A translation that drops or adds a tag is blocked.