React i18n
react-i18next · JSON · 46 languages · Free

Translate react-i18next without breaking a single {{variable}}

Drop in your locales/en/translation.json, pick languages, and KAERIS ships back real i18next JSON — interpolation, plural suffixes and <Trans> markup all 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 in your cart",
  "cart_count_other": "You have {{count}} items in your cart",
  "save": "Save changes"
}
locales/de/translation.json
{
  "welcome": "Willkommen zurück, {{name}}!",
  "cart_count_one": "Du hast {{count}} Artikel im Warenkorb",
  "cart_count_other": "Du hast {{count}} Artikel im Warenkorb",
  "save": "Änderungen speichern"
}

Every {{placeholder}} and every _one/_other plural key is generated per target locale — 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

Generates the right _one / _other (and _few / _many where a locale needs them) from your singular source key — no manual CLDR lookups.

<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.

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 →