What is Lingo.dev?
Lingo.dev is a developer-focused translation platform that combines:- AI-powered translation - Context-aware translations that understand your app’s domain
- Developer tools - CLI, SDK, and compiler for seamless integration
- Quality assurance - Maintains formatting, variables, and technical terms
- CI/CD integration - Automated translation workflows
Lingo.dev is built for developers, not translators. It understands code patterns, variable interpolation, and technical terminology.
How i18n Doctor Uses Lingo.dev
i18n Doctor leverages Lingo.dev in three ways:One-Click Fix
Translate all missing/untranslated keys in your scan report
App Localization
i18n Doctor itself is multilingual using Lingo.dev Compiler
CI/CD Pipeline
GitHub Actions auto-translate on push
1. One-Click Fix (Planned)
When your scan report shows missing or untranslated keys, you’ll be able to:Review the diff
See a side-by-side comparison of your current translations vs. the Lingo.dev-generated ones.
Planned Feature: One-click fix is currently in development and will be available in a future release.
2. i18n Doctor is Multilingual
i18n Doctor “eats its own dog food” - the application itself is fully localized using Lingo.dev:i18n.json (Lingo.dev config)
- Detects new strings added to
messages/en.json - Translates them to all target locales
- Updates locale files in the repo
3. CI/CD Pipeline
i18n Doctor uses a GitHub Action to automatically translate on every push:.github/workflows/i18n.yml
- Developer adds new strings to
messages/en.json - Pushes to main branch
- GitHub Action runs Lingo.dev CLI
- Translated files are committed automatically
- All locales stay in sync
This is the same workflow i18n Doctor can set up for YOUR repository when using the one-click fix PR feature.
Translation Quality
Context-Aware Translation
Lingo.dev understands technical context and preserves meaning:- Button labels are translated as imperative verbs (“Log in” → “Iniciar sesión”)
- Variables like
{amount}are preserved exactly - Technical terms like “email” are handled appropriately for the target language
- Punctuation and capitalization follow target locale conventions
Variable Preservation
Lingo.dev automatically detects and preserves interpolation patterns:| Pattern | Example | Preserved |
|---|---|---|
| Curly braces | {name}, {count} | ✓ |
| Double curly | {{username}} | ✓ |
| Percent | %s, %d | ✓ |
| Dollar sign | $t(key) | ✓ |
| ICU MessageFormat | {count, plural, ...} | ✓ |
en.json
fr.json (Lingo.dev)
Formatting Preservation
Markdown, HTML, and special characters are maintained:Integration Methods
SDK Integration
For runtime translation in Node.js applications:The SDK is what i18n Doctor uses under the hood for the one-click fix feature.
CLI Integration
For build-time translation:i18n.json):
Compiler Integration
For framework-specific builds (Next.js, Vite, Webpack):next.config.ts
- Extracts translatable strings at build time
- Translates missing keys
- Injects translations into your app
CI/CD Integration
GitHub Actions (Recommended)
Automatically translate on push:Add Lingo.dev API key
In your GitHub repository settings:
- Go to Settings > Secrets and variables > Actions
- Click New repository secret
- Name:
LINGO_API_KEY - Value: Your Lingo.dev API key
GitLab CI
.gitlab-ci.yml
Best Practices
Use Lingo.dev for bulk translation
Don’t manually translate hundreds of keys. Use Lingo.dev to get 95% of the way there, then review and refine.
Review AI translations for critical UI
While Lingo.dev is highly accurate, always have a native speaker review:
- Marketing copy
- Legal terms
- Brand messaging
- Error messages (safety-critical apps)
Set up CI/CD early
Automate translation in your pipeline from day one. This prevents translation debt from accumulating.
Troubleshooting
Translations seem inaccurate
Translations seem inaccurate
Solution: Provide more context in your key names. Instead of:Use:The key name helps Lingo.dev understand the context.
Variables are broken in translations
Variables are broken in translations
Solution: Ensure you’re using consistent variable syntax. Lingo.dev supports:
{variable}{{variable}}%s,%d(printf-style)
CI/CD workflow not triggering
CI/CD workflow not triggering
Solution: Check that:
- Your
pathsfilter matches your source locale file - The
LINGO_API_KEYsecret is set correctly - The workflow has write permissions (Settings > Actions > General > Workflow permissions)
Rate limiting errors
Rate limiting errors
Solution: Lingo.dev has rate limits based on your plan. For large batches:
- Use
lingo translate --batch-size 50to process in smaller chunks - Add delays between API calls
- Upgrade your Lingo.dev plan for higher limits
Pricing & Limits
Lingo.dev offers different tiers based on usage:| Plan | Keys/month | API Calls | CI/CD |
|---|---|---|---|
| Free | 1,000 | 100/day | ✓ |
| Pro | 50,000 | 5,000/day | ✓ |
| Enterprise | Unlimited | Unlimited | ✓ |
For detailed pricing and limits, visit lingo.dev/pricing.
Next Steps
GitHub OAuth
Connect your GitHub account for private repo access
Understanding Reports
Learn how to interpret your scan results