React
react-i18next · JSON · 46 languages · Free

Translate react-i18next, then read every line back before you ship

Drop in your locales/en/translation.json — KAERIS translates all 46 languages, then reads each line back to you in your own language and flags the ones worth a second look. Catch the shaky ones before release, not after. Interpolation, plural suffixes and <Trans> markup stay intact.

Translate your file $ pip install kaeris
Placeholder-safe Namespace-aware Plural-safe (_one/_other) <Trans> markup preserved No account needed
Localize your React app in 3 steps
1

Upload your namespace

Drop locales/en/translation.json, or run kaeris init --preset i18next to wire the CLI into your repo.

2

Pick target locales

46 languages — use the Europe/CIS/Asia presets or hand-pick exactly the locales your app ships.

3

Ship

Download translation.json per locale, or let the GitHub Action open a PR whenever new keys land.

Real i18next JSON, not a flattened copy

Before → after

locales/en/translation.json
{
  "welcome": "Welcome back, {{name}}!",
  "cart_count_one": "You have {{count}} item",
  "cart_count_other": "You have {{count}} items",
  "save": "Save changes"
}
locales/de/translation.json
{
  "welcome": "Willkommen zurück, {{name}}!",
  "cart_count_one": "Du hast {{count}} Artikel",
  "cart_count_other": "Du hast {{count}} Artikel",
  "save": "Änderungen speichern"
}

Every {{placeholder}} and every _one/_other plural key is translated per target locale with its suffix intact — KAERIS never collapses them into a single flat string.

JSX-safe

<Trans> markup passes through untouched

Welcome.jsx
// Source key: "welcome_html": "Welcome back, <strong>{{name}}</strong>!"
<Trans i18nKey="welcome_html" values={{ name }}>
  Welcome back, <strong>{name}</strong>!
</Trans>

The <strong> tag inside the string value survives translation exactly — no lost tags, no re-nested markup.

Built for i18next

Namespace-aware

Keeps your translation.json / common.json / errors.json split and folder layout exactly as-is — nothing gets merged into one file.

Plural-safe

Translates each of your i18next plural keys — _one, _other, _few, _many — into every locale, keeping the suffixes and the count variable intact. Add the forms a locale needs and KAERIS translates them; the CLDR check flags a locale that's still missing one.

<Trans>-safe

Inline tags inside string values (<strong>, <0>) pass through unchanged — keeping your JSX intact.

One CLI command

kaeris init --preset i18next scaffolds locale detection straight from your existing locales/ folder.

Why KAERIS
Placeholder-safe{{var}} is never dropped, renamed or mistranslated.
Format-native — real i18next JSON out, not a flattened wrapper you have to reshape.
Verify-meaning QA — every string is back-translated to catch meaning drift before you ship.
No account needed — drag & drop free up to 10,000 characters, or use the CLI/API.
Honest flat pricing — no per-seat, no per-language multiplier. See plans

Beyond i18next JSON, KAERIS speaks all 11 formats — JSON, YAML, .strings, .po, ARB, Android XML, CSV (incl. Godot/Unity), XLIFF, .properties, .resx and Mozilla Fluent (.ftl) — same placeholder-safe engine across your whole stack.

Ship react-i18next in every market

46 languages, placeholder-safe, format-native. Free to start, no account required.

$ pip install kaeris
$ kaeris init --preset i18next
Translate your files now