Lingo.dev - LLM-இயக்கப்படும் உள்ளூர்மயமாக்கலுக்கான திறந்த மூல i18n கருவித்தொகுப்பு
MCP •CLI • CI/CD •SDK • Compiler
| கருவி | பயன்பாட்டு நிகழ்வு | விரைவு கட்டளை |
|---|---|---|
| MCP | React பயன்பாடுகளுக்கான AI-உதவி i18n அமைப்பு | Prompt: Set up i18n |
| CLI | JSON, YAML, markdown, CSV, PO கோப்புகளை மொழிபெயர்க்கவும் | npx lingo.dev@latest run |
| CI/CD | GitHub Actions இல் தானியங்கு மொழிபெயர்ப்பு pipeline | uses: lingodotdev/lingo.dev@main |
| SDK | டைனமிக் உள்ளடக்கத்திற்கான runtime மொழிபெயர்ப்பு | npm install lingo.dev |
| Compiler | i18n wrappers இல்லாமல் build-time React உள்ளூர்மயமாக்கல் | withLingo() plugin |
React பயன்பாடுகளில் i18n-ஐ அமைப்பது பிழைகள் ஏற்படக்கூடியது என்பது நன்கு அறியப்பட்டது - அனுபவம் வாய்ந்த developers-க்கு கூட. AI coding உதவியாளர்கள் இதை மோசமாக்குகின்றன: அவை இல்லாத API-களை கற்பனை செய்கின்றன, middleware கட்டமைப்புகளை மறக்கின்றன, routing-ஐ உடைக்கின்றன, அல்லது தொலைந்து போவதற்கு முன் பாதி தீர்வை செயல்படுத்துகின்றன. பிரச்சனை என்னவென்றால், i18n அமைப்புக்கு பல கோப்புகளில் (routing, middleware, components, configuration) துல்லியமான வரிசைப்படுத்தப்பட்ட மாற்றங்கள் தேவைப்படுகின்றன, மேலும் LLM-கள் அந்த சூழலை பராமரிக்க சிரமப்படுகின்றன.
Lingo.dev MCP இதை தீர்க்கிறது, AI உதவியாளர்களுக்கு framework-சார்ந்த i18n அறிவுக்கான கட்டமைக்கப்பட்ட அணுகலை வழங்குவதன் மூலம். யூகிப்பதற்கு பதிலாக, உங்கள் உதவியாளர் Next.js, React Router மற்றும் TanStack Start-க்கான சரிபார்க்கப்பட்ட செயல்படுத்தல் முறைகளை பின்பற்றுகிறது.
ஆதரிக்கப்படும் IDE-கள்:
- Claude Code
- Cursor
- GitHub Copilot Agents
- Codex (OpenAI)
ஆதரிக்கப்படும் frameworks:
- Next.js (App Router & Pages Router v13-16)
- TanStack Start (v1)
- React Router (v7)
பயன்பாடு:
உங்கள் IDE-யில் MCP server-ஐ கட்டமைத்த பிறகு (quickstart வழிகாட்டிகளைப் பார்க்கவும்), உங்கள் உதவியாளரிடம் கேளுங்கள்:
Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'.
உதவியாளர் செய்யும்:
- Locale-அடிப்படையிலான routing-ஐ கட்டமைக்கும் (எ.கா.,
/en,/es,/pt-BR) - மொழி மாற்றும் components-ஐ அமைக்கும்
- தானியங்கு locale கண்டறிதலை செயல்படுத்தும்
- தேவையான கட்டமைப்பு கோப்புகளை உருவாக்கும்
குறிப்பு: AI-உதவி code உருவாக்கம் non-deterministic ஆகும். commit செய்வதற்கு முன் உருவாக்கப்பட்ட code-ஐ மதிப்பாய்வு செய்யவும்.
மொழிபெயர்ப்புகளை ஒத்திசைவில் வைத்திருப்பது சலிப்பானது. நீங்கள் புதிய string-ஐ சேர்க்கிறீர்கள், அதை மொழிபெயர்க்க மறக்கிறீர்கள், சர்வதேச பயனர்களுக்கு உடைந்த UI-ஐ அனுப்புகிறீர்கள். அல்லது நீங்கள் மொழிபெயர்ப்பாளர்களுக்கு JSON கோப்புகளை அனுப்புகிறீர்கள், நாட்கள் காத்திருக்கிறீர்கள், பின்னர் அவர்களின் வேலையை கைமுறையாக மீண்டும் இணைக்கிறீர்கள். 10+ மொழிகளுக்கு அளவிடுவது என்பது தொடர்ந்து ஒத்திசைவிலிருந்து விலகும் நூற்றுக்கணக்கான கோப்புகளை நிர்வகிப்பதாகும்.
Lingo.dev CLI இதை தானியங்குபடுத்துகிறது. உங்கள் மொழிபெயர்ப்பு கோப்புகளை சுட்டிக்காட்டி, ஒரு கட்டளையை இயக்கவும், ஒவ்வொரு locale-ம் புதுப்பிக்கப்படும். ஏற்கனவே மொழிபெயர்க்கப்பட்டதை lockfile கண்காணிக்கிறது, எனவே நீங்கள் புதிய அல்லது மாற்றப்பட்ட content-க்கு மட்டுமே பணம் செலுத்துகிறீர்கள். JSON, YAML, CSV, PO கோப்புகள் மற்றும் markdown-ஐ ஆதரிக்கிறது.
அமைப்பு:
# Initialize project
npx lingo.dev@latest init
# Run translations
npx lingo.dev@latest runஇது எவ்வாறு செயல்படுகிறது:
- கட்டமைக்கப்பட்ட கோப்புகளிலிருந்து மொழிபெயர்க்கக்கூடிய உள்ளடக்கத்தை பிரித்தெடுக்கிறது
- மொழிபெயர்ப்புக்காக உள்ளடக்கத்தை LLM provider-க்கு அனுப்புகிறது
- மொழிபெயர்க்கப்பட்ட உள்ளடக்கத்தை filesystem-க்கு மீண்டும் எழுதுகிறது
- முடிக்கப்பட்ட மொழிபெயர்ப்புகளைக் கண்காணிக்க
i18n.lockகோப்பை உருவாக்குகிறது (தேவையற்ற செயலாக்கத்தைத் தவிர்க்கிறது)
கட்டமைப்பு:
init கட்டளை ஒரு i18n.json கோப்பை உருவாக்குகிறது. locales மற்றும் buckets-ஐ கட்டமைக்கவும்:
{
"$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 providers-க்கு:
{
"provider": {
"id": "openai",
"model": "gpt-4o-mini",
"prompt": "Translate from {source} to {target}"
}
}ஆதரிக்கப்படும் LLM providers:
- Lingo.dev Engine (பரிந்துரைக்கப்படுகிறது)
- OpenAI
- Anthropic
- Mistral
- OpenRouter
- Ollama
மொழிபெயர்ப்புகள் எப்போதும் "கிட்டத்தட்ட முடிந்துவிட்ட" அம்சமாகும். பொறியாளர்கள் locales-ஐ புதுப்பிக்காமல் code-ஐ merge செய்கிறார்கள். QA staging-இல் காணாமல் போன மொழிபெயர்ப்புகளைக் கண்டறிகிறது - அல்லது மோசமாக, பயனர்கள் production-இல் அவற்றைக் கண்டறிகிறார்கள். மூல காரணம்: மொழிபெயர்ப்பு என்பது deadline அழுத்தத்தின் கீழ் தவிர்க்க எளிதான ஒரு கைமுறை படியாகும்.
Lingo.dev CI/CD மொழிபெயர்ப்புகளை தானியங்குபடுத்துகிறது. ஒவ்வொரு push-ம் மொழிபெயர்ப்பைத் தூண்டுகிறது. காணாமல் போன strings code production-ஐ அடையும் முன் நிரப்பப்படுகின்றன. ஒழுக்கம் தேவையில்லை - pipeline அதைக் கையாளுகிறது.
ஆதரிக்கப்படும் platforms:
- 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 }}அமைப்பு தேவைகள்:
- repository secrets-க்கு
LINGODOTDEV_API_KEYசேர்க்கவும் (Settings > Secrets and variables > Actions) - PR workflows-க்கு: Settings > Actions > General-இல் "Allow GitHub Actions to create and approve pull requests" இயக்கவும்
Workflow விருப்பங்கள்:
மொழிபெயர்ப்புகளை நேரடியாக commit செய்யவும்:
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}மொழிபெயர்ப்புகளுடன் pull requests உருவாக்கவும்:
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}கிடைக்கும் inputs:
| Input | Default | விளக்கம் |
|---|---|---|
api-key |
(தேவையானது) | Lingo.dev API key |
pull-request |
false |
நேரடியாக commit செய்வதற்குப் பதிலாக PR உருவாக்கவும் |
commit-message |
"feat: update translations via @LingoDotDev" |
தனிப்பயன் commit செய்தி |
pull-request-title |
"feat: update translations via @LingoDotDev" |
தனிப்பயன் PR தலைப்பு |
working-directory |
"." |
இயக்குவதற்கான டைரக்டரி |
parallel |
false |
இணையான செயலாக்கத்தை இயக்கவும் |
UI labels-க்கு static மொழிபெயர்ப்பு கோப்புகள் வேலை செய்கின்றன, ஆனால் பயனர் உருவாக்கிய content-ஐப் பற்றி என்ன? Chat செய்திகள், தயாரிப்பு விளக்கங்கள், support tickets - build time-இல் இல்லாத content-ஐ முன்கூட்டியே மொழிபெயர்க்க முடியாது. மொழிபெயர்க்கப்படாத உரையைக் காட்டுவதில் அல்லது தனிப்பயன் மொழிபெயர்ப்பு pipeline உருவாக்குவதில் நீங்கள் சிக்கிக்கொள்கிறீர்கள்.
Lingo.dev SDK runtime-இல் content-ஐ மொழிபெயர்க்கிறது. எந்த உரை, object அல்லது HTML-ஐயும் அனுப்பி, localized version-ஐப் பெறுங்கள். real-time chat, dynamic அறிவிப்புகள் அல்லது deployment-க்குப் பிறகு வரும் எந்த content-க்கும் வேலை செய்கிறது. 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"கிடைக்கும் SDKs:
- JavaScript SDK - Web apps, Node.js
- PHP SDK - PHP, Laravel
- Python SDK - Django, Flask
- Ruby SDK - Rails
பாரம்பரிய i18n ஊடுருவக்கூடியது. ஒவ்வொரு string-ஐயும் t() functions-இல் wrap செய்கிறீர்கள், மொழிபெயர்ப்பு keys-ஐக் கண்டுபிடிக்கிறீர்கள் (home.hero.title.v2), இணையான JSON கோப்புகளைப் பராமரிக்கிறீர்கள், மேலும் localization boilerplate மூலம் உங்கள் components வீங்குவதைப் பார்க்கிறீர்கள். இது மிகவும் சலிப்பானது, அது பெரிய refactor ஆகும் வரை குழுக்கள் internationalization-ஐ தாமதப்படுத்துகின்றன.
Lingo.dev Compiler சடங்குகளை நீக்குகிறது. சாதாரண ஆங்கில உரையுடன் React components எழுதுங்கள். Compiler build நேரத்தில் மொழிபெயர்க்கக்கூடிய strings-ஐ கண்டறிந்து தானாகவே localized variants-ஐ உருவாக்குகிறது. Keys இல்லை, JSON கோப்புகள் இல்லை, wrapper functions இல்லை - பல மொழிகளில் வேலை செய்யும் React code மட்டுமே.
நிறுவல்:
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(),
],
});Provider அமைப்பு:
// 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>
);
}Development: npm run dev (pseudotranslator-ஐ பயன்படுத்துகிறது, API calls இல்லை)
Production: usePseudotranslator: false-ஐ அமைக்கவும், பின்னர் next build
.lingo/ directory-ஐ version control-க்கு commit செய்யவும்.
முக்கிய அம்சங்கள்:
- Zero runtime performance செலவு
- மொழிபெயர்ப்பு keys அல்லது JSON கோப்புகள் இல்லை
t()functions அல்லது<T>wrapper components இல்லை- JSX-இல் மொழிபெயர்க்கக்கூடிய உரையின் தானியங்கு கண்டறிதல்
- TypeScript ஆதரவு
- Plurals-க்கான ICU MessageFormat
data-lingo-overrideattribute வழியாக manual overrides- உள்ளமைக்கப்பட்ட மொழிபெயர்ப்பு editor widget
Build modes:
pseudotranslator: Placeholder மொழிபெயர்ப்புகளுடன் development mode (API செலவுகள் இல்லை)real: LLMs-ஐ பயன்படுத்தி உண்மையான மொழிபெயர்ப்புகளை உருவாக்கவும்cache-only: CI-இலிருந்து முன்பே உருவாக்கப்பட்ட மொழிபெயர்ப்புகளைப் பயன்படுத்தும் production mode (API calls இல்லை)
ஆதரிக்கப்படும் frameworks:
- Next.js (React Server Components உடன் App Router)
- Vite + React (SPA மற்றும் SSR)
கூடுதல் framework ஆதரவு திட்டமிடப்பட்டுள்ளது.
பங்களிப்புகள் வரவேற்கப்படுகின்றன. தயவுசெய்து இந்த வழிகாட்டுதல்களைப் பின்பற்றவும்:
- சிக்கல்கள்: பிழைகளைப் புகாரளிக்கவும் அல்லது அம்சங்களைக் கோரவும்
- Pull Requests: மாற்றங்களைச் சமர்ப்பிக்கவும்
- ஒவ்வொரு PR-க்கும் changeset தேவை:
pnpm new(அல்லது release அல்லாத மாற்றங்களுக்குpnpm new:empty) - சமர்ப்பிப்பதற்கு முன் tests தேர்ச்சி பெறுவதை உறுதிசெய்யவும்
- ஒவ்வொரு PR-க்கும் changeset தேவை:
- Development: இது ஒரு pnpm + turborepo monorepo
- dependencies நிறுவவும்:
pnpm install - tests இயக்கவும்:
pnpm test - Build:
pnpm build
- dependencies நிறுவவும்:
ஆதரவு: Discord சமூகம்
Lingo.dev பயனுள்ளதாக இருந்தால், எங்களுக்கு star கொடுத்து 10,000 stars அடைய உதவவும்!
[
](https://www.star-history.com/#lingodotdev/lingo.dev&Date)
கிடைக்கும் மொழிபெயர்ப்புகள்:
English • 中文 • 日本語 • 한국어 • Español • Français • Русский • Українська • Deutsch • Italiano • العربية • עברית • हिन्दी • Português (Brasil) • বাংলা • فارسی • Polski • Türkçe • اردو • भोजपुरी • অসমীয়া • ગુજરાતી • मराठी • ଓଡ଼ିଆ • ਪੰਜਾਬੀ • සිංහල • தமிழ் • తెలుగు
புதிய மொழியைச் சேர்ப்பது:
i18n.json-ல் BCP-47 format பயன்படுத்தி locale code சேர்க்கவும்- pull request சமர்ப்பிக்கவும்
BCP-47 locale format: language[-Script][-REGION]
language: ISO 639-1/2/3 (lowercase):en,zh,bhoScript: ISO 15924 (title case):Hans,Hant,LatnREGION: ISO 3166-1 alpha-2 (uppercase):US,CN,IN- எடுத்துக்காட்டுகள்:
en,pt-BR,zh-Hans,sr-Cyrl-RS