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.

Localizable.xcstrings
en"%@ sent you %lld messages"
de"%@ hat dir %lld Nachrichten gesendet"
fr"%@ vous a envoyé %lld messages"
ja"%@ さんがメッセージを %lld 件送信しました"
ar"أرسل إليك %@ %lld رسالة"

// 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 pluralsone / few / many / other handled 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.

1

Add LangAPI to your MCP client

~/.cursor/mcp.json  ·  or your Claude Code config
{
  "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.

2

Ask your agent

You:Translate Localizable.xcstrings into German, Japanese and Arabic.

That's it — placeholders, plurals and your glossary are handled automatically.

See It In Action

One natural language command. All your translations synced.

Claude Code
You:"Localize my app into French and German"

Localization complete. Here's the summary:

LanguageKeys TranslatedFile
French (fr)12Localizable.xcstrings
German (de)12values-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

See full pricing →

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.

Ship your next release in 100 languages.

Security first: your code never leaves your machine — only the strings you translate are sent.