⚡ Lingo.dev - open-source, AI-powered i18n toolkit for instant localization with LLMs.
Lingo.dev Compiler • Lingo.dev CLI • Lingo.dev CI/CD • Lingo.dev SDK
Meet the Compiler 🆕
Lingo.dev Compiler is a free, open-source compiler middleware, designed to make any React app multilingual at build time without requiring any changes to the existing React components.
Install once:
npm install lingo.dev
Enable in your build config:
import lingoCompiler from "lingo.dev/compiler";
const existingNextConfig = {};
export default lingoCompiler.next({ sourceLocale: "en", targetLocales: ["es", "fr"], })(existingNextConfig);
Run next build
and watch Spanish and French bundles pop out ✨
Read the docs → for the full guide, and Join our Discord to get help with your setup.
What's inside this repo?
Tool | TL;DR | Docs |
---|---|---|
Compiler | Build-time React localization | /compiler |
CLI | One-command localization for web and mobile apps, JSON, YAML, markdown, + more | /cli |
CI/CD | Auto-commit translations on every push + create pull requests if needed | /ci |
SDK | Realtime translation for user-generated content | /sdk |
Below are the quick hits for each 👇
⚡️ Lingo.dev CLI
Translate code & content straight from your terminal.
npx lingo.dev@latest run
It fingerprints every string, caches results, and only re-translates what changed.
Follow the docs → to learn how to set it up.
🔄 Lingo.dev CI/CD
Ship perfect translations automatically.
.github/workflows/i18n.yml
name: Lingo.dev i18n on: [push]
jobs: i18n: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: lingodotdev/lingo.dev@main with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
Keeps your repo green and your product multilingual without the manual steps.
Read the docs →
🧩 Lingo.dev SDK
Instant per-request translation for dynamic content.
import { LingoDotDevEngine } from "lingo.dev/sdk";
const lingoDotDev = new LingoDotDevEngine({ apiKey: "your-api-key-here", });
const content = { greeting: "Hello", farewell: "Goodbye", message: "Welcome to our platform", };
const translated = await lingoDotDev.localizeObject(content, { sourceLocale: "en", targetLocale: "es", }); // Returns: { greeting: "Hola", farewell: "Adiós", message: "Bienvenido a nuestra plataforma" }
Perfect for chat, user comments, and other real-time flows.
Read the docs →
🤝 Community
We're community-driven and love contributions!
- Got an idea? Open an issue
- Want to fix something? Send a PR
- Need help? Join our Discord
⭐ Star History
If you like what we're doing, give us a ⭐ and help us reach 3,000 stars! 🌟
🌐 Readme in other languages
English • 中文 • 日本語 • 한국어 • Español • Français • Русский • Українська • Deutsch • Italiano • العربية • עברית • हिन्दी • বাংলা • فارسی
Don't see your language? Add it to i18n.json
and open a PR!