iOS · Android · Flutter · React Native
Localize your mobile app into 100 languages — without leaving your editor.
LangAPI translates .xcstrings, .strings, .arb, strings.xml and React Native JSON straight from Cursor or Claude Code — placeholders, plurals and terminology stay intact across every release.
100 languages · free to try · no card, no export/import dance.
// placeholders preserved across all 100 languages
Built for how mobile actually localizes.
Web-first translators flatten your files and break your variables. LangAPI was built for mobile formats, so they don't.
- .xcstrings String CatalogsStructure, states and variations preserved — never flattened into plain JSON.
- .stringsdict & ICU plurals
one/few/many/otherhandled correctly per language. - Placeholders stay intact
%@%1$@%lld{count}come back exactly where they belong. - 100 languages, every stackiOS, Android, Flutter and React Native — from one tool.
Why teams choose LangAPI.
native
Native mobile formats
Not a JSON wrapper bolted onto everything. LangAPI understands String Catalogs, ARB metadata and Android plural rules out of the box — so your files come back correct, not just translated.
consistent
Consistent across releases
A built-in glossary and translation memory keep your terms stable over time. "Sign in" reads the same in v1.4 as it did in v1.0 — no drift, no re-reviewing the same strings every release.
zero-setup
Zero setup
It runs as an MCP server inside Cursor and Claude Code. Point it at your locale files and translate in the flow you already work in — no dashboard, no copy-paste, no separate tab.
From zero to translated in two steps.
No dashboard, no export/import. Wire it into the editor you already use.
Add LangAPI to your MCP client
{
"mcpServers": {
"langapi": {
"command": "npx",
"args": ["@langapi/mcp-server"]
}
}
}Then sign in once — npx @langapi/mcp-server login shows a code to enter at langapi.io/device. No API keys to paste.
Ask your agent
That's it — placeholders, plurals and your glossary are handled automatically.
See It In Action
One natural language command. All your translations synced.
Localization complete. Here's the summary:
| Language | Keys Translated | File |
|---|---|---|
| French (fr) | 12 | Localizable.xcstrings |
| German (de) | 12 | values-de/strings.xml |
Total: 24 keys translated across 2 languages
Credits used: 46 (balance: 144)
Works with your stack.
Seamless integration with the tools you already use.
AI Clients
- Cursor
- Claude Code
- Claude Desktop
- Windsurf
- VS Code (via MCP)
Mobile stacks
- iOS / macOS (Swift)
- Android (Kotlin / Java)
- Flutter
- React Native
File Formats
- .xcstrings
- .strings
- .stringsdict
- .arb
- strings.xml
- RN JSON
“Can't my AI assistant just translate these?”
It can translate them once. The problem is the second release.
Terms drift with no memory
Ask it again next sprint and “Sign in” becomes “Log in.” Nothing remembers the choice you made last release.
It mangles native formats
Raw LLMs flatten .xcstrings and quietly drop %@ and .stringsdict plurals — you find out when the app ships.
No delta-sync
It re-translates every string, every time — so you re-review and re-pay for text that never changed.
LangAPI keeps a glossary and translation memory, preserves your file structure, and only re-translates what changed. Consistency is the layer your agent doesn't have.
Start free. Pay when it ships.
No expiring credits, no forced tiers — pick whichever fits how you release.
Free
$02,000 words / month
Starter
$15once · 100,000 credits
Pro
$24/ month
Frequently asked questions
What counts as a word or credit?
One source word equals one credit. Placeholders, variables and ICU plural keywords (one / few / many / other) are never counted — you only pay for text that actually gets translated.
Which formats and placeholders are supported?
.xcstrings, .strings, .stringsdict, .arb, Android strings.xml and React Native JSON are all first-class. Placeholders like %@, %lld, %1$@ and {count}, plus .stringsdict / ICU plurals, come back exactly where they belong.
Do you store my strings?
Only the text you ask us to translate is sent — your source code never leaves your machine. Translated strings are stored so your glossary, translation memory and delta-sync keep working across releases.
Which languages can I translate into?
100 languages, including low-resource pairs that most tools skip. The same glossary and consistency rules apply to every one of them.
Can I bring my own API key?
No — LangAPI is a fully managed service, so there are no model keys to wire up or provider bills to reconcile. You get consistent, format-safe, placeholder-preserving output out of the box.
How does LangAPI work with Cursor and Claude Code?
LangAPI runs as an MCP server. You connect it once in your editor, then ask your agent to translate — it reads your locale files, sends only the changed strings, and writes the translations back in place, keeping placeholders and plurals intact.