AI-powered localization in VS Code. Translate i18n JSON and ARB files directly in your editor using l10n.dev's intelligent translation service.
- 🤖 AI-Powered Translation: Context-aware translations using advanced AI.
- 165 Languages: Translate to any of 165 supported languages.
- Flutter Localization Support: Full support for ARB (Application Resource Bundle) files used in Flutter apps. Automatically handles
@@localeand@@last_modifiedmetadata. - 🔧 Customizable Translation Style: Configure translations to use contractions (e.g., "don't" vs "do not"), enable shortening when translations exceed source text length, and generate plural forms for i18next compatibility.
- 🔄 Translate Only New Strings: When a target file already exists, choose to translate only new strings and update the existing file, or create a new file with a copy number. Perfect for iterative localization workflows.
- 🌐 i18next Plural Forms Support: Automatically generates all required plural form strings with correct plural suffixes when enabled—ideal for i18next projects. For languages with complex pluralization rules (like Russian, Arabic, or Polish), the extension ensures every necessary form is created, even if your source file only has
_oneor_other. This guarantees your app works correctly in every locale, with no missing or incorrect plural forms. - 🛠️ Developer-Friendly Features: Preserves placeholders, HTML tags, and formatting while adapting dates and numbers to target locales. Intelligently avoids translating things that shouldn't be translated (proper names, urls, technical terms, etc.). Learn more in this article: i18n vs l10n: Why Developers Should Care and How AI Can Help.
- 🔒 Type Safety: Preserves JSON data types during translation—numbers remain numbers, booleans stay booleans, and null values are maintained. AI translates only string content without converting other data types to strings.
- 🔐 Secure API Key Storage: Your API Keys are stored securely using VS Code's built-in secrets manager.
- 🎯 Smart Language Detection: Automatically detects target languages from your project structure for seamless file organization.
- 🌍 Translate to All Languages: Translate your file to all detected languages at once with a single command.
- 🌐 i18next Support: Works seamlessly with i18next and other common i18n formats.
- 🧩 Source Text as Keys: Supports projects using source text as translation keys.
- 🕵️ Smart Error Detection & Chunking: Automatically detects and retries translations if placeholders or formatting are lost by the AI. For large files, l10n.dev splits content into manageable chunks, maintaining links and context between segments. This prevents issues common with direct uploads to AI models (like Claude or GPT), where exceeding ~16,000 characters can cause the model to omit, merge, or shorten content—resulting in lost context and lower translation quality. l10n.dev's approach ensures high-quality, accurate translations even for large i18n files.
- 💰 Free: Users get 30,000 characters free monthly.
- Visit l10n.dev/ws/keys
- Sign up for a free account
- Generate your API Key
- Open VS Code Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Run
l10n.dev: Set API Key - Paste your API Key when prompted
- Right-click on any JSON or ARB file in the Explorer or Editor
- Select
Translate JSON to...orTranslate ARB to... - Choose your target language (or select "Translate to All Languages" for batch translation)
- If target file(s) exist, choose to update existing files or create new ones
- Wait for translation to complete
- Find your translated files in the appropriate language folders
Looking for a programmatic solution? Check out the ai-l10n npm package! This Node.js package provides the same powerful AI translation capabilities directly in your JavaScript/TypeScript projects.
Why use ai-l10n?
- CI/CD Integration - Automate translations in your build pipeline or deployment workflows
- Programmatic Control - Full API access with TypeScript support for custom translation logic and batch processing
- CLI Support - Command-line interface for quick translations without opening VS Code
- Framework Agnostic - Use with any Node.js project: React, Vue, Angular, Next.js, Express, or standalone scripts
- Advanced Features - Access to l10n.dev API
Perfect for developers who want to integrate AI-powered localization into their automated workflows, build tools, or server-side applications.
The extension fully supports ARB (Application Resource Bundle) files used in Flutter applications:
- Automatic Metadata Updates: The API automatically updates
@@localeto the target language code and@@last_modifiedto the current UTC timestamp - Custom Prefixes: Supports custom file naming patterns (e.g.,
app_en_US.arb,my_app_fr.arb) - Underscore Format: ARB files use underscores instead of hyphens (e.g.,
en_USinstead ofen-US) - Perfect for Flutter: Seamlessly integrates with Flutter's localization workflow
The extension automatically detects target languages from common i18n project structures and saves translated files accordingly:
locales/
├── en/
│ ├── common.json
│ └── auth.json
├── es/
├── fr/
└── de/
How it works:
- Detection: Language code is identified from the folder name (e.g.,
en/,es/,fr/) - File Saving: Creates the target language folder if it doesn't exist and saves the file with the same name as the source file
- Example: Translating
locales/en/common.jsonto Spanish →locales/es/common.json - Conflict Resolution: If the target file already exists, adds a copy number (e.g.,
common (1).json)
i18n/
├── en.json
├── en-US.json
├── es.json
├── fr.json
├── de.json
└── zh-Hans-CN.json
l10n/
├── app_en.json
├── app_en_US.json
├── app_es.json
├── app_fr.json
├── app_de.json
└── app_zh_Hans_CN.json
How it works:
- Detection: Language code is identified from the filename (e.g.,
en.json,es.json,fr.json) - File Saving: Saves the translated file using the target language code as the filename in the same folder
- Example: Translating
i18n/en.jsonto Spanish →i18n/es.json - Conflict Resolution: If the target file already exists, adds a copy number (e.g.,
es (1).json)
For projects that don't match the above patterns, the extension falls back to saving files with the format: {originalname}.{languagecode}.json in the same directory as the source file.
Configure translation behavior in VS Code settings (Ctrl+, and search for "l10n-translate-i18n"):
- Use Contractions: Makes translations less formal (default: true)
- Use Shortening: Uses shortened forms if translation is longer than source (default: false)
- Generate Plural Forms: Generates additional plural form strings (e.g., for i18next) with plural suffixes. Do not enable for strict source-to-target mapping (default: false)
Translate I18n: Set API Key- Securely configure API KeyTranslate I18n: Clear API Key- Clear API Key in VS Code secrets storageTranslate I18n: Configure Translation Options- Open extension settingsTranslate I18n: Translate JSON to...- Translate JSON fileTranslate I18n: Translate ARB to...- Translate ARB file (Flutter localization)
l10n.dev supports 165+ languages with varying proficiency levels:
- Strong (12 languages): English, Spanish, French, German, Chinese, Russian, etc.
- High (53 languages): Most European and Asian languages
- Moderate (100+ languages): Wide range of world languages
- Free Characters: 30,000 characters for free monthly.
- Pay-as-you-go: Affordable character-based pricing. Visit l10n.dev/#pricing for current pricing.
- No subscription required
"API Key not configured"
- Run
l10n.dev: Set API Keycommand - Ensure you've copied the key correctly from l10n.dev/ws/keys
"Insufficient balance"
- Check your account balance at l10n.dev
- Purchase more characters if needed
"No languages detected"
- The extension will prompt you to enter a language code manually
- Use BCP-47 format (e.g., "es", "fr", "zh-CN", "en-US")
"Invalid JSON file"
- Ensure your JSON file is valid
- Check for syntax errors using VS Code's built-in JSON validation
Example:
// ✅ CORRECT: New items added at the end
// source.json
["Apple", "Banana", "Orange"]
// target.json (existing)
["Manzana", "Plátano"]
// After translation (new item appended)
["Manzana", "Plátano", "Naranja"]
// ❌ INCORRECT: Items inserted in the middle
// This will cause misalignment!
["Apple", "Cherry", "Banana", "Orange"]For object-based JSON structures (recommended for i18n), this is not a concern as translations are matched by key names.
- API Documentation: l10n.dev/api/doc
- Issues: Report bugs on github
- API Keys are stored securely using VS Code's encrypted secrets storage
- No source code or translations are stored on our servers beyond the processing time
- All communication with l10n.dev API is encrypted (HTTPS)
Made with ❤️ for developers who care about internationalization (i18n) and localization (l10n)
Tip: For translating a large number of files, use the I18N File Translation UI on l10n.dev. The VS Code extension translates files in real time via the Translate JSON API and does not store your JSON or translations on our servers. For very large files, translation may take several minutes and delivery cannot be guaranteed in all cases.
On the l10n.dev platform, you can securely create translation jobs for batch processing, set custom terminology, monitor progress in real time, and download your files when complete. You have full control: files can be deleted at any time. For automation and CI/CD workflows, our API lets you integrate localization seamlessly into your pipelines.
l10n.dev is built by developers for developers, with privacy, reliability, and quality as top priorities.

