Lingo.dev - LLM-आधारित स्थानिकीकरणासाठी ओपन-सोर्स i18n टूलकिट
MCP •CLI • CI/CD •SDK • Compiler
| टूल | वापर प्रकरण | द्रुत कमांड |
|---|---|---|
| MCP | React अॅप्ससाठी AI-सहाय्यित i18n सेटअप | प्रॉम्प्ट: Set up i18n |
| CLI | JSON, YAML, markdown, CSV, PO फाइल्सचे भाषांतर | npx lingo.dev@latest run |
| CI/CD | GitHub Actions मध्ये स्वयंचलित भाषांतर पाइपलाइन | uses: lingodotdev/lingo.dev@main |
| SDK | डायनॅमिक कंटेंटसाठी रनटाइम भाषांतर | npm install lingo.dev |
| Compiler | i18n रॅपर्सशिवाय बिल्ड-टाइम React स्थानिकीकरण | withLingo() प्लगइन |
React अॅप्समध्ये i18n सेटअप करणे अनुभवी डेव्हलपर्ससाठीही त्रुटीप्रवण आहे. AI कोडिंग असिस्टंट्स हे आणखी वाईट करतात: ते अस्तित्वात नसलेल्या API चे भ्रम निर्माण करतात, मिडलवेअर कॉन्फिगरेशन विसरतात, राउटिंग खराब करतात किंवा हरवण्यापूर्वी अर्धे सोल्यूशन इम्प्लिमेंट करतात. समस्या अशी आहे की i18n सेटअपसाठी अनेक फाइल्समध्ये (राउटिंग, मिडलवेअर, कंपोनेंट्स, कॉन्फिगरेशन) समन्वित बदलांचा अचूक क्रम आवश्यक असतो आणि LLM ला तो संदर्भ राखण्यात अडचण येते.
Lingo.dev MCP हे AI असिस्टंट्सना फ्रेमवर्क-विशिष्ट i18n ज्ञानाचा संरचित प्रवेश देऊन सोडवते. अंदाज लावण्याऐवजी, तुमचा असिस्टंट Next.js, React Router आणि TanStack Start साठी सत्यापित इम्प्लिमेंटेशन पॅटर्न फॉलो करतो.
समर्थित IDE:
- Claude Code
- Cursor
- GitHub Copilot Agents
- Codex (OpenAI)
समर्थित फ्रेमवर्क:
- Next.js (App Router आणि Pages Router v13-16)
- TanStack Start (v1)
- React Router (v7)
वापर:
तुमच्या IDE मध्ये MCP सर्व्हर कॉन्फिगर केल्यानंतर (क्विकस्टार्ट मार्गदर्शक पहा), तुमच्या असिस्टंटला प्रॉम्प्ट करा:
Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'.
असिस्टंट हे करेल:
- लोकेल-आधारित राउटिंग कॉन्फिगर करेल (उदा.,
/en,/es,/pt-BR) - भाषा स्विचिंग कंपोनेंट्स सेटअप करेल
- स्वयंचलित लोकेल डिटेक्शन इम्प्लिमेंट करेल
- आवश्यक कॉन्फिगरेशन फाइल्स जनरेट करेल
टीप: AI-असिस्टेड कोड जनरेशन नॉन-डिटर्मिनिस्टिक आहे. कमिट करण्यापूर्वी जनरेट केलेल्या कोडचे पुनरावलोकन करा.
अनुवाद सिंकमध्ये ठेवणे कंटाळवाणे आहे. तुम्ही नवीन स्ट्रिंग जोडता, ती अनुवादित करायला विसरता, आंतरराष्ट्रीय वापरकर्त्यांना खराब UI शिप करता. किंवा तुम्ही अनुवादकांना JSON फाइल्स पाठवता, दिवस वाट पाहता, नंतर त्यांचे काम मॅन्युअली परत मर्ज करता. 10+ भाषांपर्यंत स्केलिंग म्हणजे शेकडो फाइल्स व्यवस्थापित करणे ज्या सतत सिंकच्या बाहेर जातात.
Lingo.dev CLI हे स्वयंचलित करते. तुमच्या अनुवाद फाइल्सकडे पॉइंट करा, एक कमांड चालवा आणि प्रत्येक लोकेल अपडेट होते. लॉकफाइल आधीच काय अनुवादित झाले आहे याचा मागोवा ठेवते, त्यामुळे तुम्ही फक्त नवीन किंवा बदललेल्या कंटेंटसाठी पैसे देता. JSON, YAML, CSV, PO फाइल्स आणि markdown सपोर्ट करते.
सेटअप:
# Initialize project
npx lingo.dev@latest init
# Run translations
npx lingo.dev@latest runहे कसे कार्य करते:
- कॉन्फिगर केलेल्या फाइल्समधून अनुवाद करण्यायोग्य कंटेंट एक्स्ट्रॅक्ट करते
- अनुवादासाठी LLM प्रोव्हायडरला कंटेंट पाठवते
- अनुवादित कंटेंट फाइलसिस्टममध्ये परत लिहिते
- पूर्ण झालेल्या अनुवादांचा मागोवा ठेवण्यासाठी
i18n.lockफाइल तयार करते (अनावश्यक प्रोसेसिंग टाळते)
कॉन्फिगरेशन:
init कमांड i18n.json फाइल जनरेट करते. लोकेल्स आणि बकेट्स कॉन्फिगर करा:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}provider फील्ड ऐच्छिक आहे (डीफॉल्ट Lingo.dev Engine). कस्टम LLM प्रोव्हायडर्ससाठी:
{
"provider": {
"id": "openai",
"model": "gpt-4o-mini",
"prompt": "Translate from {source} to {target}"
}
}सपोर्ट केलेले LLM प्रोव्हायडर्स:
- Lingo.dev Engine (शिफारस केलेले)
- OpenAI
- Anthropic
- Mistral
- OpenRouter
- Ollama
अनुवाद हे असे फीचर आहे जे नेहमी "जवळजवळ पूर्ण" असते. इंजिनियर्स लोकेल्स अपडेट न करता कोड मर्ज करतात. QA ला स्टेजिंगमध्ये गहाळ अनुवाद सापडतात - किंवा त्याहून वाईट, युजर्सना प्रोडक्शनमध्ये सापडतात. मूळ कारण: अनुवाद ही एक मॅन्युअल स्टेप आहे जी डेडलाइनच्या दबावाखाली वगळणे सोपे असते.
Lingo.dev CI/CD अनुवाद स्वयंचलित बनवते. प्रत्येक पुश अनुवाद ट्रिगर करते. कोड प्रोडक्शनमध्ये पोहोचण्यापूर्वी गहाळ स्ट्रिंग्स भरल्या जातात. शिस्तीची आवश्यकता नाही - पाइपलाइन ते हाताळते.
सपोर्ट केलेले प्लॅटफॉर्म्स:
- GitHub Actions
- GitLab CI/CD
- Bitbucket Pipelines
GitHub Actions सेटअप:
.github/workflows/translate.yml तयार करा:
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}सेटअप आवश्यकता:
- रिपॉझिटरी सीक्रेट्समध्ये
LINGODOTDEV_API_KEYजोडा (Settings > Secrets and variables > Actions) - PR वर्कफ्लोसाठी: Settings > Actions > General मध्ये "Allow GitHub Actions to create and approve pull requests" सक्षम करा
वर्कफ्लो पर्याय:
अनुवाद थेट कमिट करा:
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}अनुवादांसह पुल रिक्वेस्ट तयार करा:
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}उपलब्ध इनपुट्स:
| इनपुट | डिफॉल्ट | वर्णन |
|---|---|---|
api-key |
(आवश्यक) | Lingo.dev API की |
pull-request |
false |
थेट कमिट करण्याऐवजी PR तयार करा |
commit-message |
"feat: update translations via @LingoDotDev" |
कस्टम कमिट मेसेज |
pull-request-title |
"feat: update translations via @LingoDotDev" |
कस्टम PR शीर्षक |
working-directory |
"." |
ज्या डिरेक्टरीमध्ये रन करायचे आहे |
parallel |
false |
पॅरलल प्रोसेसिंग सक्षम करा |
स्टॅटिक ट्रान्सलेशन फाइल्स UI लेबल्ससाठी काम करतात, पण युजर-जनरेटेड कंटेंटचे काय? चॅट मेसेजेस, प्रॉडक्ट डिस्क्रिप्शन्स, सपोर्ट टिकिट्स - जे कंटेंट बिल्ड टाइमवर अस्तित्वात नसते ते प्री-ट्रान्सलेट केले जाऊ शकत नाही. तुम्हाला अनट्रान्सलेटेड टेक्स्ट दाखवावा लागतो किंवा कस्टम ट्रान्सलेशन पाइपलाइन तयार करावी लागते.
Lingo.dev SDK रनटाइमवर कंटेंट ट्रान्सलेट करते. कोणताही टेक्स्ट, ऑब्जेक्ट किंवा HTML पास करा आणि लोकलाइज्ड व्हर्जन मिळवा. रिअल-टाइम चॅट, डायनॅमिक नोटिफिकेशन्स किंवा डिप्लॉयमेंटनंतर येणाऱ्या कोणत्याही कंटेंटसाठी काम करते. JavaScript, PHP, Python आणि Ruby साठी उपलब्ध.
इन्स्टॉलेशन:
npm install lingo.devवापर:
import { LingoDotDevEngine } from "lingo.dev/sdk";
const lingoDotDev = new LingoDotDevEngine({
apiKey: process.env.LINGODOTDEV_API_KEY,
});
// Translate objects (preserves structure)
const translated = await lingoDotDev.localizeObject(
{ greeting: "Hello", farewell: "Goodbye" },
{ sourceLocale: "en", targetLocale: "es" },
);
// { greeting: "Hola", farewell: "Adiós" }
// Translate text
const text = await lingoDotDev.localizeText("Hello!", {
sourceLocale: "en",
targetLocale: "fr",
});
// Translate to multiple languages at once
const results = await lingoDotDev.batchLocalizeText("Hello!", {
sourceLocale: "en",
targetLocales: ["es", "fr", "de"],
});
// Translate chat (preserves speaker names)
const chat = await lingoDotDev.localizeChat(
[{ name: "Alice", text: "Hello!" }],
{ sourceLocale: "en", targetLocale: "es" },
);
// Translate HTML (preserves markup)
const html = await lingoDotDev.localizeHtml("<h1>Welcome</h1>", {
sourceLocale: "en",
targetLocale: "de",
});
// Detect language
const locale = await lingoDotDev.recognizeLocale("Bonjour le monde");
// "fr"उपलब्ध SDK:
- JavaScript SDK - वेब अॅप्स, Node.js
- PHP SDK - PHP, Laravel
- Python SDK - Django, Flask
- Ruby SDK - Rails
पारंपारिक i18n आक्रमक आहे. तुम्ही प्रत्येक स्ट्रिंग t() फंक्शन्समध्ये रॅप करता, ट्रान्सलेशन की शोधता (home.hero.title.v2), पॅरलल JSON फाइल्स मेंटेन करता आणि तुमचे कंपोनेंट्स लोकलायझेशन बॉयलरप्लेटने फुगलेले पाहता. हे इतके कंटाळवाणे आहे की टीम्स इंटरनॅशनलायझेशन पुढे ढकलतात जोपर्यंत ते मोठे रिफॅक्टर बनत नाही.
Lingo.dev Compiler औपचारिकता काढून टाकतो. साध्या इंग्रजी मजकुरासह React कॉम्पोनेंट्स लिहा. कंपायलर बिल्ड टाइमवर भाषांतर करण्यायोग्य स्ट्रिंग्स शोधतो आणि आपोआप स्थानिकीकृत व्हेरिएंट्स जनरेट करतो. की नाहीत, JSON फाइल्स नाहीत, रॅपर फंक्शन्स नाहीत - फक्त React कोड जो अनेक भाषांमध्ये काम करतो.
इंस्टॉलेशन:
pnpm install @lingo.dev/compilerऑथेंटिकेशन:
# Recommended: Sign up at lingo.dev and login
npx lingo.dev@latest login
# Alternative: Add API key to .env
LINGODOTDEV_API_KEY=your_key_here
# Or use direct LLM providers (Groq, OpenAI, Anthropic, Google)
GROQ_API_KEY=your_keyकॉन्फिगरेशन (Next.js):
// next.config.ts
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";
const nextConfig: NextConfig = {};
export default async function (): Promise<NextConfig> {
return await withLingo(nextConfig, {
sourceRoot: "./app",
sourceLocale: "en",
targetLocales: ["es", "fr", "de"],
models: "lingo.dev",
dev: { usePseudotranslator: true },
});
}कॉन्फिगरेशन (Vite):
// vite.config.ts
import { lingoCompilerPlugin } from "@lingo.dev/compiler/vite";
export default defineConfig({
plugins: [
lingoCompilerPlugin({
sourceRoot: "src",
sourceLocale: "en",
targetLocales: ["es", "fr", "de"],
models: "lingo.dev",
dev: { usePseudotranslator: true },
}),
react(),
],
});प्रोव्हायडर सेटअप:
// app/layout.tsx (Next.js)
import { LingoProvider } from "@lingo.dev/compiler/react";
export default function RootLayout({ children }) {
return (
<LingoProvider>
<html>
<body>{children}</body>
</html>
</LingoProvider>
);
}भाषा स्विचर:
import { useLocale, setLocale } from "@lingo.dev/compiler/react";
export function LanguageSwitcher() {
const locale = useLocale();
return (
<select value={locale} onChange={(e) => setLocale(e.target.value)}>
<option value="en">English</option>
<option value="es">Español</option>
</select>
);
}डेव्हलपमेंट: npm run dev (स्यूडोट्रान्सलेटर वापरतो, API कॉल्स नाहीत)
प्रोडक्शन: usePseudotranslator: false सेट करा, नंतर next build
.lingo/ डिरेक्टरी व्हर्जन कंट्रोलमध्ये कमिट करा.
मुख्य वैशिष्ट्ये:
- रनटाइम परफॉर्मन्स कॉस्ट शून्य
- भाषांतर की किंवा JSON फाइल्स नाहीत
t()फंक्शन्स किंवा<T>रॅपर कॉम्पोनेंट्स नाहीत- JSX मध्ये भाषांतर करण्यायोग्य मजकुराचे स्वयंचलित शोध
- TypeScript सपोर्ट
- अनेकवचनासाठी ICU MessageFormat
data-lingo-overrideअॅट्रिब्यूटद्वारे मॅन्युअल ओव्हरराइड्स- बिल्ट-इन भाषांतर एडिटर विजेट
बिल्ड मोड्स:
pseudotranslator: प्लेसहोल्डर भाषांतरांसह डेव्हलपमेंट मोड (API खर्च नाही)real: LLM वापरून वास्तविक भाषांतरे जनरेट कराcache-only: CI मधून पूर्व-जनरेट केलेली भाषांतरे वापरून प्रोडक्शन मोड (API कॉल्स नाहीत)
सपोर्ट केलेली फ्रेमवर्क्स:
- Next.js (React Server Components सह App Router)
- Vite + React (SPA आणि SSR)
अतिरिक्त फ्रेमवर्क सपोर्ट नियोजित आहे.
योगदानाचे स्वागत आहे. कृपया या मार्गदर्शक तत्त्वांचे पालन करा:
- समस्या: बग रिपोर्ट करा किंवा वैशिष्ट्यांची विनंती करा
- पुल रिक्वेस्ट: बदल सबमिट करा
- प्रत्येक PR साठी चेंजसेट आवश्यक आहे:
pnpm new(किंवा नॉन-रिलीज बदलांसाठीpnpm new:empty) - सबमिट करण्यापूर्वी टेस्ट पास होतात याची खात्री करा
- प्रत्येक PR साठी चेंजसेट आवश्यक आहे:
- डेव्हलपमेंट: हे pnpm + turborepo मोनोरेपो आहे
- डिपेंडन्सी इन्स्टॉल करा:
pnpm install - टेस्ट चालवा:
pnpm test - बिल्ड:
pnpm build
- डिपेंडन्सी इन्स्टॉल करा:
सपोर्ट: Discord कम्युनिटी
जर तुम्हाला Lingo.dev उपयुक्त वाटत असेल, तर आम्हाला स्टार द्या आणि 10,000 स्टार गाठण्यात आमची मदत करा!
[
](https://www.star-history.com/#lingodotdev/lingo.dev&Date)
उपलब्ध भाषांतरे:
English • 中文 • 日本語 • 한국어 • Español • Français • Русский • Українська • Deutsch • Italiano • العربية • עברית • हिन्दी • Português (Brasil) • বাংলা • فارسی • Polski • Türkçe • اردو • भोजपुरी • অসমীয়া • ગુજરાતી • मराठी • ଓଡ଼ିଆ • ਪੰਜਾਬੀ • සිංහල • தமிழ் • తెలుగు
नवीन भाषा जोडणे:
- BCP-47 फॉरमॅट वापरून
i18n.jsonमध्ये लोकेल कोड जोडा - पुल रिक्वेस्ट सबमिट करा
BCP-47 लोकेल फॉरमॅट: language[-Script][-REGION]
language: ISO 639-1/2/3 (लोअरकेस):en,zh,bhoScript: ISO 15924 (टायटल केस):Hans,Hant,LatnREGION: ISO 3166-1 alpha-2 (अप्परकेस):US,CN,IN- उदाहरणे:
en,pt-BR,zh-Hans,sr-Cyrl-RS