Machine translation fails at software localization in boring, predictable ways.
It translates the placeholder {name} into another language. It reorders your
HTML tags. It turns %1$s into %1$ s and your app crashes at runtime.
So when we built AI into MovaBase, the features were the easy part. The actual work was the guardrails: every AI call runs under the same rules, placeholders and variables stay byte-identical, markup comes back unchanged, whitespace survives, and the model returns only the translation. No commentary, no "here is your translated text," no reformatting.
With that as the foundation, here is what the AI features actually do.
Inline translation for the one key blocking you
Every empty cell in the translation table has a one-click AI action. It takes the value from your project's default language and fills the target cell.
This is the feature you use when a release is blocked on a single string and you do not want to context-switch to a translator for one word.
Bulk translation for the 400 keys that are not
Translating one key is a convenience. Translating an entire new locale is the real job.
Select any set of keys, or filter to empty values, and run a bulk AI job across one or all of your languages. MovaBase batches the work, skips anything already translated, and shows progress per file as it runs. A new language goes from 0% to a complete first draft in minutes.
First draft is the honest term. AI translation in any tool still needs a human pass for tone and domain vocabulary, and we will not pretend otherwise. What it eliminates is the typing, not the reviewing.
An assistant with tools, not just opinions
The assistant sidebar is a chat connected to your project through actual tools: it can read the project structure, search translations, add languages, and write values back.
That tool access changes what you can ask for:
- "Find empty translations" scans the project and lists what is missing, per language or per file.
- "Translate the empty values to German" finds the gaps, translates them using the best available source value for each key, and saves the results.
- "Add Italian" creates the language and offers to fill it.
Two things we did on purpose. The assistant only handles localization work and says so when you ask it something else. And it treats translation values as untrusted data, so a string containing "ignore your instructions" is translated, not obeyed. Prompt injection through your own content is a real attack vector once an AI can write to your project.
AI writes the PR description, because nobody else will
Translation PRs have the worst descriptions in software. "Update translations" with an empty body, every time.
The Create PR button fixes this by doing the comparison first. MovaBase diffs your local translations against what is in the repository: added keys, changed values, removed strings, per file. The AI then writes the title and description from that actual diff, not from a template.
You get an editable draft before anything is pushed. The AI summarizes, you decide.
An MCP server so your agents can translate too
If your team uses AI agents, Claude, IDE copilots, or custom tooling, MovaBase
exposes an MCP (Model Context Protocol) server. With a project API key, agents
get a translate_text tool that runs through the same pipeline and the same
placeholder rules as the app, with per-key rate limits.
One honest limitation: the MCP server currently translates text. It does not read or write your project files yet. If you need an agent to edit keys, that is the REST API's job today.
What the guardrails actually guarantee
Everything above runs on the same translation rules:
- Placeholders and variables stay exact:
{name},{{count}},%s,%d,%1$s,%@. - HTML and XML tags come back unchanged.
- Leading and trailing whitespace survives.
- The model returns only the translation.
These are the rules that separate "AI can translate" from "AI output we can ship without checking every string." You should still check. You just should not have to fix the mechanics.
Try it on your emptiest locale
Connect a repository at app.movabase.com, filter to empty translations, and run a bulk job on your most neglected language. Then hit Create PR and read the description the AI writes for it. That description alone will tell you whether your translation process was documenting itself before.