You ship a web SaaS across several markets.
React, Next.js, Vue, Svelte.
See the use case→Translation, per-screen variants, regional languages, accessibility, source-string health: your agent does the work over MCP, with a glossary and a context that persist from one pass to the next. The CDN delivers the result to your web and mobile apps, with no new version.
Free: 1 project, 500 keys, 3 languages, no credit card. Exports to i18next JSON, XLIFF and CSV.
The proof
you
›
Translate the untranslated keys in the checkout namespace into es and ja.
agent
›
list_untranslated_keys namespace=checkout language_code=es
›
list_untranslated_keys namespace=checkout language_code=ja
›
glossary_list · project_context_get
›
propose_translations_bulk (24)
›
publish_cdn
sonenta
›
release ready · 2 bundles rebuilt · es/checkout.json, ja/checkout.json
Tool names are those of the @sonenta/mcp server (v0.57.0), which exposes 98 of them. The counts above are an example, not a measurement.
Who it is for
You ship a web SaaS across several markets.
React, Next.js, Vue, Svelte.
See the use case→You ship a mobile app, and every text fix goes through the stores.
React Native, Expo.
See the use case→You ship a static site in ten languages.
Astro.
See the use case→What decides it
locales/ folder does not do.translation, do_not_translate, forbidden.list_untranslated_keys) and runs on your machine.fr-CA to fr, then to the source.desktop, mobile, tablet, or your own surfaces.How it works
Install the SDK.
npm i @sonenta/react-i18next, or the package for your framework. Keys called without a translation show up in the dashboard during development.
Wire up the agent.
sonenta init writes the configuration and a block into CLAUDE.md or AGENTS.md. The MCP server is declared in five lines of JSON in Claude Code, Cursor or Claude Desktop.
Let the agent translate.
It reads the glossary and the context, handles only untranslated keys, and proposes. You review in the dashboard if you turn on approval before publishing, which is enabled per project.
Publish.
publish_cdn from the agent, or sonenta releases from the CLI. Your apps load the new bundle with no redeploy.
What it replaces
A locales/ folder | A classic platform | Sonenta | |
|---|---|---|---|
| Where the strings live | In the repository | At the vendor | In your Sonenta project, exportable |
| Who translates | You, by hand | Translators, out of band | Your agent, on your machine |
| How it reaches production | A deployment | An export, then a deployment | A CDN release |
| What persists from one pass to the next | Nothing | A translation memory | Glossary, context, key descriptions, versioned |
| How you get out | It is already yours | Depends on the contract | Export to i18next JSON, XLIFF or CSV, at any time |
Your stack
Every name links to its documentation page.
The dashboard
The dashboard is itself translated by Sonenta, and loads its bundles from the public CDN.
Pricing
Free stays free. Paid plans start at $9/month. Every language, always included.
Free
One project to try it out, with MCP in read-only.
Hobby
One product, five languages, and the agent writes.
Pro
Several apps, every language, five members.
Questions
No. @sonenta/react-i18next keeps the useTranslation API, and the i18next JSON import takes your existing files.
The API serves the same bundles as a fallback. sonenta snapshot freezes a set of bundles at build time, so you can start with no network.
Not for the everyday flow: it runs on your machine. Credits pay for translation done by Sonenta, on demand, and for server-side accessibility generation.
In your Sonenta project. Export to i18next JSON, XLIFF or CSV at any time, from the CLI, from MCP or from the dashboard.
If you turn it on, per project. Otherwise what is translated ships with the next release.
1 project, 500 keys, 3 languages, and MCP in read-only. MCP writes start at Hobby.
Down to the last word.
Start free in minutes. No credit card, no commitment, and your exports always open.