L10n.dev - AI Localization Agent
AI Localization Agent adds professional localization. Instead of loading large i18n files into the AI's context, it translates them server-side via MCP (the ai-l10n-mcp package, built on the ai-l10n SDK and CLI), saving tokens and keeping the agent focused on coding. It preserves file formats, placeholders, and existing translations, supports 165 languages, applies persistent glossaries and custom linguistic instructions, and translates only changed strings for fast, production-ready localization.
Documentation
ai-l10n-mcp
MCP server that gives AI agents access to l10n.dev — a professional localization service purpose-built for software i18n files.
When an AI agent needs to translate your app, the naive approach is to paste file contents into the chat. That breaks down fast: localization files are large, formats are strict, placeholders must survive verbatim, glossaries drift across sessions, and the agent has no memory between runs. This MCP replaces that fragile workflow with a dedicated localization engine that the agent calls as a tool — getting professional-grade output without wasting context window on raw file contents.
Think of it as giving your AI agent a professional localization co-pilot: the agent handles intent and orchestration; l10n.dev handles the actual translation with accuracy, consistency, and format guarantees.
Why use this instead of asking your AI agent directly?
| AI agent alone | ai-l10n-mcp | |
|---|---|---|
| 165 language support | Varies, often limited | ✅ Full coverage |
| Large file handling | Truncates or skips | ✅ Handled entirely server-side |
| Format preservation | Fragile — breaks placeholders, keys, structure | ✅ Guaranteed — source format validated after translation |
| Glossary consistency | Lost between sessions and file chunks | ✅ Persisted glossary applied across all files and chunks |
| Post-editing required? | Usually yes | ✅ No — output is production-ready |
| Token cost | High — raw file in context | ✅ Low — only metadata returned |
| Incremental updates | Full reading and retranslation every time | ✅ Only new/changed strings |
Features
- 165 Languages — translate to the full range of world languages in one call
- Format guaranteed — JSON, JSONC, Flutter ARB, YAML, PO (gettext), XLIFF, MD and all text-based i18n formats; placeholders, keys, and structure preserved and validated after translation
- Auto-detect target languages from project structure
- Persistent glossary — generate a glossary from your content, save it, and have it applied automatically across every subsequent file and chunk for consistent terminology
- Linguistic instructions — save style/tone rules per language pair (e.g. "Use formal tone")
- Incremental translation — hash-based change detection skips strings already translated, saving quota and protecting existing translations
- Proactive quality control — checks instructions and glossary for each language pair before translating, not after
Connect Claude Desktop, Cursor, Windsurf, GitHub Copilot, OpenAI Codex, or any MCP-compatible agent directly to l10n.dev's translation engine.
Installation & Configuration
Getting an API key
Create a free account and get your API key at https://l10n.dev/ws/api-keys
Tip: Instead of setting
L10N_API_KEYin each config, you can ask the AI to store your key withl10n_set_api_key. The key is saved to~/.ai-l10n/config.jsonand used automatically.
Claude Desktop
In Claude Desktop, open Settings > Developer > Edit Config. Claude Desktop will open the correct MCP config file for your install. On macOS this is typically ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows, the backing path can vary by installation, so prefer Edit Config instead of navigating manually. Add:
{
"mcpServers": {
"l10n": {
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
Cursor
Open Customize in Cursor to add and manage MCP servers. For a file-based setup, create one of these configs:
~/.cursor/mcp.jsonfor a user-wide setup.cursor/mcp.jsonin your project for a workspace-specific setup
Add:
{
"mcpServers": {
"l10n": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
Windsurf
In Windsurf, open the MCPs panel in Cascade, or go to Devin Settings > Cascade > MCP Servers. If you need to add it manually, edit ~/.codeium/windsurf/mcp_config.json and add:
{
"mcpServers": {
"l10n": {
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
GitHub Copilot (VS Code)
Open the Command Palette and select MCP: Open User Configuration. Alternatively, create a .vscode/mcp.json file in your workspace or user settings. Add:
{
"servers": {
"l10n": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
OpenAI Codex (CLI and IDE)
Add to ~/.codex/config.toml for a user-wide setup, or .codex/config.toml in a trusted project:
[mcp_servers.l10n]
command = "npx"
args = ["-y", "ai-l10n-mcp"]
[mcp_servers.l10n.env]
L10N_API_KEY = "your-api-key-here"
You can also add it from the terminal:
codex mcp add l10n --env L10N_API_KEY=your-api-key-here -- npx -y ai-l10n-mcp
Claude Code (CLI and VS Code extension)
Add the server from the terminal:
claude mcp add --env L10N_API_KEY=your-api-key-here --transport stdio l10n -- npx -y ai-l10n-mcp
For a shared project setup, Claude Code can also store MCP servers in a .mcp.json file at your project root.
Available Tools
Translation
| Tool | Description |
|---|---|
l10n_translate_file | Translate an i18n source file to one or more target languages |
l10n_detect_project_structure | Scan a source file to detect structure type, source language, target languages, and target file paths |
Linguistic Instructions
| Tool | Description |
|---|---|
l10n_list_instructions | List all saved linguistic instructions (tone, style, brand voice) |
l10n_create_instruction | Create a new instruction for a language pair |
l10n_update_instruction | Update an existing instruction |
l10n_delete_instruction | Delete an instruction |
Glossary
| Tool | Description |
|---|---|
l10n_list_glossaries | List all saved glossaries |
l10n_get_glossary | Get full details and entries of a specific glossary |
l10n_create_glossary | Create a new empty glossary |
l10n_update_glossary | Update glossary name or active status |
l10n_delete_glossary | Permanently delete a glossary |
l10n_add_glossary_entry | Add a term mapping to a glossary |
l10n_delete_glossary_entry | Remove a term mapping from a glossary |
Account
| Tool | Description |
|---|---|
l10n_get_balance | Check remaining character balance |
l10n_set_api_key | Store an API key locally for automatic use |
l10n_get_api_key_status | Check whether an API key is configured |
Available Prompts
l10n_project_setup
Guides through checking and configuring linguistic instructions and glossaries for optimal translation quality. Invoke it at the start of a new project or when reviewing l10n.dev settings.
Arguments:
sourceLanguage— source language code (default:en)targetLanguages— comma-separated target language codes (e.g.es,fr,de)
l10n_setup_automation
Scans the project for i18n source files (using l10n_detect_project_structure), checks linguistic instructions, glossary, and balance, then interactively sets up fully automated translation via GitHub Actions or npm scripts.
For GitHub Actions, guides through four trigger options:
- A) On every push to
main— translate and commit back directly - B) On pull requests — translate and open a PR for review
- C) On a schedule — translate nightly or on a cron
- D) Manual trigger only —
workflow_dispatch
Writes ai-l10n.config.json and .github/workflows/translate.yml (or updates package.json scripts), then tells you where to add the API key and what happens on the next trigger.
Arguments:
sourceLanguage— source language code (default:en)targetLanguages— comma-separated target language codes (e.g.es,fr,de)
Example Workflow
User: "Translate my app to Spanish and French"
Claude (with this MCP server) will:
- Call
l10n_list_instructions— finds no instruction fores/frlanguage pairs - Ask: "No instruction found for Spanish/French — would you like to set a tone/style rule before translating? (e.g. formal, casual, keep brand terms untranslated)"
- User says: "Tone should be informal, it's for a food app in Latin America"
- Call
l10n_create_instructionwith the style rule - Call
l10n_list_glossaries— finds no active glossary fores/fr - Ask: "No glossary found for Spanish/French — enable glossary generation for this run? It saves key terms for consistent future translations."
- User says: "Yes"
- Detect that
es.jsonandfr.jsonalready exist — ask: "Target files already exist — enable incremental mode to skip unchanged strings and save quota?" - User says: "Yes"
- Call
l10n_translate_filewithsourceFile,targetLanguages: ["es", "fr"],instruction,generateGlossary: true,translateOnlyNewStrings: true - Report results
Incremental Translation
For JSON-based formats, enable translateOnlyNewStrings: true to skip strings that are already translated. A hash of each source string (not content itself) is stored on the l10n.dev server for change detection — only added or changed strings are translating, saving your character quota.
Note: First translation it translates only added strings, because hash table is empty to detect changed strings.
Automation: CLI and GitHub Actions
For CI/CD automation and command-line usage, see:
- ai-l10n CLI — translate files from the terminal or CI pipelines
- GitHub Action — auto-translate on push, PR, or manual trigger
Pricing
- Free tier — 10,000 characters free every month, no credit card required.
- Pay-as-you-go — Affordable character-based pricing with no subscription required.
- Current packages — Visit l10n.dev/#pricing for up-to-date pricing.
Privacy & Security
- No data retention — Source text and translations are not stored on l10n.dev servers beyond the time needed to process the request.
- Encrypted communication — All API calls use HTTPS.
- Privacy first — Built by developers for developers, with privacy, reliability, and quality as core priorities.
Support
| support@l10n.dev | |
| 🐛 Issues | GitHub Issues |
| 📚 API Docs | api.l10n.dev/doc |
| 🌐 Website | l10n.dev |
License
MIT