From 5df976d62dbd0a47f0d14678bc5a8d547a892ad3 Mon Sep 17 00:00:00 2001 From: "Lingo.dev" Date: Fri, 17 Apr 2026 19:42:50 +0000 Subject: [PATCH] feat: update translations via @LingoDotDev --- i18n.lock | 152 ++++----------- readme/ar.md | 415 ++++----------------------------------- readme/as-IN.md | 418 ++++----------------------------------- readme/bho.md | 414 ++++----------------------------------- readme/bn.md | 420 +++++---------------------------------- readme/de.md | 413 ++++----------------------------------- readme/es.md | 418 ++++----------------------------------- readme/fa.md | 418 ++++----------------------------------- readme/fr.md | 414 ++++----------------------------------- readme/gu-IN.md | 416 ++++----------------------------------- readme/he.md | 422 +++++----------------------------------- readme/hi.md | 414 ++++----------------------------------- readme/it.md | 415 ++++----------------------------------- readme/ja.md | 422 +++++----------------------------------- readme/ko.md | 406 ++++---------------------------------- readme/mr-IN.md | 416 ++++----------------------------------- readme/or-IN.md | 422 +++++----------------------------------- readme/pa-IN.md | 418 ++++----------------------------------- readme/pl.md | 416 ++++----------------------------------- readme/pt-BR.md | 406 ++++---------------------------------- readme/ru.md | 425 +++++----------------------------------- readme/si-LK.md | 409 ++++---------------------------------- readme/ta-IN.md | 420 ++++----------------------------------- readme/te-IN.md | 412 ++++----------------------------------- readme/tr.md | 414 ++++----------------------------------- readme/uk-UA.md | 419 ++++----------------------------------- readme/ur.md | 412 ++++----------------------------------- readme/zh-Hans.md | 485 ++++------------------------------------------ 28 files changed, 1160 insertions(+), 10291 deletions(-) diff --git a/i18n.lock b/i18n.lock index 008b7cc5e..7eab8c2e8 100644 --- a/i18n.lock +++ b/i18n.lock @@ -1,116 +1,50 @@ version: 1 checksums: 29ba5363b2b0f1cc53dd4a667d52f86e: - content/0: b896c53685482156e740ce08d88ba8d2 - content/1: 1e046d4dd54af989112f43dc1e6ae9c6 + content/0: bd24fa10e2af7659360cf0a39f8865bd + content/1: cd96a4b01077d23b6c9b77517175e239 content/2: 2acf1e217477dafe17423bcbdd123711 - content/3: 9987be7cffb2f6188d54ea906c0a9485 + content/3: 7fe22ab520ac8a154a77c3b24efa610e content/4: fdb5d914fd53a8502b906bd89fe6f6d1 content/5: 51adf33450cab2ef392e93147386647c content/6: 56ea06288e338a3c329d80a0f845b4a0 - content/7: ac632ee57422256987ec69fa1fa55571 - content/8: 51adf33450cab2ef392e93147386647c - content/9: 9c9e94642807e3728a1791e6cfd7516b - content/10: b0dd1b2af0249cadc8147fcd2824162d - content/11: 54a79f931699d3ca31ca6a09318eed64 - content/12: 5b384876c724cf927b56649179c4e808 - content/13: 90afdec0d22684a09430fa503dbc82bf - content/14: 0b8b6bb14eeae9d2ea344cabfefaa543 - content/15: e6b92356986f64601ded73a3a9af1760 - content/16: c925da800b56879b8b83d151a263f7bb - content/17: 385018fc789da284a0c96960fe3f6ec4 - content/18: 2f6014a509bf52e9a0db39569885dfd5 - content/19: 97f1f7f04ad2be288b05caacb61f66c3 - content/20: 9934e6aeaf9c4b8a33e70cc0601679a9 - content/21: 7d2a6af3866f9c4beba6a53f207a599b - content/22: ca7c2dd535aa43aa1804fdb47c26cf42 - content/23: 51adf33450cab2ef392e93147386647c - content/24: 8462a747b18279082fe601bc44c41b96 - content/25: 9efc8f824620922048a0cbd5463e6baf - content/26: ac19d92f18727a2abce5e8b280412f72 - content/27: a9dae9fb033168e0cc0128b42c133897 - content/28: cab963eba977bb2538989ce8a02c4e50 - content/29: a3eef7ecff263ece91113908c007b486 - content/30: 904b08ea9e505e43a60a01563ffc74a9 - content/31: 520419d855f9069c9a48f0c590d2c60b - content/32: d260e7ce3242f424076b40c1ad3e1f65 - content/33: 69db4bb5d135eb2173ff00a3ad5fe4fc - content/34: 36593fbb8a8679de7088014740b04770 - content/35: edc9976e14549f7b4f33bf15cd12b208 - content/36: eb9ad4a218b52cd59a4d23e889627a62 - content/37: 920e5ca759926d926da155e9656dcd02 - content/38: c9c30d1a6b315c734b07060cd402b1fa - content/39: 51adf33450cab2ef392e93147386647c - content/40: 6aa11e4bc848e9e1a7da310d66231af7 - content/41: dc1cadb5a2826d6fd9237bb344741c72 - content/42: 85d4891021fd0f7426642998d158952e - content/43: 48e65dd974a85d67d43e5b3da6a78ff8 - content/44: b7e51ae9cce80e0be35533cf8ccce5a7 - content/45: 590b699bc7b9f756129e6f5c2b189c9e - content/46: ed02fd2d93a74e9d3c692ac1620990fe - content/47: a0364c9c16e27ff63e92db74f27bf8be - content/48: 05960209692c8fc636f7da40163fac04 - content/49: 15617f8218be7bf0c656c608ed6541fc - content/50: a106f8db58f6d2e59173e9c68affa713 - content/51: b9830587df82e6a5a870afa08f30544c - content/52: 755163c96e23f2783dcba2e032349782 - content/53: 1837a73959f9d011a5d1b21de26f815e - content/54: 57c98b2f8f235598ae294f1d09eb1274 - content/55: f485581183a6a7b40851438e5b2a1f1b - content/56: 68c9888b4baef08387b1a21a7e44e6cd - content/57: 549f415f93ce5b29bfb16cf5fe0bf785 - content/58: 51adf33450cab2ef392e93147386647c - content/59: 3f5c50b11a42c261f57641175fc69222 - content/60: 2ff59376b60be9d37dd4845afb951e94 - content/61: f2c27e1ada8ed0823ad58ad83eee76b1 - content/62: 155571e96a847fa90449522f2b77a54b - content/63: 863046676d0454d212c40ddf7bb700e4 - content/64: c925da800b56879b8b83d151a263f7bb - content/65: e16c6b546c5e32ee71ec11b54e456216 - content/66: 36c89a48af78d0c2a439185e74c170ea - content/67: d1ef1d51d33535073230250d9e8dfee8 - content/68: bd52587c186fb2501e9c47a7fb0b2189 - content/69: 51adf33450cab2ef392e93147386647c - content/70: e961a3814821e9529a4d8e08cf496f17 - content/71: d8bec837d112c3cd1c53438353b09ed8 - content/72: 86788f54446ee8745226bdddf4055cb9 - content/73: 155571e96a847fa90449522f2b77a54b - content/74: def921ed25d6ff8216542490a5fbc1a0 - content/75: 092fde845f398b5322bb9b3e69a07ce6 - content/76: d14a2bf38e78a012e159a7915a612a15 - content/77: 1d76d5f8d23c18ea8789cac55c440bcb - content/78: 4a2f9c451c8e957a54c2cb818b8cf34a - content/79: 79dc425a930dabcbc62c4af289f2e6d5 - content/80: 3280b3907d020b3a691d740832ae70e7 - content/81: be664aea2917020efb16c4946593f119 - content/82: 2633e220ade7f46cb6d4c9273fd001d5 - content/83: 0c5c9be2b269111bd0c388ee7a3184cd - content/84: dd0c693003eade2e536aff82f043d57a - content/85: ab82386736186c1e02042d3b0eff3d84 - content/86: e55631402680e7be376aca390cdbd207 - content/87: 4a14b613ffd8aec8fe21af632429259b - content/88: 7c42527fc9be269d599e31379c49a1fe - content/89: f2630e5a88e09a612d4d8413c2d02745 - content/90: bc32754a3325936c0e49c1bfbd710eac - content/91: 26caa05ddbd48ee00bee8fe553321815 - content/92: 0b8b6bb14eeae9d2ea344cabfefaa543 - content/93: 2b8ba27330ad5af9422b0de27bc01e00 - content/94: 3b04113f7cf1b64fe9a357a247925d34 - content/95: 59e04b5c97c9c7fccdb6f284f3be9981 - content/96: 51adf33450cab2ef392e93147386647c - content/97: 72b9fd0ce0e4bfc98dfd36fb35238fab - content/98: 982245493d09b3db1ef60824afa1bbf8 - content/99: 0649cda26da4bb9ce185b9e8dd6ee41e - content/100: c234c213e540ee3bcffad017c9c9cb75 - content/101: dcd5bc676b9b4956e66fe1045f86a5a0 - content/102: fa2896ac28faaddc29540dba0f2ea7cf - content/103: c7315dc914f85a8e7be1553e0458fdda - content/104: a15715eea8694ee737338c021ea79787 - content/105: 3194966101f0d8ea12b02a4dcaa34d0e - content/106: 38038c4d1efda89e5c1f9d8640c67aef - content/107: c708ae80a2e8b9752789a68a9bee176d - content/108: 11f28ceca8ebac9f2469cb627a1a7937 - content/109: acb15cd882a954ec87b446478a0fc54b - content/110: 96c485d76c0e7f680d657f4e14beab7a - content/111: ea8aaa0be5ef7931c7f7e671b51a6cc1 - content/112: 526a7243df6a8a7adaac235aa7271601 + content/7: 8e05ef21751b3f3b7b211fb9545a7f8d + content/8: 174acfccbcf521ad81019a2cab8c1e93 + content/9: 82c1fde30db2706a19ab2cda52b6144c + content/10: 51adf33450cab2ef392e93147386647c + content/11: 9c9e94642807e3728a1791e6cfd7516b + content/12: c9d9d618181f211ee651e61291d40b4c + content/13: ca7c2dd535aa43aa1804fdb47c26cf42 + content/14: 51adf33450cab2ef392e93147386647c + content/15: 8462a747b18279082fe601bc44c41b96 + content/16: f609da95637b703ac3f6fd74dcaf9d08 + content/17: 1004e80e4b9f723cce00a819cdb7a400 + content/18: f3d5c47e7d97d8fd9231bc5785235b9d + content/19: 51adf33450cab2ef392e93147386647c + content/20: 6aa11e4bc848e9e1a7da310d66231af7 + content/21: 0e2f86bd2bf33042bba7264583382e9f + content/22: 755163c96e23f2783dcba2e032349782 + content/23: 094eb1da7320e72d053068bc95c4c420 + content/24: 51adf33450cab2ef392e93147386647c + content/25: 8300a22f708e047883c0bb5d4c0ec958 + content/26: 32bd0f5e825b9218116afaff7b541d73 + content/27: 83b35025ef8041cd379f0aacc267509f + content/28: 51adf33450cab2ef392e93147386647c + content/29: 36ce6db68c7469c9e37576bce32e625d + content/30: b1f2151026db4c394f773ccea74f04bc + content/31: 18009ae6d0d819effbfb474b0faac7e4 + content/32: 51adf33450cab2ef392e93147386647c + content/33: 72b9fd0ce0e4bfc98dfd36fb35238fab + content/34: 982245493d09b3db1ef60824afa1bbf8 + content/35: 0649cda26da4bb9ce185b9e8dd6ee41e + content/36: c234c213e540ee3bcffad017c9c9cb75 + content/37: dcd5bc676b9b4956e66fe1045f86a5a0 + content/38: fa2896ac28faaddc29540dba0f2ea7cf + content/39: c7315dc914f85a8e7be1553e0458fdda + content/40: a15715eea8694ee737338c021ea79787 + content/41: 3194966101f0d8ea12b02a4dcaa34d0e + content/42: 38038c4d1efda89e5c1f9d8640c67aef + content/43: c708ae80a2e8b9752789a68a9bee176d + content/44: 11f28ceca8ebac9f2469cb627a1a7937 + content/45: acb15cd882a954ec87b446478a0fc54b + content/46: 96c485d76c0e7f680d657f4e14beab7a diff --git a/readme/ar.md b/readme/ar.md index d4763db50..7d41065e3 100644 --- a/readme/ar.md +++ b/readme/ar.md @@ -3,24 +3,26 @@ Lingo.dev

- Lingo.dev - مجموعة أدوات i18n مفتوحة المصدر للترجمة المدعومة بنماذج اللغة - الكبيرة + أدوات هندسة ترجمة مفتوحة المصدر. اتصل بمنصة Lingo.dev لهندسة الترجمة للحصول + على ترجمات متسقة وعالية الجودة.


- MCPCLI • - CI/CDSDK • - المترجم + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler for React (ألفا مبكرة)

@@ -72,167 +74,43 @@ ## البدء السريع -| الأداة | حالة الاستخدام | الأمر السريع | -| --------------------------------- | -------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | إعداد i18n بمساعدة الذكاء الاصطناعي لتطبيقات React | الأمر: `Set up i18n` | -| [**CLI**](#lingodev-cli) | ترجمة ملفات JSON وYAML وmarkdown وCSV وPO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | خط أنابيب ترجمة آلي في GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ترجمة وقت التشغيل للمحتوى الديناميكي | `npm install lingo.dev` | -| [**المترجم**](#lingodev-compiler) | ترجمة React في وقت البناء بدون أغلفة i18n | إضافة `withLingo()` | +| الأداة | ما تفعله | الأمر السريع | +| -------------------------------------------------- | -------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | إعداد i18n بمساعدة الذكاء الاصطناعي لتطبيقات React | المطالبة: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | ترجمة ملفات JSON وYAML وmarkdown وCSV وPO | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | ترجمة مستمرة في GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | ترجمة React وقت البناء بدون أغلفة i18n | إضافة `withLingo()` | ---- - -### Lingo.dev MCP - -إعداد i18n في تطبيقات React معروف بأنه عرضة للأخطاء - حتى للمطورين ذوي الخبرة. مساعدو الترميز بالذكاء الاصطناعي يزيدون الأمر سوءًا: فهم يتوهمون واجهات برمجية غير موجودة، وينسون تكوينات الوسيط، ويكسرون التوجيه، أو ينفذون نصف حل قبل أن يضيعوا. المشكلة هي أن إعداد i18n يتطلب تسلسلًا دقيقًا من التغييرات المنسقة عبر ملفات متعددة (التوجيه، الوسيط، المكونات، التكوين)، ونماذج اللغة الكبيرة تواجه صعوبة في الحفاظ على هذا السياق. - -يحل Lingo.dev MCP هذه المشكلة من خلال منح المساعدين بالذكاء الاصطناعي وصولاً منظمًا إلى معرفة i18n الخاصة بإطار العمل. بدلاً من التخمين، يتبع مساعدك أنماط التنفيذ المعتمدة لـ Next.js وReact Router وTanStack Start. - -**بيئات التطوير المدعومة:** +### محركات الترجمة -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +تتصل هذه الأدوات بـ [محركات الترجمة](https://lingo.dev) – واجهات برمجة ترجمة ذات حالة تنشئها على منصة Lingo.dev لهندسة الترجمة. يحتفظ كل محرك بالمسارد ونبرة العلامة التجارية والتعليمات الخاصة بكل لغة عبر كل طلب، [مما يقلل أخطاء المصطلحات بنسبة 16.6-44.6%](https://lingo.dev/research/retrieval-augmented-localization). أو [استخدم نموذج اللغة الكبير الخاص بك](#lingodev-cli). -**أطر العمل المدعومة:** - -- Next.js (App Router وPages Router الإصدارات 13-16) -- TanStack Start (الإصدار 1) -- React Router (الإصدار 7) - -**الاستخدام:** - -بعد تكوين خادم MCP في بيئة التطوير الخاصة بك ([راجع أدلة البدء السريع](https://lingo.dev/en/mcp))، اطلب من مساعدك: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -سيقوم المساعد بـ: +--- -1. تكوين التوجيه المعتمد على اللغة (مثل `/en`، `/es`، `/pt-BR`) -2. إعداد مكونات تبديل اللغة -3. تنفيذ الكشف التلقائي عن اللغة -4. إنشاء ملفات التكوين اللازمة +### Lingo.dev MCP -**ملاحظة:** توليد الكود بمساعدة الذكاء الاصطناعي غير حتمي. راجع الكود المُولَّد قبل الالتزام به. +إعداد i18n في تطبيقات React معرض للأخطاء – حتى مساعدو البرمجة بالذكاء الاصطناعي يتخيلون واجهات برمجة غير موجودة ويكسرون التوجيه. يمنح Lingo.dev MCP مساعدي الذكاء الاصطناعي وصولاً منظماً إلى معرفة i18n الخاصة بالإطار لـ Next.js وReact Router وTanStack Start. يعمل مع Claude Code وCursor وGitHub Copilot Agents وCodex. -[اقرأ المستندات ←](https://lingo.dev/en/mcp) +[اقرأ الوثائق ←](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -الحفاظ على تزامن الترجمات أمر ممل. تضيف نصًا جديدًا، تنسى ترجمته، تشحن واجهة مستخدم معطلة للمستخدمين الدوليين. أو ترسل ملفات JSON إلى المترجمين، تنتظر أيامًا، ثم تدمج عملهم يدويًا. التوسع إلى أكثر من 10 لغات يعني إدارة مئات الملفات التي تخرج باستمرار عن التزامن. - -يقوم Lingo.dev CLI بأتمتة هذا. وجهه إلى ملفات الترجمة الخاصة بك، شغّل أمرًا واحدًا، وسيتم تحديث كل لغة. يتتبع ملف القفل ما تمت ترجمته بالفعل، لذا تدفع فقط مقابل المحتوى الجديد أو المُعدَّل. يدعم ملفات JSON وYAML وCSV وPO وmarkdown. - -**الإعداد:** +ترجم ملفات JSON وYAML وmarkdown وCSV وPO بأمر واحد. يتتبع ملف القفل ما تمت ترجمته بالفعل – يتم معالجة المحتوى الجديد أو المعدل فقط. يستخدم محرك الترجمة الخاص بك على Lingo.dev افتراضياً، أو استخدم نموذج اللغة الكبير الخاص بك (OpenAI وAnthropic وGoogle وMistral وOpenRouter وOllama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**كيف يعمل:** - -1. يستخرج المحتوى القابل للترجمة من الملفات المُعدّة -2. يرسل المحتوى إلى مزود LLM للترجمة -3. يكتب المحتوى المترجم مرة أخرى إلى نظام الملفات -4. ينشئ ملف `i18n.lock` لتتبع الترجمات المكتملة (يتجنب المعالجة الزائدة) - -**الإعداد:** - -ينشئ أمر `init` ملف `i18n.json`. قم بإعداد اللغات والحاويات: - -```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 المخصصين: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**مزودو LLM المدعومون:** - -- Lingo.dev Engine (موصى به) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[اقرأ المستندات ←](https://lingo.dev/en/cli) +[اقرأ المستندات ←](https://lingo.dev/en/docs/cli) --- -### Lingo.dev CI/CD - -الترجمات هي الميزة التي تكون دائمًا "على وشك الانتهاء". يدمج المهندسون الكود دون تحديث اللغات. يكتشف فريق ضمان الجودة الترجمات المفقودة في بيئة الاختبار - أو الأسوأ من ذلك، يكتشفها المستخدمون في الإنتاج. السبب الجذري: الترجمة خطوة يدوية يسهل تخطيها تحت ضغط المواعيد النهائية. - -يجعل Lingo.dev CI/CD الترجمات تلقائية. كل دفع يُشغّل الترجمة. تُملأ النصوص المفقودة قبل وصول الكود إلى الإنتاج. لا حاجة للانضباط - خط الأنابيب يتولى الأمر. - -**المنصات المدعومة:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines +### واجهة سطر أوامر Lingo.dev -**إعداد GitHub Actions:** - -أنشئ `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**متطلبات الإعداد:** - -1. أضف `LINGODOTDEV_API_KEY` إلى أسرار المستودع (Settings > Secrets and variables > Actions) -2. لسير عمل PR: فعّل "Allow GitHub Actions to create and approve pull requests" في Settings > Actions > General - -**خيارات سير العمل:** - -إيداع الترجمات مباشرة: +الترجمة المستمرة في خط العمل. كل دفع يُفعّل الترجمة – تُملأ النصوص الناقصة قبل وصول الكود إلى الإنتاج. يدعم GitHub Actions وGitLab CI/CD وBitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,241 +118,35 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -إنشاء طلبات سحب مع الترجمات: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**المدخلات المتاحة:** - -| المدخل | الافتراضي | الوصف | -| -------------------- | ---------------------------------------------- | --------------------------------------- | -| `api-key` | (مطلوب) | مفتاح API الخاص بـ Lingo.dev | -| `pull-request` | `false` | إنشاء طلب سحب بدلاً من الالتزام المباشر | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | رسالة التزام مخصصة | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | عنوان طلب السحب المخصص | -| `working-directory` | `"."` | الدليل المراد التشغيل فيه | -| `parallel` | `false` | تفعيل المعالجة المتوازية | - -[اقرأ المستندات ←](https://lingo.dev/en/ci/github) +[اقرأ المستندات ←](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### واجهة برمجة تطبيقات Lingo.dev -تعمل ملفات الترجمة الثابتة بشكل جيد لتسميات واجهة المستخدم، ولكن ماذا عن المحتوى الذي ينشئه المستخدمون؟ رسائل الدردشة، أوصاف المنتجات، تذاكر الدعم - المحتوى الذي لا يوجد في وقت البناء لا يمكن ترجمته مسبقاً. ستضطر إلى عرض نص غير مترجم أو بناء خط أنابيب ترجمة مخصص. +استدعِ محرك الترجمة مباشرةً من كود الخادم. ترجمة متزامنة وغير متزامنة مع التسليم عبر webhook، وعزل الأخطاء لكل لغة، وتتبع التقدم في الوقت الفعلي عبر WebSocket. -يقوم Lingo.dev SDK بترجمة المحتوى في وقت التشغيل. مرر أي نص أو كائن أو HTML واحصل على نسخة محلية. يعمل للدردشة في الوقت الفعلي، الإشعارات الديناميكية، أو أي محتوى يصل بعد النشر. متاح لـ JavaScript وPHP وPython وRuby. - -**التثبيت:** - -```bash -npm install lingo.dev -``` - -**الاستخدام:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**مجموعات SDK المتاحة:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - تطبيقات الويب، Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP، Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django، Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[اقرأ المستندات ←](https://lingo.dev/en/sdk) +[اقرأ المستندات ←](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### مُترجم Lingo لـ React (نسخة تجريبية مبكرة) -حلول التدويل التقليدية تدخلية. يجب تغليف كل سلسلة نصية بدوال `t()`، وابتكار مفاتيح ترجمة (`home.hero.title.v2`)، وصيانة ملفات JSON متوازية، وملاحظة تضخم مكوناتك بسبب شيفرة التوطين الزائدة. هذا العمل مرهق لدرجة أن الفرق تؤجل التدويل حتى يتحول لإعادة هيكلة ضخمة. +ترجمة React في وقت البناء بدون أغلفة i18n. اكتب المكونات بنصوص إنجليزية عادية – يكتشف المُترجم النصوص القابلة للترجمة ويُنشئ متغيرات مترجمة في وقت البناء. بدون مفاتيح ترجمة، بدون ملفات JSON، بدون دوال `t()`. يدعم Next.js (App Router) وVite + React. -يُلغي Lingo.dev Compiler التعقيدات. اكتب مكونات React بنص إنجليزي عادي. يكتشف المُجمِّع النصوص القابلة للترجمة في وقت البناء ويُنشئ متغيرات محلية تلقائيًا. لا مفاتيح، لا ملفات JSON، لا دوال تغليف - فقط كود React يعمل بلغات متعددة. - -**التثبيت:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**المصادقة:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**الإعداد (Vite):** - -```ts -// 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(), - ], -}); -``` - -**إعداد المزود:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**مبدل اللغة:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**التطوير:** `npm run dev` (يستخدم مترجمًا شبه حقيقي، بلا استدعاءات API) - -**الإنتاج:** عيّن `usePseudotranslator: false`، ثم `next build` - -قم بإيداع مجلد `.lingo/` في نظام التحكم بالإصدارات. - -**الميزات الرئيسية:** - -- تكلفة أداء وقت التشغيل = صفر -- لا مفاتيح ترجمة أو ملفات JSON -- لا دوال `t()` أو مكونات تغليف `` -- الكشف التلقائي عن النصوص القابلة للترجمة في JSX -- دعم TypeScript -- دعم الجمع باستخدام ICU MessageFormat -- تجاوز يدوي عبر خاصية `data-lingo-override` -- أداة تحرير ترجمة مدمجة - -**أوضاع البناء:** - -- `pseudotranslator`: وضع التطوير مع ترجمات نائبة (بدون تكلفة API) -- `real`: إنشاء ترجمات فعلية باستخدام نماذج اللغة الكبيرة -- `cache-only`: وضع الإنتاج باستخدام الترجمات المُنشأة مسبقًا من CI (بدون استدعاءات API) - -**الأطر المدعومة:** - -- Next.js (App Router مع React Server Components) -- Vite + React (SPA وSSR) - -دعم أطر إضافية مخطط له. - -[اقرأ المستندات ←](https://lingo.dev/en/compiler) +[اقرأ المستندات ←](https://lingo.dev/en/docs/react/compiler) --- ## المساهمة -المساهمات مرحب بها. يرجى اتباع هذه الإرشادات: +المساهمات مرحب بها. يُرجى اتباع هذه الإرشادات: -1. **المشكلات:** [الإبلاغ عن الأخطاء أو طلب الميزات](https://github.com/lingodotdev/lingo.dev/issues) -2. **طلبات السحب:** [إرسال التعديلات](https://github.com/lingodotdev/lingo.dev/pulls) - - كل PR يتطلب مجموعة تغييرات: `pnpm new` (أو `pnpm new:empty` للتعديلات غير الإصدارية) - - تأكد من اجتياز جميع الاختبارات قبل الإرسال -3. **التطوير:** هذا مستودع أحادي pnpm + turborepo +1. **المشكلات:** [أبلغ عن الأخطاء أو اطلب ميزات](https://github.com/lingodotdev/lingo.dev/issues) +2. **طلبات السحب:** [قدّم التغييرات](https://github.com/lingodotdev/lingo.dev/pulls) + - كل طلب سحب يتطلب مجموعة تغييرات: `pnpm new` (أو `pnpm new:empty` للتغييرات غير المُصدرة) + - تأكد من نجاح الاختبارات قبل التقديم +3. **التطوير:** هذا مستودع أحادي باستخدام pnpm + turborepo - تثبيت التبعيات: `pnpm install` - تشغيل الاختبارات: `pnpm test` - البناء: `pnpm build` @@ -491,7 +163,7 @@ export function LanguageSwitcher() { ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## التوثيق المترجم +## الوثائق المترجمة **الترجمات المتاحة:** @@ -499,12 +171,5 @@ export function LanguageSwitcher() { **إضافة لغة جديدة:** -1. أضف رمز اللغة إلى [`i18n.json`](./i18n.json) مستخدمًا [صيغة BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) -2. أرسل طلب سحب - -**صيغة لغة BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (أحرف صغيرة): `en`، `zh`، `bho` -- `Script`: ISO 15924 (حروف أولى كبيرة): `Hans`، `Hant`، `Latn` -- `REGION`: ISO 3166-1 alpha-2 (أحرف كبيرة): `US`، `CN`، `IN` -- أمثلة: `en`، `pt-BR`، `zh-Hans`، `sr-Cyrl-RS` +1. أضف رمز اللغة إلى [`i18n.json`](./i18n.json) باستخدام [صيغة BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +2. قدّم طلب دمج diff --git a/readme/as-IN.md b/readme/as-IN.md index d054d14af..e19a4a635 100644 --- a/readme/as-IN.md +++ b/readme/as-IN.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-চালিত স্থানীয়কৰণৰ বাবে মুক্ত উৎসৰ i18n টুলকিট + মুক্ত উৎসৰ স্থানীয়কৰণ অভিযান্ত্ৰিক সঁজুলি। সুসংগত, মানসম্পন্ন অনুবাদৰ বাবে + Lingo.dev স্থানীয়কৰণ অভিযান্ত্ৰিক প্লেটফৰ্মৰ সৈতে সংযোগ কৰক।


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React-ৰ বাবে Lingo Compiler (আৰম্ভণি আলফা)

@@ -71,167 +74,43 @@ ## দ্ৰুত আৰম্ভণি -| টুল | ব্যৱহাৰৰ ক্ষেত্ৰ | দ্ৰুত কমাণ্ড | -| ---------------------------------- | ------------------------------------------------ | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React এপৰ বাবে AI-সহায়ক i18n ছেটআপ | প্ৰম্পট: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ফাইল অনুবাদ কৰক | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions ত স্বয়ংক্ৰিয় অনুবাদ পাইপলাইন | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ডাইনামিক কন্টেন্টৰ বাবে ৰানটাইম অনুবাদ | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrapper অবিহনে বিল্ড-টাইম React স্থানীয়কৰণ | `withLingo()` প্লাগইন | +| সঁজুলি | ই কি কৰে | দ্ৰুত আদেশ | +| -------------------------------------------------- | -------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React এপৰ বাবে AI-সহায়িত i18n ছেটআপ | প্ৰম্পট: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ফাইল স্থানীয়কৰণ কৰক | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions-ত নিৰন্তৰ স্থানীয়কৰণ | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n ৰেপাৰ নোহোৱাকৈ বিল্ড-টাইম React স্থানীয়কৰণ | `withLingo()` প্লাগইন | ---- - -### Lingo.dev MCP - -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) +এই সঁজুলিসমূহে [স্থানীয়কৰণ ইঞ্জিনসমূহৰ](https://lingo.dev) সৈতে সংযোগ কৰে – Lingo.dev স্থানীয়কৰণ অভিযান্ত্ৰিক প্লেটফৰ্মত আপুনি সৃষ্টি কৰা ষ্টেটফুল অনুবাদ APIসমূহ। প্ৰতিটো ইঞ্জিনে প্ৰতিটো অনুৰোধত শব্দকোষ, ব্ৰেণ্ড ভইচ আৰু প্ৰতি-লোকেল নিৰ্দেশনা ধৰি ৰাখে, [পৰিভাষা ত্ৰুটি 16.6–44.6% হ্ৰাস কৰে](https://lingo.dev/research/retrieval-augmented-localization)। অথবা [নিজৰ LLM আনক](#lingodev-cli)। -**সমৰ্থিত ফ্ৰেমৱৰ্কসমূহ:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**ব্যৱহাৰ:** - -আপোনাৰ IDEত MCP চাৰ্ভাৰ কনফিগাৰ কৰাৰ পিছত ([কুইকষ্টাৰ্ট গাইড চাওক](https://lingo.dev/en/mcp)), আপোনাৰ সহায়কক প্ৰম্পট কৰক: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -সহায়কে: +--- -1. লোকেল ভিত্তিক ৰাউটিং কনফিগাৰ কৰক (উদাহৰণস্বৰূপে, `/en`, `/es`, `/pt-BR`) -2. ভাষা সলনি কৰা কম্পোনেণ্টসমূহ ছেট আপ কৰক -3. স্বয়ংক্ৰিয় লোকেল চিনাক্তকৰণ ইমপ্লিমেণ্ট কৰক -4. প্ৰয়োজনীয় কনফিগাৰেশ্যন ফাইল জেনেৰেট কৰক +### Lingo.dev MCP -**টোকা:** AI-সহায়িত কোড জেনাৰেশ্যন নন-ডিটাৰমিনিষ্টিক। কমিট কৰাৰ আগতে জেনাৰেট কৰা কোড পৰ্যালোচনা কৰক। +React এপত i18n ছেটআপ কৰাটো ত্ৰুটিপূৰ্ণ – AI কোডিং সহায়কসকলেও অস্তিত্বহীন APIসমূহ কল্পনা কৰে আৰু ৰাউটিং ভাঙে। Lingo.dev MCP-এ AI সহায়কসকলক Next.js, React Router আৰু TanStack Start-ৰ বাবে ফ্ৰেমৱৰ্ক-নিৰ্দিষ্ট i18n জ্ঞানত গাঁথনিবদ্ধ প্ৰৱেশাধিকাৰ দিয়ে। Claude Code, Cursor, GitHub Copilot Agents আৰু Codex-ৰ সৈতে কাম কৰে। -[ডকুমেণ্টেশ্যন পঢ়ক →](https://lingo.dev/en/mcp) +[নথিপত্ৰসমূহ পঢ়ক →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -অনুবাদসমূহ সিংকত ৰখাটো ক্লান্তিকৰ। আপুনি এটা নতুন ষ্ট্ৰিং যোগ কৰে, ইয়াক অনুবাদ কৰিবলৈ পাহৰি যায়, আন্তৰ্জাতিক ব্যৱহাৰকাৰীসকলক ভঙা UI শ্বিপ কৰে। বা আপুনি অনুবাদকসকলক JSON ফাইল পঠিয়ায়, দিনৰ পিছত দিন অপেক্ষা কৰে, তাৰ পিছত তেওঁলোকৰ কাম মেনুৱেলি মাৰ্জ কৰে। 10+ ভাষালৈ স্কেল কৰাৰ অৰ্থ হ'ল শ শ ফাইল পৰিচালনা কৰা যিবোৰ নিৰন্তৰ সিংকৰ বাহিৰত ড্ৰিফ্ট হয়। - -Lingo.dev CLI এ এইটো স্বয়ংক্ৰিয় কৰে। আপোনাৰ অনুবাদ ফাইলসমূহত ইয়াক পইণ্ট কৰক, এটা কমাণ্ড চলাওক, আৰু প্ৰতিটো লোকেল আপডেট হয়। এটা লকফাইলে ইতিমধ্যে কি অনুবাদ কৰা হৈছে ট্ৰেক কৰে, গতিকে আপুনি কেৱল নতুন বা সলনি হোৱা কণ্টেণ্টৰ বাবে পেমেণ্ট কৰে। JSON, YAML, CSV, PO ফাইল, আৰু markdown সমৰ্থন কৰে। - -**ছেটআপ:** +এটা আদেশত JSON, YAML, markdown, CSV আৰু PO ফাইল স্থানীয়কৰণ কৰক। এটা লকফাইলে কি ইতিমধ্যে স্থানীয়কৃত সেয়া ট্ৰেক কৰে – কেৱল নতুন বা সলনি হোৱা সমলহে প্ৰক্ৰিয়াকৰণ হয়। Lingo.dev-ত আপোনাৰ স্থানীয়কৰণ ইঞ্জিনলৈ ডিফল্ট হয়, অথবা নিজৰ LLM আনক (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)। ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**ই কেনেকৈ কাম কৰে:** - -1. কনফিগাৰ কৰা ফাইলসমূহৰ পৰা অনুবাদযোগ্য কন্টেণ্ট এক্সট্ৰেক্ট কৰে -2. অনুবাদৰ বাবে কন্টেণ্ট LLM প্ৰভাইডাৰলৈ প্ৰেৰণ কৰা হয় -3. অনুবাদৰ ফলাফল পুনৰ ফাইলচিস্টেমত লিখে -4. সম্পূৰ্ণ হোৱা অনুবাদসমূহ ট্ৰেক কৰিবলৈ `i18n.lock` ফাইল সৃষ্টি কৰে (অপ্ৰয়োজনীয় পুনৰ প্ৰচেছিং এৰোৱাই যায়) - -**কনফিগাৰেশ্যন:** - -`init` কমাণ্ডে এটা `i18n.json` ফাইল জেনেৰেট কৰে। লোকেল আৰু বাকেটসমূহ কনফিগাৰ কৰক: - -```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 প্ৰভাইডাৰৰ বাবে: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**সমৰ্থিত LLM প্ৰভাইডাৰসমূহ:** - -- Lingo.dev Engine (পৰামৰ্শিত) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ডকুমেণ্টেশ্যন পঢ়ক →](https://lingo.dev/en/cli) +[নথিপত্ৰ পঢ়ক →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -অনুবাদ হৈছে সেই ফিচাৰ যি সদায় "প্ৰায় সম্পূৰ্ণ" হৈ থাকে। ইঞ্জিনিয়াৰসকলে লোকেল আপডেট নকৰাকৈয়ে ক'ড মাৰ্জ কৰে। QA য়ে ষ্টেজিংত হেৰোৱা অনুবাদসমূহ ধৰা পেলায় - বা আৰু বেয়া, ব্যৱহাৰকাৰীয়ে প্ৰডাকশ্যনত ধৰা পেলায়। মূল কাৰণ: অনুবাদ এটা মেনুৱেল পদক্ষেপ যি ডেডলাইনৰ চাপত এৰি দিয়া সহজ। - -Lingo.dev CI/CD য়ে অনুবাদ স্বয়ংক্ৰিয় কৰে। প্ৰতিটো পুশে অনুবাদ ট্ৰিগাৰ কৰে। হেৰোৱা ষ্ট্ৰিংসমূহ ক'ড প্ৰডাকশ্যনত উপনীত হোৱাৰ আগতেই পূৰণ হয়। কোনো শৃংখলাৰ প্ৰয়োজন নাই - পাইপলাইনে ইয়াক সম্ভালে। - -**সমৰ্থিত প্লেটফৰ্মসমূহ:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions ছেটআপ:** - -`.github/workflows/translate.yml` সৃষ্টি কৰক: - -```yaml -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 }} -``` - -**ছেটআপ প্ৰয়োজনীয়তাসমূহ:** - -1. ৰিপজিটৰী ছিক্ৰেটছত `LINGODOTDEV_API_KEY` যোগ কৰক (Settings > Secrets and variables > Actions) -2. PR ৱৰ্কফ্ল'ৰ বাবে: Settings > Actions > General ত "Allow GitHub Actions to create and approve pull requests" সক্ষম কৰক - -**ৱৰ্কফ্ল' বিকল্পসমূহ:** - -অনুবাদসমূহ পোনপটীয়াকৈ কমিট কৰক: +আপোনাৰ পাইপলাইনত নিৰন্তৰ স্থানীয়কৰণ। প্ৰতিটো পুশে স্থানীয়কৰণ সক্ৰিয় কৰে – ক'ডে উৎপাদনত উপনীত হোৱাৰ আগতে অনুপস্থিত স্ট্ৰিংবোৰ পূৰণ কৰা হয়। GitHub Actions, GitLab CI/CD, আৰু Bitbucket Pipelines সমৰ্থন কৰে। ```yaml uses: lingodotdev/lingo.dev@main @@ -239,258 +118,52 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -অনুবাদৰ সৈতে pull request সৃষ্টি কৰক: - -```yaml -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` | সমান্তৰাল প্ৰচেছিং সক্ষম কৰক | - -[ডকুমেণ্ট পঢ়ক →](https://lingo.dev/en/ci/github) +[নথিপত্ৰ পঢ়ক →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -ষ্টেটিক অনুবাদ ফাইলে UI লেবেলৰ বাবে কাম কৰে, কিন্তু ব্যৱহাৰকাৰীয়ে সৃষ্টি কৰা কণ্টেণ্টৰ ক্ষেত্ৰত কি হ'ব? চেট বাৰ্তা, প্ৰডাক্ট বিৱৰণ, সাপ'ৰ্ট টিকেট - যিবোৰ কণ্টেণ্ট বিল্ড টাইমত নাথাকে সেইবোৰ পূৰ্বতে অনুবাদ কৰিব নোৱাৰি। আপুনি অনুবাদ নোহোৱা টেক্সট দেখুৱাবলৈ বাধ্য হয় বা কাষ্টম অনুবাদ পাইপলাইন নিৰ্মাণ কৰিব লাগে। +বেকেণ্ড ক'ডৰ পৰা পোনপটীয়াকৈ আপোনাৰ স্থানীয়কৰণ ইঞ্জিন কল কৰক। ৱেবহুক ডেলিভাৰীৰ সৈতে সিংক্ৰনাছ আৰু এছিংক্ৰনাছ স্থানীয়কৰণ, প্ৰতিটো ল'কেলৰ বাবে বিফলতা বিচ্ছিন্নতা, আৰু WebSocket যোগে ৰিয়েল-টাইম প্ৰগতি। -Lingo.dev SDK এ ৰানটাইমত কণ্টেণ্ট অনুবাদ কৰে। যিকোনো টেক্সট, অবজেক্ট, বা HTML পাছ কৰক আৰু স্থানীয়কৃত সংস্কৰণ পাওক। ৰিয়েল-টাইম চেট, ডাইনামিক নটিফিকেশ্যন, বা ডিপ্লয়মেণ্টৰ পিছত আহা যিকোনো কণ্টেণ্টৰ বাবে কাম কৰে। JavaScript, PHP, Python, আৰু Ruby ৰ বাবে উপলব্ধ। - -**ইনষ্টলেশ্যন:** - -```bash -npm install lingo.dev -``` - -**ব্যৱহাৰ:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**উপলব্ধ SDK সমূহ:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - ৱেব এপ্, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ডকুমেণ্ট পঢ়ক →](https://lingo.dev/en/sdk) +[নথিপত্ৰ পঢ়ক →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React ৰ বাবে Lingo Compiler (প্ৰাৰম্ভিক আলফা) -পৰম্পৰাগত i18n আক্ৰমণাত্মক। আপুনি প্ৰতিটো ষ্ট্ৰিং `t()` ফাংশ্যনত ৰেপ কৰে, অনুবাদ কী উদ্ভাৱন কৰে (`home.hero.title.v2`), সমান্তৰাল JSON ফাইল বজাই ৰাখে, আৰু আপোনাৰ কম্পোনেণ্টবোৰ স্থানীয়কৰণ বয়লাৰপ্লেটৰ দৰে ফুলি উঠে। ই ইমান ক্লান্তিকৰ যে Team-বোৰে আন্তঃৰাষ্ট্ৰীয়কৰণ ডিলেই কৰে যেতিয়ালৈকে এইটো এটা ডাঙৰ ৰিফেক্টৰ হৈ পৰা নাই। +i18n ৰেপাৰ অবিহনে বিল্ড-টাইম React স্থানীয়কৰণ। সৰল ইংৰাজী পাঠৰ সৈতে কম্পোনেণ্ট লিখক – কম্পাইলাৰে অনুবাদযোগ্য স্ট্ৰিং চিনাক্ত কৰে আৰু বিল্ড সময়ত স্থানীয়কৃত ভেৰিয়েণ্ট সৃষ্টি কৰে। কোনো অনুবাদ কী নাই, কোনো JSON ফাইল নাই, কোনো `t()` ফাংচন নাই। Next.js (App Router) আৰু Vite + React সমৰ্থন কৰে। -Lingo.dev Compiler এ আনুষ্ঠানিকতা আঁতৰায়। সাধাৰণ ইংৰাজী টেক্সটৰ সৈতে React কম্পোনেণ্ট লিখক। কম্পাইলাৰে বিল্ড টাইমত অনুবাদযোগ্য ষ্ট্ৰিং চিনাক্ত কৰে আৰু স্বয়ংক্ৰিয়ভাৱে স্থানীয়কৃত ভেৰিয়েণ্ট জেনেৰেট কৰে। কোনো কী নাই, কোনো JSON ফাইল নাই, কোনো ৰেপাৰ ফাংচন নাই - কেৱল React ক'ড যি একাধিক ভাষাত কাম কৰে। - -**ইনষ্টলেশ্যন:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**প্ৰমাণীকৰণ:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**কনফিগাৰেশ্যন (Vite):** - -```ts -// 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(), - ], -}); -``` - -**প্ৰ'ভাইডাৰ ছেটআপ:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**ভাষা সুইচাৰ:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**ডেভেলপমেণ্ট:** `npm run dev` (pseudotranslator ব্যৱহাৰ কৰে, কোনো API কল নহয়) - -**প্ৰডাকশ্যন:** `usePseudotranslator: false` ছেট কৰক, তাৰপিছত `next build` - -`.lingo/` ডাইৰেক্টৰী version control-ত commit কৰক। - -**মুখ্য বৈশিষ্ট্যসমূহ:** - -- শূন্য ৰানটাইম পাৰফৰ্মেন্স খৰচ -- অনুবাদ কী বা JSON ফাইল নাই -- `t()` ফাংচন বা `` wrapper কম্পোনেণ্ট নাই -- JSX-ত অনুবাদযোগ্য টেক্সটৰ স্বয়ংক্ৰিয় চিনাক্তকৰণ -- TypeScript সমৰ্থন -- বহুবচন সমৰ্থনৰ বাবে ICU MessageFormat -- `data-lingo-override` এট্ৰিবিউটৰ জৰিয়তে মেনুৱেল অভাৰ্ৰাইড -- ইন-বিল্ট অনুবাদ এডিটৰ উইজেট - -**বিল্ড ম'ডসমূহ:** - -- `pseudotranslator`: প্লেচহোল্ডাৰ অনুবাদৰ সৈতে ডেভেলপমেণ্ট ম'ড (কোনো API খৰচ নাই) -- `real`: LLM ব্যৱহাৰ কৰি প্ৰকৃত অনুবাদ জেনেৰেট কৰক -- `cache-only`: CI-ৰ পৰা pre-generated অনুবাদ ব্যৱহাৰ কৰি প্ৰডাকশ্যন ম'ড (কোনো API কল নহয়) - -**সমৰ্থিত ফ্ৰেমৱৰ্কসমূহ:** - -- Next.js (React Server Components ৰ সৈতে App Router) -- Vite + React (SPA আৰু SSR) - -অতিৰিক্ত ফ্ৰেমৱৰ্ক সমৰ্থন পৰিকল্পিত। - -[ডকুমেণ্টেশ্যন পঢ়ক →](https://lingo.dev/en/compiler) +[নথিপত্ৰ পঢ়ক →](https://lingo.dev/en/docs/react/compiler) --- ## অৱদান -অৱদান স্বাগতম। অনুগ্ৰহ কৰি এই নিৰ্দেশনাসমূহ অনুসৰণ কৰক: +অৱদান স্বাগত জনোৱা হয়। অনুগ্ৰহ কৰি এই নিৰ্দেশনাসমূহ অনুসৰণ কৰক: -1. **সমস্যাসমূহ:** [বাগ ৰিপ'ৰ্ট কৰক বা বৈশিষ্ট্যৰ অনুৰোধ কৰক](https://github.com/lingodotdev/lingo.dev/issues) +1. **সমস্যা:** [বাগ ৰিপ'ৰ্ট কৰক বা বৈশিষ্ট্য অনুৰোধ কৰক](https://github.com/lingodotdev/lingo.dev/issues) 2. **Pull Requests:** [পৰিৱৰ্তন জমা দিয়ক](https://github.com/lingodotdev/lingo.dev/pulls) - - প্ৰতিটো PR-ৰ বাবে এক changeset লাগে: `pnpm new` (অথবা non-release change-ৰ বাবে `pnpm new:empty`) - - জমা দিয়াৰ আগতে পৰীক্ষা সমূহ পাৰ হোৱা নিশ্চিত কৰক -3. **Development:** এইটো pnpm + turborepo monorepo - - নিৰ্ভরশীলতা ইনষ্টল কৰক: `pnpm install` + - প্ৰতিটো PR ৰ বাবে এটা চেঞ্জছেট প্ৰয়োজন: `pnpm new` (বা নন-ৰিলিজ পৰিৱৰ্তনৰ বাবে `pnpm new:empty`) + - জমা দিয়াৰ আগতে পৰীক্ষাবোৰ পাছ হয় নে নাই নিশ্চিত কৰক +3. **ডেভেলপমেণ্ট:** এইটো এটা pnpm + turborepo monorepo + - নিৰ্ভৰশীলতা ইনষ্টল কৰক: `pnpm install` - পৰীক্ষা চলাওক: `pnpm test` - - Build: `pnpm build` + - বিল্ড কৰক: `pnpm build` **সমৰ্থন:** [Discord সম্প্ৰদায়](https://lingo.dev/go/discord) ## ষ্টাৰ ইতিহাস -যদি আপুনি Lingo.dev উপযোগী বুলি বিবেচনা কৰে, আমাক এটা ষ্টাৰ দিয়ক আৰু আমাক 10,000 ষ্টাৰ লাভ কৰাত সহায় কৰক! +যদি আপুনি Lingo.dev উপযোগী বুলি পায়, আমাক এটা ষ্টাৰ দিয়ক আৰু আমাক 10,000 ষ্টাৰত উপনীত হোৱাত সহায় কৰক! [ -![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![ষ্টাৰ ইতিহাস চাৰ্ট](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## স্থানীয়কৃত ডকুমেণ্টেশ্যন +## স্থানীয়কৃত নথিপত্ৰ **উপলব্ধ অনুবাদসমূহ:** @@ -498,12 +171,5 @@ export function LanguageSwitcher() { **নতুন ভাষা যোগ কৰা:** -1. [`i18n.json`](./i18n.json)-ত [BCP-47 format](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ব্যৱহাৰ কৰি locale code যোগ কৰক -2. এটা pull request জমা দিয়ক - -**BCP-47 locale format:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (lowercase): `en`, `zh`, `bho` -- `Script`: ISO 15924 (title case): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (uppercase): `US`, `CN`, `IN` -- উদাহৰণসমূহ: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 ফৰ্মেট](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ব্যৱহাৰ কৰি [`i18n.json`](./i18n.json)-ত লʼকেল ক'ড যোগ কৰক +2. এটা পুল ৰিকুৱেষ্ট দাখিল কৰক diff --git a/readme/bho.md b/readme/bho.md index ef257979e..d58ae4c86 100644 --- a/readme/bho.md +++ b/readme/bho.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-संचालित स्थानीयकरण खातिर ओपन-सोर्स i18n टूलकिट + ओपन-सोर्स स्थानीयकरण इंजीनियरिंग औजार। सुसंगत आ गुणवत्ता वाला अनुवाद खातिर + Lingo.dev स्थानीयकरण इंजीनियरिंग प्लेटफ़ॉर्म से जुड़ल जाव।


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler for React (जल्दी अल्फा)

@@ -71,167 +74,43 @@ ## तुरंत शुरुआत -| टूल | उपयोग केस | त्वरित कमांड | -| ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React ऐप्स खातिर AI-सहायता प्राप्त i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फाइल सब के अनुवाद करीं | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions में स्वचालित अनुवाद पाइपलाइन | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | डायनामिक कंटेंट खातिर रनटाइम अनुवाद | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n रैपर बिना बिल्ड-टाइम React स्थानीयकरण | `withLingo()` प्लगइन | +| औजार | ई का करेला | झटपट कमांड | +| -------------------------------------------------- | -------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React ऐप्स खातिर AI-सहायता वाला i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फाइल सभ के स्थानीयकरण करीं | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions में निरंतर स्थानीयकरण | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | बिल्ड-टाइम React स्थानीयकरण बिना i18n रैपर के | `withLingo()` प्लगइन | ---- - -### Lingo.dev MCP - -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) +ई औजार सभ [स्थानीयकरण इंजन](https://lingo.dev) से जुड़ल बाटें – स्टेटफुल अनुवाद API जवन रउरा Lingo.dev स्थानीयकरण इंजीनियरिंग प्लेटफ़ॉर्म प बनावत बानी। हर इंजन हर अनुरोध में शब्दकोश, ब्रांड आवाज, आ प्रति-लोकेल निर्देश सभ के बनवले रखेला, [शब्दावली के गलती के 16.6–44.6% घटावेला](https://lingo.dev/research/retrieval-augmented-localization)। या [आपन LLM लावल जाव](#lingodev-cli)। -**समर्थित फ्रेमवर्क:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**उपयोग:** - -रउआ के IDE में MCP सर्वर कॉन्फ़िगर करे के बाद ([क्विकस्टार्ट गाइड देखीं](https://lingo.dev/en/mcp)), अपना असिस्टेंट के प्रॉम्प्ट करीं: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -असिस्टेंट करी: +--- -1. लोकेल-आधारित राउटिंग के कॉन्फ़िगर करीं (जइसे, `/en`, `/es`, `/pt-BR`) -2. भाषा बदले वाला कंपोनेंट सेटअप करीं -3. ऑटोमैटिक लोकेल डिटेक्शन लागू करीं -4. जरूरी कॉन्फ़िगरेशन फाइल बनाईं +### Lingo.dev MCP -**नोट:** AI-सहायता प्राप्त कोड जेनरेशन गैर-निर्धारक बा। कमिट करे से पहिले जेनरेट कइल कोड के समीक्षा करीं। +React ऐप्स में i18n सेटअप करे में गलती होखे के संभावना बा – AI कोडिंग सहायक सभ भी नकली API सभ बनावे लागेलें आ राउटिंग तोड़ देवेलें। Lingo.dev MCP, AI सहायक सभ के Next.js, React Router, आ TanStack Start खातिर फ्रेमवर्क-खास i18n ज्ञान के संरचित एक्सेस देवेला। Claude Code, Cursor, GitHub Copilot Agents, आ Codex के साथे काम करेला। -[दस्तावेज़ पढ़ीं →](https://lingo.dev/en/mcp) +[दस्तावेज पढ़ीं →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -अनुवाद के सिंक में रखल थकाऊ बा। रउआ एगो नया स्ट्रिंग जोड़ेनी, ओकर अनुवाद करल भूल जानी, अंतरराष्ट्रीय उपयोगकर्ता लोग के टूटल UI भेज देनी। या रउआ अनुवादक लोग के JSON फाइल भेजेनी, दिन भर इंतजार करेनी, फिर मैन्युअल रूप से उनकर काम के वापस मर्ज करेनी। 10+ भाषा में स्केल करे के मतलब बा सैकड़ों फाइल के प्रबंधन करल जे लगातार सिंक से बाहर हो जाला। - -Lingo.dev CLI एकरा के ऑटोमेट करेला। एकरा के रउआ के अनुवाद फाइल पर इंगित करीं, एगो कमांड चलाईं, आ हर लोकेल अपडेट हो जाला। एगो लॉकफाइल ट्रैक करेला कि का पहिले से अनुवादित बा, तs रउआ सिर्फ नया या बदलल सामग्री खातिर भुगतान करेनी। JSON, YAML, CSV, PO फाइल, आ markdown के समर्थन करेला। - -**सेटअप:** +एक कमांड में JSON, YAML, markdown, CSV, आ PO फाइल सभ के स्थानीयकरण करीं। एगो लॉकफाइल ट्रैक करेला कि का पहिले से स्थानीयकृत बा – खाली नया भा बदलल सामग्री प्रोसेस होखेला। Lingo.dev प रउरा स्थानीयकरण इंजन खातिर डिफ़ॉल्ट बा, या आपन LLM लावल जाव (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)। ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**ई कइसे काम करेला:** - -1. कॉन्फ़िगर कइल फाइल सभ से अनुवाद योग्य सामग्री निकालीं -2. अनुवाद खातिर कंटेंट के LLM प्रोवाइडर के पास भेजीं -3. अनुवादित कंटेंट वापस फाइल सिस्टम में लिखीं -4. पूरा भइल अनुवाद के ट्रैक रखे खातिर `i18n.lock` फाइल बनाई (अनावश्यक प्रोसेसिंग से बचावेला) - -**कॉन्फ़िगरेशन:** - -`init` कमांड एगो `i18n.json` फाइल जेनरेट करेला। लोकेल आ बकेट के कॉन्फ़िगर करीं: - -```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 प्रोवाइडर खातिर: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**समर्थित LLM प्रोवाइडर:** - -- Lingo.dev Engine (अनुशंसित) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[दस्तावेज़ पढ़ीं →](https://lingo.dev/en/cli) +[दस्तावेज पढ़ीं →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -अनुवाद ऊ फीचर बा जवन हमेशा "लगभग पूरा" होखेला। इंजीनियर लोकेल अपडेट कइले बिना कोड मर्ज कर देला। QA स्टेजिंग में गायब अनुवाद पकड़ेला - या बदतर, यूजर प्रोडक्शन में पकड़ेला। मूल कारण: अनुवाद एगो मैनुअल स्टेप बा जेकरा के डेडलाइन के दबाव में छोड़ल आसान बा। - -Lingo.dev CI/CD अनुवाद के ऑटोमैटिक बना देला। हर पुश अनुवाद ट्रिगर करेला। गायब स्ट्रिंग कोड के प्रोडक्शन में पहुँचे से पहिले भर जाला। कवनो अनुशासन के जरूरत नइखे - पाइपलाइन संभाल लेला। - -**समर्थित प्लेटफॉर्म:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions सेटअप:** - -`.github/workflows/translate.yml` बनाई: - -```yaml -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 }} -``` - -**सेटअप आवश्यकता:** - -1. रिपॉजिटरी सीक्रेट में `LINGODOTDEV_API_KEY` जोड़ दीं (Settings > Secrets and variables > Actions) -2. PR वर्कफ्लो खातिर: Settings > Actions > General में "Allow GitHub Actions to create and approve pull requests" सक्षम करीं - -**वर्कफ़्लो विकल्प:** - -अनुवाद सीधे कमिट करीं: +रउआ के पाइपलाइन में लगातार स्थानीयकरण। हर पुश से स्थानीयकरण शुरू हो जाला – कोड प्रोडक्शन में पहुँचे से पहिले छूटल स्ट्रिंग भर जालीं। GitHub Actions, GitLab CI/CD, आ Bitbucket Pipelines के समर्थन मिलेला। ```yaml uses: lingodotdev/lingo.dev@main @@ -239,250 +118,44 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -अनुवाद के साथ पुल रिक्वेस्ट बनाईं: - -```yaml -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` | समानांतर प्रोसेसिंग सक्षम करीं | - -[डॉक्स पढ़ीं →](https://lingo.dev/en/ci/github) +[दस्तावेज पढ़ीं →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -स्टैटिक अनुवाद फाइल UI लेबल खातिर काम करेला, बाकिर यूजर-जेनरेटेड कंटेंट के का होई? चैट संदेश, प्रोडक्ट विवरण, सपोर्ट टिकट - जवन कंटेंट बिल्ड टाइम पर मौजूद नइखे ओकर पहिले से अनुवाद ना हो सकेला। रउआ बिना अनुवाद वाला टेक्स्ट देखावे खातिर मजबूर बानी या कस्टम अनुवाद पाइपलाइन बनावे के पड़ी। +बैकएंड कोड से सीधे आपन स्थानीयकरण इंजन के कॉल करीं। वेबहुक डिलीवरी के साथ सिंक्रोनस आ async स्थानीयकरण, प्रति लोकेल में फेलियर आइसोलेशन, आ WebSocket के जरिए रियल-टाइम प्रगति। -Lingo.dev SDK रनटाइम पर कंटेंट के अनुवाद करेला। कवनो टेक्स्ट, ऑब्जेक्ट, या HTML पास करीं आ लोकलाइज्ड वर्जन वापस पाईं। रियल-टाइम चैट, डायनामिक नोटिफिकेशन, या कवनो कंटेंट जवन डिप्लॉयमेंट के बाद आवेला ओकरा खातिर काम करेला। JavaScript, PHP, Python, आ Ruby खातिर उपलब्ध बा। - -**इंस्टॉलेशन:** - -```bash -npm install lingo.dev -``` - -**उपयोग:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**उपलब्ध SDK:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - वेब ऐप, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[डॉक्स पढ़ीं →](https://lingo.dev/en/sdk) +[दस्तावेज पढ़ीं →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React खातिर Lingo Compiler (अर्ली अल्फा) -पारंपरिक i18n दखलअंदाज करे वाला बा। हर स्ट्रिंग के रउआ `t()` फंक्शन में लपेटले, अनुवाद कुंजी (`home.hero.title.v2`) गढ़ेनी, समांतर JSON फाइल बनाएनी, आ देखत बानी कि रउआ के कंपोनेंट स्थानीयकरण बायलरप्लेट से फूल गइल बा। ई अतना थकाऊ बा कि टीम इंटरनेशनलाइजेशन के तब तक टारेले जब तक ऊ एगो विशाल रिफैक्टरिंग नइखे बन जाला। +i18n रैपर के बिना बिल्ड-टाइम React स्थानीयकरण। सादा अंग्रेजी टेक्स्ट के साथ कंपोनेंट लिखीं – कंपाइलर अनुवाद योग्य स्ट्रिंग के पहचान के बिल्ड टाइम पर स्थानीयकृत वेरिएंट बनावेला। ना अनुवाद कुंजी, ना JSON फाइल, ना `t()` फंक्शन। Next.js (App Router) आ Vite + React के समर्थन मिलेला। -Lingo.dev Compiler औपचारिकता के खत्म क देला। सादा अंग्रेजी टेक्स्ट के साथ React कंपोनेंट लिखीं। कंपाइलर बिल्ड टाइम पर अनुवाद योग्य स्ट्रिंग के पहचान लेला आ स्वचालित रूप से स्थानीयकृत वेरिएंट जेनरेट क देला। ना कुंजी, ना JSON फाइल, ना रैपर फंक्शन - बस React कोड जवन कई भाषा में काम करेला। - -**इंस्टॉलेशन:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**प्रमाणीकरण:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**कॉन्फ़िगरेशन (Vite):** - -```ts -// 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(), - ], -}); -``` - -**प्रोवाइडर सेटअप:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**भाषा स्विचर:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**डेवलपमेंट:** `npm run dev` (पस्यूडोट्रांसलेटर के इस्तेमाल, कवनो API कॉल नइखे) - -**प्रोडक्शन:** पहिले `usePseudotranslator: false` सेट करीं, फिर `next build` - -`.lingo/` डायरेक्टरी के version control में कमिट करीं। - -**मुख्य विशेषता:** - -- शून्य रनटाइम प्रदर्शन लागत -- ना अनुवाद कुंजी, ना JSON फाइल -- ना `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) - -अतिरिक्त फ्रेमवर्क समर्थन योजनाबद्ध बा। - -[दस्तावेज़ पढ़ीं →](https://lingo.dev/en/compiler) +[दस्तावेज पढ़ीं →](https://lingo.dev/en/docs/react/compiler) --- ## योगदान -योगदान के स्वागत बा। कृपया एह दिशा-निर्देशन के पालन करीं: +योगदान के स्वागत बा। कृपया एह दिशानिर्देश के पालन करीं: -1. **समस्या:** [बग रिपोर्ट करीं या फीचर मागीं](https://github.com/lingodotdev/lingo.dev/issues) +1. **मुद्दा:** [बग रिपोर्ट करीं या फीचर के अनुरोध करीं](https://github.com/lingodotdev/lingo.dev/issues) 2. **पुल रिक्वेस्ट:** [परिवर्तन सबमिट करीं](https://github.com/lingodotdev/lingo.dev/pulls) - - हर PR खातिर एक changeset चाहीं: `pnpm new` (नॉन-रिलीज बदलाव खातिर `pnpm new:empty`) - - सबमिट करे से पहिले टेस्ट पास होखे के ध्यान दीं -3. **डेवलपमेंट:** ई pnpm + turborepo मोनोरेपो ह + - हर PR खातिर चेंजसेट जरूरी बा: `pnpm new` (या नॉन-रिलीज परिवर्तन खातिर `pnpm new:empty`) + - सबमिट करे से पहिले सुनिश्चित करीं कि टेस्ट पास हो जाला +3. **विकास:** ई एगो pnpm + turborepo monorepo बा - डिपेंडेंसी इंस्टॉल करीं: `pnpm install` - टेस्ट चलाईं: `pnpm test` - बिल्ड करीं: `pnpm build` -**सहायता:** [Discord समुदाय](https://lingo.dev/go/discord) +**समर्थन:** [Discord समुदाय](https://lingo.dev/go/discord) ## स्टार इतिहास -अगर Lingo.dev उपयोगी लागे त हमनी के एगो स्टार दीं आ 10,000 स्टार तक पहुँचे में मदद करीं! +अगर Lingo.dev रउआ के काम के लागल, त हमनी के एगो स्टार दीं आ 10,000 स्टार तक पहुँचे में मदद करीं! [ @@ -496,14 +169,7 @@ export function LanguageSwitcher() { [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**नया भाषा जोड़ल:** - -1. [`i18n.json`](./i18n.json) में [BCP-47 फॉर्मेट](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) से locale code जोड़ि दीं -2. एगो pull request सबमिट करीं - -**BCP-47 locale फॉर्मेट:** `language[-Script][-REGION]` +\*\*नया भाषा जोड़ल: -- `language`: ISO 639-1/2/3 (छोट अक्षर): `en`, `zh`, `bho` -- `Script`: ISO 15924 (पहिला अक्षर बड़, बाकी छोट): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (सगरी बड़ अक्षर): `US`, `CN`, `IN` -- उदाहरण: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 प्रारूप](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) के उपयोग से [`i18n.json`](./i18n.json) में लोकेल कोड जोड़ीं +2. पुल रिक्वेस्ट सबमिट करीं diff --git a/readme/bn.md b/readme/bn.md index 5a2a8324e..3621db38f 100644 --- a/readme/bn.md +++ b/readme/bn.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-চালিত স্থানীয়করণের জন্য ওপেন-সোর্স i18n টুলকিট + ওপেন-সোর্স স্থানীয়করণ ইঞ্জিনিয়ারিং টুল। সুসংগত, মানসম্পন্ন অনুবাদের জন্য + Lingo.dev স্থানীয়করণ ইঞ্জিনিয়ারিং প্ল্যাটফর্মের সাথে সংযুক্ত হন।


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React-এর জন্য Lingo Compiler (প্রাথমিক আলফা)

@@ -71,51 +74,22 @@ ## দ্রুত শুরু -| টুল | ব্যবহারের ক্ষেত্র | দ্রুত কমান্ড | -| ---------------------------------- | ------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React অ্যাপের জন্য AI-সহায়তাপ্রাপ্ত i18n সেটআপ | প্রম্পট: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ফাইল অনুবাদ করুন | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions-এ স্বয়ংক্রিয় অনুবাদ পাইপলাইন | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ডায়নামিক কন্টেন্টের জন্য রানটাইম অনুবাদ | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n র‍্যাপার ছাড়াই বিল্ড-টাইম React স্থানীয়করণ | `withLingo()` প্লাগইন | +| টুল | এটি কী করে | দ্রুত কমান্ড | +| -------------------------------------------------- | --------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React অ্যাপের জন্য AI-সহায়তাপ্রাপ্ত i18n সেটআপ | প্রম্পট: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ফাইল স্থানীয়করণ করুন | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions-এ ক্রমাগত স্থানীয়করণ | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n র‍্যাপার ছাড়াই বিল্ড-টাইম React স্থানীয়করণ | `withLingo()` প্লাগইন | ---- - -### Lingo.dev MCP - -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) +এই টুলগুলো [স্থানীয়করণ ইঞ্জিন](https://lingo.dev)-এর সাথে সংযুক্ত হয় – স্টেটফুল ট্রান্সলেশন API যা আপনি Lingo.dev স্থানীয়করণ ইঞ্জিনিয়ারিং প্ল্যাটফর্মে তৈরি করেন। প্রতিটি ইঞ্জিন গ্লসারি, ব্র্যান্ড ভয়েস এবং প্রতিটি অনুরোধে লোকাল-নির্দিষ্ট নির্দেশনা সংরক্ষণ করে, [পরিভাষা ত্রুটি ১৬.৬–৪৪.৬% কমায়](https://lingo.dev/research/retrieval-augmented-localization)। অথবা [নিজের LLM ব্যবহার করুন](#lingodev-cli)। -**সমর্থিত ফ্রেমওয়ার্ক:** - -- Next.js (App Router ও Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**ব্যবহার:** - -আপনার IDE-তে MCP সার্ভার কনফিগার করার পরে ([কুইকস্টার্ট গাইড দেখুন](https://lingo.dev/en/mcp)), আপনার সহায়ককে প্রম্পট করুন: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -সহায়ক করবে: +--- -১. লোকেল-ভিত্তিক রাউটিং কনফিগার করুন (যেমন, `/en`, `/es`, `/pt-BR`) -২. ভাষা সুইচিং কম্পোনেন্ট সেটআপ করুন -৩. স্বয়ংক্রিয় লোকেল সনাক্তকরণ বাস্তবায়ন করুন -৪. প্রয়োজনীয় কনফিগারেশন ফাইল তৈরি করুন +### Lingo.dev MCP -**দ্রষ্টব্য:** AI-সহায়তা কোড জেনারেশন নন-ডিটারমিনিস্টিক। কমিট করার আগে জেনারেট করা কোড পর্যালোচনা করুন। +React অ্যাপে i18n সেটআপ করা ত্রুটিপ্রবণ – এমনকি AI কোডিং সহায়করাও অস্তিত্বহীন API কল্পনা করে এবং রাউটিং ভেঙে দেয়। Lingo.dev MCP, AI সহায়কদের Next.js, React Router এবং TanStack Start-এর জন্য ফ্রেমওয়ার্ক-নির্দিষ্ট i18n জ্ঞানে সংগঠিত অ্যাক্সেস দেয়। Claude Code, Cursor, GitHub Copilot Agents এবং Codex-এর সাথে কাজ করে। [ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/mcp) @@ -123,115 +97,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -অনুবাদ সিঙ্কে রাখা ক্লান্তিকর। আপনি একটি নতুন স্ট্রিং যোগ করেন, এটি অনুবাদ করতে ভুলে যান, আন্তর্জাতিক ব্যবহারকারীদের কাছে ভাঙা UI পাঠান। অথবা আপনি অনুবাদকদের কাছে JSON ফাইল পাঠান, দিনের পর দিন অপেক্ষা করেন, তারপর ম্যানুয়ালি তাদের কাজ মার্জ করেন। 10+ ভাষায় স্কেল করার অর্থ শত শত ফাইল পরিচালনা করা যা ক্রমাগত সিঙ্কের বাইরে চলে যায়। - -Lingo.dev CLI এটি স্বয়ংক্রিয় করে। আপনার অনুবাদ ফাইলগুলিতে এটি নির্দেশ করুন, একটি কমান্ড চালান এবং প্রতিটি লোকেল আপডেট হয়। একটি লকফাইল ট্র্যাক করে কী ইতিমধ্যে অনুবাদ করা হয়েছে, তাই আপনি শুধুমাত্র নতুন বা পরিবর্তিত কন্টেন্টের জন্য অর্থ প্রদান করেন। JSON, YAML, CSV, PO ফাইল এবং markdown সমর্থন করে। - -**সেটআপ:** +একটি কমান্ডে JSON, YAML, markdown, CSV এবং PO ফাইল স্থানীয়করণ করুন। একটি লকফাইল ট্র্যাক করে কী ইতিমধ্যে স্থানীয়করণ হয়েছে – শুধুমাত্র নতুন বা পরিবর্তিত কন্টেন্ট প্রক্রিয়া করা হয়। ডিফল্টভাবে Lingo.dev-এ আপনার স্থানীয়করণ ইঞ্জিন ব্যবহার করে, অথবা নিজের LLM নিয়ে আসুন (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)। ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**এটি কীভাবে কাজ করে:** - -১. কনফিগার করা ফাইল থেকে অনুবাদযোগ্য কন্টেন্ট এক্সট্র্যাক্ট করা হয় -২. অনুবাদের জন্য কন্টেন্ট LLM প্রদানকারীতে পাঠানো হয় -৩. অনুবাদিত কন্টেন্ট ফাইল সিস্টেমে সংরক্ষণ করা হয় -৪. সম্পন্ন অনুবাদ ট্র্যাক করতে `i18n.lock` ফাইল তৈরি করা হয় (অপ্রয়োজনীয় প্রসেসিং এড়াতে) - -**কনফিগারেশন:** - -`init` কমান্ডটি একটি `i18n.json` ফাইল তৈরি করে। লোকেল ও বাকেট কনফিগার করুন: - -```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 প্রোভাইডার ব্যবহারে: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**সাপোর্টেড LLM প্রোভাইডার:** - -- Lingo.dev Engine (প্রস্তাবিত) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/cli) +[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -অনুবাদ হলো এমন একটি ফিচার যা সবসময় "প্রায় সম্পন্ন" থাকে। ইঞ্জিনিয়াররা লোকেল আপডেট না করেই কোড মার্জ করেন। QA স্টেজিংয়ে অনুপস্থিত অনুবাদ ধরে ফেলে - অথবা আরও খারাপ, ব্যবহারকারীরা প্রোডাকশনে সেগুলো ধরে ফেলেন। মূল কারণ: অনুবাদ একটি ম্যানুয়াল ধাপ যা ডেডলাইনের চাপে এড়িয়ে যাওয়া সহজ। - -Lingo.dev CI/CD অনুবাদকে স্বয়ংক্রিয় করে তোলে। প্রতিটি পুশ অনুবাদ ট্রিগার করে। অনুপস্থিত স্ট্রিং প্রোডাকশনে পৌঁছানোর আগেই পূরণ হয়ে যায়। কোনো শৃঙ্খলার প্রয়োজন নেই - পাইপলাইন এটি পরিচালনা করে। - -**সাপোর্টেড প্ল্যাটফর্ম:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions সেটআপ:** - -`.github/workflows/translate.yml` তৈরি করুন: - -```yaml -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" সক্রিয় করুন - -**ওয়ার্কফ্লো অপশন:** - -সরাসরি অনুবাদ কমিট করুন: +আপনার পাইপলাইনে ধারাবাহিক স্থানীয়করণ। প্রতিটি পুশ স্থানীয়করণ ট্রিগার করে – অনুপস্থিত স্ট্রিং প্রোডাকশনে কোড পৌঁছানোর আগেই পূরণ হয়ে যায়। GitHub Actions, GitLab CI/CD এবং Bitbucket Pipelines সমর্থন করে। ```yaml uses: lingodotdev/lingo.dev@main @@ -239,267 +118,58 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -অনুবাদ সহ pull request তৈরি করুন: - -```yaml -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` | প্যারালাল প্রসেসিং সক্রিয় করুন | - -[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/ci/github) +[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -স্ট্যাটিক অনুবাদ ফাইল UI লেবেলের জন্য কাজ করে, কিন্তু ইউজার-জেনারেটেড কন্টেন্টের ক্ষেত্রে কী হবে? চ্যাট মেসেজ, প্রোডাক্ট বর্ণনা, সাপোর্ট টিকিট - যে কন্টেন্ট বিল্ড টাইমে বিদ্যমান নেই তা প্রি-ট্রান্সলেট করা যায় না। আপনি অনুবাদহীন টেক্সট দেখাতে বাধ্য হন অথবা একটি কাস্টম অনুবাদ পাইপলাইন তৈরি করতে হয়। +ব্যাকএন্ড কোড থেকে সরাসরি আপনার স্থানীয়করণ ইঞ্জিন কল করুন। ওয়েবহুক ডেলিভারি, লোকেল প্রতি ফেইলিউর আইসোলেশন এবং WebSocket এর মাধ্যমে রিয়েল-টাইম প্রগ্রেস সহ সিঙ্ক্রোনাস এবং এসিঙ্ক স্থানীয়করণ। -Lingo.dev SDK রানটাইমে কন্টেন্ট অনুবাদ করে। যেকোনো টেক্সট, অবজেক্ট, বা HTML পাস করুন এবং একটি লোকালাইজড ভার্সন ফেরত পান। রিয়েল-টাইম চ্যাট, ডায়নামিক নোটিফিকেশন, বা ডিপ্লয়মেন্টের পরে আসা যেকোনো কন্টেন্টের জন্য কাজ করে। JavaScript, PHP, Python, এবং Ruby-এর জন্য উপলব্ধ। - -**ইনস্টলেশন:** - -```bash -npm install lingo.dev -``` - -**ব্যবহার:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**উপলব্ধ SDK:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - ওয়েব অ্যাপ, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/sdk) +[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React এর জন্য Lingo Compiler (প্রাথমিক আলফা) -পরিচিত i18n পদ্ধতি অনুপ্রবেশকারী। আপনি প্রতিটি স্ট্রিংকে `t()` ফাংশনে র‍্যাপ করেন, অনুবাদের কী (`home.hero.title.v2`) উদ্ভাবন করেন, সমান্তরাল JSON ফাইল মেইনটেইন করেন এবং আপনার কম্পোনেন্টগুলিকে স্থানীয়করণ বয়লারপ্লেটের কারণে ফুলে যেতে দেখেন। এত ক্লান্তিকর ও জটিল যে টিমগুলো আন্তর্জাতিকীকরণ বিলম্বিত করে যতক্ষণ না এটি একটি বড় রিফ্যাক্টরে পরিণত হয়। +i18n র‍্যাপার ছাড়াই বিল্ড-টাইম React স্থানীয়করণ। সাধারণ ইংরেজি টেক্সট দিয়ে কম্পোনেন্ট লিখুন – কম্পাইলার অনুবাদযোগ্য স্ট্রিং সনাক্ত করে এবং বিল্ড টাইমে স্থানীয়কৃত ভার্সন তৈরি করে। কোনো অনুবাদ কী নেই, JSON ফাইল নেই, `t()` ফাংশন নেই। Next.js (App Router) এবং Vite + React সমর্থন করে। -Lingo.dev Compiler আনুষ্ঠানিকতা দূর করে। সাধারণ ইংরেজি টেক্সট দিয়ে React কম্পোনেন্ট লিখুন। কম্পাইলার বিল্ড টাইমে অনুবাদযোগ্য স্ট্রিং সনাক্ত করে এবং স্বয়ংক্রিয়ভাবে স্থানীয়করণ করা ভেরিয়েন্ট তৈরি করে। কোনো কী নেই, কোনো JSON ফাইল নেই, কোনো র‍্যাপার ফাংশন নেই - শুধু React কোড যা একাধিক ভাষায় কাজ করে। - -**ইনস্টলেশন:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**অথেন্টিকেশন:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**কনফিগারেশন (Vite):** - -```ts -// 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(), - ], -}); -``` - -**প্রোভাইডার সেটআপ:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**ভাষা সুইচার:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**উন্নয়ন:** `npm run dev` (ছদ্ম-অনুবাদক ব্যবহৃত হয়, কোনো API কল নেই) - -**প্রোডাকশন:** `usePseudotranslator: false` সেট করুন, তারপর `next build` - -`.lingo/` ডিরেক্টরিটি ভার্সন কন্ট্রোলে কমিট করুন। - -**মূল বৈশিষ্ট্য:** - -- শূন্য রানটাইম পারফরম্যান্স খরচ -- কোনো অনুবাদ কী বা JSON ফাইল নেই -- কোনো `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) - -অতিরিক্ত ফ্রেমওয়ার্ক সাপোর্ট পরিকল্পিত। - -[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/compiler) +[ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/docs/react/compiler) --- ## অবদান -অবদান স্বাগত। অনুগ্রহ করে এই নির্দেশিকাগুলি অনুসরণ করুন: +অবদান স্বাগত। অনুগ্রহ করে এই নির্দেশিকা অনুসরণ করুন: -১. **ইস্যু:** [বাগ রিপোর্ট করুন বা ফিচার অনুরোধ করুন](https://github.com/lingodotdev/lingo.dev/issues) -২. **পুল রিকোয়েস্ট:** [পরিবর্তন পাঠান](https://github.com/lingodotdev/lingo.dev/pulls) - -- প্রতিটি PR-এ একটি changeset প্রয়োজন: `pnpm new` (অথবা নন-রিলিজ পরিবর্তনের জন্য `pnpm new:empty`) -- পাঠানোর আগে টেস্ট পাস হয়েছে কি না নিশ্চিত করুন - ৩. **উন্নয়ন:** এটি একটি pnpm + turborepo মনোরিপো -- ডিপেন্ডেন্সি ইনস্টল করুন: `pnpm install` -- টেস্ট চালান: `pnpm test` -- বিল্ড: `pnpm build` +1. **ইস্যু:** [বাগ রিপোর্ট করুন বা ফিচার অনুরোধ করুন](https://github.com/lingodotdev/lingo.dev/issues) +2. **পুল রিকোয়েস্ট:** [পরিবর্তন সাবমিট করুন](https://github.com/lingodotdev/lingo.dev/pulls) + - প্রতিটি PR এর জন্য একটি চেঞ্জসেট প্রয়োজন: `pnpm new` (অথবা নন-রিলিজ পরিবর্তনের জন্য `pnpm new:empty`) + - সাবমিট করার আগে টেস্ট পাস করা নিশ্চিত করুন +3. **ডেভেলপমেন্ট:** এটি একটি pnpm + turborepo মনোরেপো + - ডিপেন্ডেন্সি ইনস্টল করুন: `pnpm install` + - টেস্ট চালান: `pnpm test` + - বিল্ড করুন: `pnpm build` **সাপোর্ট:** [Discord কমিউনিটি](https://lingo.dev/go/discord) ## স্টার হিস্ট্রি -আপনি যদি Lingo.dev উপযোগী মনে করেন, আমাদের একটি স্টার দিন এবং ১০,০০০ স্টারে পৌঁছাতে সাহায্য করুন! +Lingo.dev যদি আপনার কাজে আসে, আমাদের একটি স্টার দিন এবং ১০,০০০ স্টার পৌঁছাতে সাহায্য করুন! [ -![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![স্টার হিস্ট্রি চার্ট](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## স্থানীয়করণ করা ডকুমেন্টেশন +## স্থানীয়করণকৃত ডকুমেন্টেশন -**উপলব্ধ অনুবাদ:** +**উপলব্ধ অনুবাদসমূহ:** [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**নতুন ভাষা যোগ করা:** - -১. [`i18n.json`](./i18n.json)-এ [BCP-47 ফরম্যাট](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ব্যবহার করে লোকেল কোড যোগ করুন -২. একটি পুল রিকোয়েস্ট পাঠান +**নতুন ভাষা যুক্ত করা:** -**BCP-47 লোকেল ফরম্যাট:** `language[-Script][-REGION]` +1. [BCP-47 ফরম্যাট](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ব্যবহার করে [`i18n.json`](./i18n.json)-এ লোকেল কোড যুক্ত করুন +2. একটি পুল রিকোয়েস্ট জমা দিন diff --git a/readme/de.md b/readme/de.md index f3af0bc49..be708ce90 100644 --- a/readme/de.md +++ b/readme/de.md @@ -3,23 +3,29 @@ Lingo.dev

- Lingo.dev - Open-Source-i18n-Toolkit für LLM-gestützte Lokalisierung + Open-Source-Tools für Lokalisierungs-Engineering. Verbinden Sie sich mit der + Lingo.dev Lokalisierungs-Engineering-Plattform für konsistente, qualitativ + hochwertige Übersetzungen.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + + Lingo Compiler für React (Frühe Alpha-Version) +

@@ -71,167 +77,43 @@ ## Schnellstart -| Tool | Anwendungsfall | Schnellbefehl | -| ---------------------------------- | --------------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | KI-gestützte i18n-Einrichtung für React-Apps | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Übersetzung von JSON-, YAML-, Markdown-, CSV-, PO-Dateien | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Automatisierte Übersetzungs-Pipeline in GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Laufzeit-Übersetzung für dynamische Inhalte | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | Build-Time-React-Lokalisierung ohne i18n-Wrapper | `withLingo()`-Plugin | - ---- - -### Lingo.dev MCP - -Die Einrichtung von i18n in React-Apps ist notorisch fehleranfällig – selbst für erfahrene Entwickler. KI-Coding-Assistenten verschlimmern die Situation: Sie halluzinieren nicht existierende APIs, vergessen Middleware-Konfigurationen, brechen das Routing oder implementieren eine halbe Lösung, bevor sie den Faden verlieren. Das Problem ist, dass die i18n-Einrichtung eine präzise Abfolge koordinierter Änderungen über mehrere Dateien hinweg erfordert (Routing, Middleware, Komponenten, Konfiguration), und LLMs haben Schwierigkeiten, diesen Kontext aufrechtzuerhalten. +| Tool | Funktionsweise | Schnellbefehl | +| -------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | KI-gestützte i18n-Einrichtung für React-Apps | Prompt: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | Lokalisierung von JSON-, YAML-, Markdown-, CSV-, PO-Dateien | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | Kontinuierliche Lokalisierung in GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler für React**](#lingodev-compiler) | Build-Time-Lokalisierung für React ohne i18n-Wrapper | `withLingo()` Plugin | -Lingo.dev MCP löst dies, indem es KI-Assistenten strukturierten Zugriff auf framework-spezifisches i18n-Wissen gibt. Anstatt zu raten, folgt Ihr Assistent verifizierten Implementierungsmustern für Next.js, React Router und TanStack Start. +### Lokalisierungs-Engines -**Unterstützte IDEs:** +Diese Tools verbinden sich mit [Lokalisierungs-Engines](https://lingo.dev) – zustandsbehafteten Übersetzungs-APIs, die Sie auf der Lingo.dev Lokalisierungs-Engineering-Plattform erstellen. Jede Engine speichert Glossare, Markenstimme und lokale Anweisungen über alle Anfragen hinweg und [reduziert Terminologiefehler um 16,6–44,6 %](https://lingo.dev/research/retrieval-augmented-localization). Oder [nutzen Sie Ihr eigenes LLM](#lingodev-cli). -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) - -**Unterstützte Frameworks:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Verwendung:** - -Nach der Konfiguration des MCP-Servers in Ihrer IDE ([siehe Schnellstart-Anleitungen](https://lingo.dev/en/mcp)) fordern Sie Ihren Assistenten auf: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -Der Assistent wird: +--- -1. Locale-basiertes Routing konfigurieren (z. B. `/en`, `/es`, `/pt-BR`) -2. Sprachwechsel-Komponenten einrichten -3. Automatische Locale-Erkennung implementieren -4. Notwendige Konfigurationsdateien generieren +### Lingo.dev MCP -**Hinweis:** KI-gestützte Code-Generierung ist nicht-deterministisch. Überprüfen Sie generierten Code vor dem Committen. +Die Einrichtung von i18n in React-Apps ist fehleranfällig – selbst KI-Coding-Assistenten halluzinieren nicht existierende APIs und brechen das Routing. Lingo.dev MCP bietet KI-Assistenten strukturierten Zugriff auf Framework-spezifisches i18n-Wissen für Next.js, React Router und TanStack Start. Funktioniert mit Claude Code, Cursor, GitHub Copilot Agents und Codex. -[Dokumentation lesen →](https://lingo.dev/en/mcp) +[Zur Dokumentation →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -Übersetzungen synchron zu halten ist mühsam. Sie fügen einen neuen String hinzu, vergessen ihn zu übersetzen und liefern fehlerhafte UI an internationale Nutzer aus. Oder Sie senden JSON-Dateien an Übersetzer, warten tagelang und führen deren Arbeit dann manuell zusammen. Die Skalierung auf über 10 Sprachen bedeutet die Verwaltung hunderter Dateien, die ständig auseinanderdriften. - -Lingo.dev CLI automatisiert dies. Richten Sie es auf Ihre Übersetzungsdateien aus, führen Sie einen Befehl aus, und jede Locale wird aktualisiert. Eine Lockfile verfolgt, was bereits übersetzt wurde, sodass Sie nur für neue oder geänderte Inhalte zahlen. Unterstützt JSON, YAML, CSV, PO-Dateien und Markdown. - -**Einrichtung:** +Lokalisieren Sie JSON-, YAML-, Markdown-, CSV- und PO-Dateien mit einem einzigen Befehl. Eine Lockfile verfolgt bereits lokalisierte Inhalte – nur neue oder geänderte Inhalte werden verarbeitet. Standardmäßig wird Ihre Lokalisierungs-Engine auf Lingo.dev verwendet, oder Sie nutzen Ihr eigenes LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Funktionsweise:** - -1. Extrahiert übersetzbare Inhalte aus konfigurierten Dateien -2. Sendet Inhalte an LLM-Anbieter zur Übersetzung -3. Schreibt übersetzte Inhalte zurück ins Dateisystem -4. Erstellt `i18n.lock`-Datei zur Nachverfolgung abgeschlossener Übersetzungen (vermeidet redundante Verarbeitung) - -**Konfiguration:** - -Der Befehl `init` generiert eine `i18n.json`-Datei. Konfigurieren Sie Locales und Buckets: - -```json -{ - "$schema": "https://lingo.dev/schema/i18n.json", - "version": "1.10", - "locale": { - "source": "en", - "targets": ["es", "fr", "de"] - }, - "buckets": { - "json": { - "include": ["locales/[locale].json"] - } - } -} -``` - -Das Feld `provider` ist optional (Standard ist Lingo.dev Engine). Für benutzerdefinierte LLM-Anbieter: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Unterstützte LLM-Anbieter:** - -- Lingo.dev Engine (empfohlen) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Dokumentation lesen →](https://lingo.dev/en/cli) +[Dokumentation lesen →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Übersetzungen sind das Feature, das immer "fast fertig" ist. Entwickler mergen Code, ohne die Locales zu aktualisieren. QA entdeckt fehlende Übersetzungen im Staging – oder schlimmer noch, Nutzer entdecken sie in der Produktion. Die Grundursache: Übersetzung ist ein manueller Schritt, der unter Termindruck leicht übersprungen wird. - -Lingo.dev CI/CD macht Übersetzungen automatisch. Jeder Push löst die Übersetzung aus. Fehlende Strings werden ausgefüllt, bevor Code die Produktion erreicht. Keine Disziplin erforderlich – die Pipeline übernimmt das. - -**Unterstützte Plattformen:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions-Einrichtung:** - -Erstellen Sie `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Einrichtungsanforderungen:** - -1. Fügen Sie `LINGODOTDEV_API_KEY` zu den Repository-Secrets hinzu (Einstellungen > Secrets and variables > Actions) -2. Für PR-Workflows: Aktivieren Sie „Allow GitHub Actions to create and approve pull requests" unter Einstellungen > Actions > General - -**Workflow-Optionen:** - -Übersetzungen direkt committen: +Kontinuierliche Lokalisierung in Ihrer Pipeline. Jeder Push löst die Lokalisierung aus – fehlende Strings werden ausgefüllt, bevor der Code in die Produktion gelangt. Unterstützt GitHub Actions, GitLab CI/CD und Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,244 +121,38 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Pull Requests mit Übersetzungen erstellen: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Verfügbare Eingaben:** - -| Eingabe | Standard | Beschreibung | -| -------------------- | ---------------------------------------------- | -------------------------------------- | -| `api-key` | (erforderlich) | Lingo.dev API-Schlüssel | -| `pull-request` | `false` | PR erstellen statt direkt zu committen | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Benutzerdefinierte Commit-Nachricht | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Benutzerdefinierter PR-Titel | -| `working-directory` | `"."` | Verzeichnis für Ausführung | -| `parallel` | `false` | Parallele Verarbeitung aktivieren | - -[Dokumentation lesen →](https://lingo.dev/en/ci/github) +[Dokumentation lesen →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK - -Statische Übersetzungsdateien funktionieren für UI-Labels, aber was ist mit nutzergenerierten Inhalten? Chat-Nachrichten, Produktbeschreibungen, Support-Tickets – Inhalte, die zur Build-Zeit nicht existieren, können nicht vorübersetzt werden. Sie müssen unübersetzte Texte anzeigen oder eine eigene Übersetzungs-Pipeline aufbauen. - -Das Lingo.dev SDK übersetzt Inhalte zur Laufzeit. Übergeben Sie beliebigen Text, Objekte oder HTML und erhalten Sie eine lokalisierte Version zurück. Funktioniert für Echtzeit-Chat, dynamische Benachrichtigungen oder beliebige Inhalte, die nach dem Deployment eintreffen. Verfügbar für JavaScript, PHP, Python und Ruby. - -**Installation:** - -```bash -npm install lingo.dev -``` - -**Verwendung:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**Verfügbare SDKs:** +### Lingo.dev API -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) – Web-Apps, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) – PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) – Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) – Rails +Rufen Sie Ihre Lokalisierungs-Engine direkt aus dem Backend-Code auf. Synchrone und asynchrone Lokalisierung mit Webhook-Zustellung, Fehler-Isolierung pro Locale und Echtzeit-Fortschritt via WebSocket. -[Dokumentation lesen →](https://lingo.dev/en/sdk) +[Dokumentation lesen →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler - -Traditionelle i18n ist invasiv. Sie umschließen jede Zeichenkette mit `t()`-Funktionen, erfinden Übersetzungsschlüssel (`home.hero.title.v2`), pflegen parallele JSON-Dateien und beobachten, wie Ihre Komponenten mit Lokalisierungs-Boilerplate aufgebläht werden. Es ist so mühsam, dass Teams die Internationalisierung hinauszögern, bis sie zu einem massiven Refactoring wird. - -Lingo.dev Compiler eliminiert die Zeremonie. Schreiben Sie React-Komponenten mit einfachem englischem Text. Der Compiler erkennt übersetzbare Zeichenketten zur Build-Zeit und generiert automatisch lokalisierte Varianten. Keine Schlüssel, keine JSON-Dateien, keine Wrapper-Funktionen – nur React-Code, der zufällig in mehreren Sprachen funktioniert. - -**Installation:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Authentifizierung:** - -```bash -# 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 -``` - -**Konfiguration (Next.js):** +### Lingo Compiler für React (Frühe Alpha-Version) -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; +Build-Time React-Lokalisierung ohne i18n-Wrapper. Schreiben Sie Komponenten mit reinem englischem Text – der Compiler erkennt übersetzbare Strings und generiert lokalisierte Varianten zur Build-Zeit. Keine Translation-Keys, keine JSON-Dateien, keine `t()`-Funktionen. Unterstützt Next.js (App Router) und Vite + React. -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Konfiguration (Vite):** - -```ts -// 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-Setup:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Sprachwechsler:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Entwicklung:** `npm run dev` (verwendet Pseudoübersetzer, keine API-Aufrufe) - -**Produktion:** Setzen Sie `usePseudotranslator: false`, dann `next build` - -Committen Sie das `.lingo/`-Verzeichnis zur Versionskontrolle. - -**Hauptmerkmale:** - -- Keine Laufzeit-Performance-Kosten -- Keine Übersetzungsschlüssel oder JSON-Dateien -- Keine `t()`-Funktionen oder ``-Wrapper-Komponenten -- Automatische Erkennung von übersetzbarem Text in JSX -- TypeScript-Unterstützung -- ICU MessageFormat für Plurale -- Manuelle Überschreibungen via `data-lingo-override`-Attribut -- Integriertes Übersetzungseditor-Widget - -**Build-Modi:** - -- `pseudotranslator`: Entwicklungsmodus mit Platzhalterübersetzungen (keine API-Kosten) -- `real`: Generierung tatsächlicher Übersetzungen unter Verwendung von LLMs -- `cache-only`: Produktionsmodus mit vorgenerierten Übersetzungen aus CI (keine API-Aufrufe) - -**Unterstützte Frameworks:** - -- Next.js (App Router mit React Server Components) -- Vite + React (SPA und SSR) - -Unterstützung weiterer Frameworks geplant. - -[Dokumentation lesen →](https://lingo.dev/en/compiler) +[Dokumentation lesen →](https://lingo.dev/en/docs/react/compiler) --- ## Mitwirken -Beiträge sind willkommen. Bitte befolgen Sie diese Richtlinien: +Beiträge sind willkommen. Bitte beachten Sie diese Richtlinien: -1. **Issues:** [Fehler melden oder Features anfordern](https://github.com/lingodotdev/lingo.dev/issues) +1. **Issues:** [Fehler melden oder Features anfragen](https://github.com/lingodotdev/lingo.dev/issues) 2. **Pull Requests:** [Änderungen einreichen](https://github.com/lingodotdev/lingo.dev/pulls) - - Jeder PR erfordert ein Changeset: `pnpm new` (oder `pnpm new:empty` für nicht-Release-Änderungen) - - Stellen Sie sicher, dass die Tests vor dem Einreichen bestehen + - Jeder PR benötigt ein Changeset: `pnpm new` (oder `pnpm new:empty` für Änderungen ohne Release) + - Stellen Sie sicher, dass Tests erfolgreich durchlaufen, bevor Sie einreichen 3. **Entwicklung:** Dies ist ein pnpm + turborepo Monorepo - Abhängigkeiten installieren: `pnpm install` - Tests ausführen: `pnpm test` - - Build: `pnpm build` + - Build erstellen: `pnpm build` **Support:** [Discord-Community](https://lingo.dev/go/discord) @@ -496,14 +172,7 @@ Wenn Sie Lingo.dev nützlich finden, geben Sie uns einen Stern und helfen Sie un [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**Neue Sprache hinzufügen:** - -1. Fügen Sie den Locale-Code zu [`i18n.json`](./i18n.json) im [BCP-47-Format](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) hinzu -2. Senden Sie eine Pull Request - -**BCP-47-Locale-Format:** `language[-Script][-REGION]` +**Eine neue Sprache hinzufügen:** -- `language`: ISO 639-1/2/3 (Kleinbuchstaben): `en`, `zh`, `bho` -- `Script`: ISO 15924 (Titel-Schreibweise): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (Großbuchstaben): `US`, `CN`, `IN` -- Beispiele: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. Fügen Sie den Sprachcode zu [`i18n.json`](./i18n.json) im [BCP-47-Format](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) hinzu +2. Reichen Sie einen Pull Request ein diff --git a/readme/es.md b/readme/es.md index 1b44f3547..3d63cb165 100644 --- a/readme/es.md +++ b/readme/es.md @@ -3,24 +3,29 @@ Lingo.dev

- Lingo.dev - Kit de herramientas i18n de código abierto para localización - impulsada por LLM + Herramientas de ingeniería de localización de código abierto. Conéctese a la + plataforma de ingeniería de localización Lingo.dev para obtener traducciones + consistentes y de calidad.


- MCPCLI • - CI/CDSDK • - Compilador + API de Lingo • + Lingo React MCP • + CLI de Lingo • + Acción de GitHub de Lingo • + + Compilador de Lingo para React (Alfa temprana) +

@@ -72,51 +77,22 @@ ## Inicio rápido -| Herramienta | Caso de uso | Comando rápido | -| ---------------------------------- | ------------------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | Configuración i18n asistida por IA para apps React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Traducir archivos JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Pipeline de traducción automatizado en GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Traducción en tiempo de ejecución para contenido dinámico | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | Localización React en tiempo de compilación sin wrappers i18n | Plugin `withLingo()` | - ---- - -### Lingo.dev MCP - -Configurar i18n en aplicaciones React es notoriamente propenso a errores, incluso para desarrolladores experimentados. Los asistentes de codificación con IA lo empeoran: alucinan APIs inexistentes, olvidan configuraciones de middleware, rompen el enrutamiento o implementan media solución antes de perderse. El problema es que la configuración de i18n requiere una secuencia precisa de cambios coordinados en múltiples archivos (enrutamiento, middleware, componentes, configuración), y los LLM tienen dificultades para mantener ese contexto. +| Herramienta | Qué hace | Comando rápido | +| -------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Configuración de i18n asistida por IA para apps React | Prompt: `Set up i18n` | +| [**CLI de Lingo**](#lingodev-cli) | Localiza archivos JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**Acción de GitHub de Lingo**](#lingodev-cicd) | Localización continua en GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Compilador de Lingo para React**](#lingodev-compiler) | Localización de React en tiempo de compilación sin wrappers i18n | `withLingo()` plugin | -Lingo.dev MCP resuelve esto dando a los asistentes de IA acceso estructurado al conocimiento de i18n específico del framework. En lugar de adivinar, tu asistente sigue patrones de implementación verificados para Next.js, React Router y TanStack Start. +### Motores de localización -**IDEs compatibles:** +Estas herramientas se conectan a [motores de localización](https://lingo.dev) – APIs de traducción con estado que crea en la plataforma de ingeniería de localización Lingo.dev. Cada motor mantiene glosarios, voz de marca e instrucciones por idioma en cada solicitud, [reduciendo errores de terminología entre 16.6–44.6%](https://lingo.dev/research/retrieval-augmented-localization). O [use su propio LLM](#lingodev-cli). -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) - -**Frameworks compatibles:** - -- Next.js (App Router y Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Uso:** - -Después de configurar el servidor MCP en tu IDE ([ver guías de inicio rápido](https://lingo.dev/en/mcp)), solicita a tu asistente: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -El asistente: +--- -1. Configurará el enrutamiento basado en locale (ej., `/en`, `/es`, `/pt-BR`) -2. Configurará componentes de cambio de idioma -3. Implementará detección automática de locale -4. Generará los archivos de configuración necesarios +### Lingo.dev MCP -**Nota:** La generación de código asistida por IA es no determinista. Revisa el código generado antes de hacer commit. +Configurar i18n en aplicaciones React es propenso a errores – incluso los asistentes de código con IA alucinan APIs inexistentes y rompen el enrutamiento. Lingo.dev MCP proporciona a los asistentes de IA acceso estructurado a conocimiento de i18n específico por framework para Next.js, React Router y TanStack Start. Funciona con Claude Code, Cursor, GitHub Copilot Agents y Codex. [Leer la documentación →](https://lingo.dev/en/mcp) @@ -124,115 +100,20 @@ El asistente: ### CLI de Lingo.dev -Mantener las traducciones sincronizadas es tedioso. Añades una nueva cadena, olvidas traducirla, envías una interfaz rota a usuarios internacionales. O envías archivos JSON a traductores, esperas días y luego fusionas manualmente su trabajo. Escalar a más de 10 idiomas significa gestionar cientos de archivos que constantemente se dessincronizan. - -El CLI de Lingo.dev automatiza esto. Apúntalo a tus archivos de traducción, ejecuta un comando y cada locale se actualiza. Un archivo de bloqueo rastrea lo que ya está traducido, por lo que solo pagas por contenido nuevo o modificado. Compatible con archivos JSON, YAML, CSV, PO y markdown. - -**Configuración:** +Localice archivos JSON, YAML, markdown, CSV y PO en un solo comando. Un archivo de bloqueo rastrea lo que ya está localizado – solo se procesa el contenido nuevo o modificado. Usa por defecto su motor de localización en Lingo.dev, o traiga su propio LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Cómo funciona:** - -1. Extrae el contenido traducible de los archivos configurados -2. Envía el contenido al proveedor de LLM para su traducción -3. Escribe el contenido traducido de vuelta al sistema de archivos -4. Crea el archivo `i18n.lock` para rastrear las traducciones completadas (evita el procesamiento redundante) - -**Configuración:** - -El comando `init` genera un archivo `i18n.json`. Configura los idiomas y buckets: - -```json -{ - "$schema": "https://lingo.dev/schema/i18n.json", - "version": "1.10", - "locale": { - "source": "en", - "targets": ["es", "fr", "de"] - }, - "buckets": { - "json": { - "include": ["locales/[locale].json"] - } - } -} -``` - -El campo `provider` es opcional (por defecto usa Lingo.dev Engine). Para proveedores de LLM personalizados: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Proveedores de LLM compatibles:** - -- Lingo.dev Engine (recomendado) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Leer la documentación →](https://lingo.dev/en/cli) +[Lee la documentación →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Las traducciones son la funcionalidad que siempre está "casi lista". Los ingenieros fusionan código sin actualizar los idiomas. QA detecta traducciones faltantes en staging, o peor aún, los usuarios las detectan en producción. La causa raíz: la traducción es un paso manual que es fácil omitir bajo presión de plazos. - -Lingo.dev CI/CD hace que las traducciones sean automáticas. Cada push activa la traducción. Las cadenas faltantes se completan antes de que el código llegue a producción. No se requiere disciplina: el pipeline se encarga de ello. - -**Plataformas compatibles:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**Configuración de GitHub Actions:** - -Crea `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Requisitos de configuración:** - -1. Añade `LINGODOTDEV_API_KEY` a los secretos del repositorio (Settings > Secrets and variables > Actions) -2. Para flujos de trabajo de PR: habilita "Allow GitHub Actions to create and approve pull requests" en Settings > Actions > General - -**Opciones de flujo de trabajo:** - -Confirmar traducciones directamente: +Localización continua en tu pipeline. Cada push activa la localización: las cadenas faltantes se completan antes de que el código llegue a producción. Compatible con GitHub Actions, GitLab CI/CD y Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,258 +121,52 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Crea pull requests con traducciones: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Entradas disponibles:** - -| Entrada | Predeterminado | Descripción | -| -------------------- | ---------------------------------------------- | ------------------------------------------- | -| `api-key` | (requerido) | Clave API de Lingo.dev | -| `pull-request` | `false` | Crear PR en lugar de confirmar directamente | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Mensaje de confirmación personalizado | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Título de PR personalizado | -| `working-directory` | `"."` | Directorio en el que ejecutar | -| `parallel` | `false` | Habilitar procesamiento paralelo | - -[Consulta la documentación →](https://lingo.dev/en/ci/github) +[Lee la documentación →](https://lingo.dev/en/docs/integrations) --- -### SDK de Lingo.dev - -Los archivos de traducción estáticos funcionan para etiquetas de interfaz, pero ¿qué pasa con el contenido generado por usuarios? Mensajes de chat, descripciones de productos, tickets de soporte: el contenido que no existe en tiempo de compilación no puede ser pretraducido. Te quedas mostrando texto sin traducir o construyendo un pipeline de traducción personalizado. - -El SDK de Lingo.dev traduce contenido en tiempo de ejecución. Pasa cualquier texto, objeto o HTML y obtén una versión localizada. Funciona para chat en tiempo real, notificaciones dinámicas o cualquier contenido que llegue después del despliegue. Disponible para JavaScript, PHP, Python y Ruby. - -**Instalación:** - -```bash -npm install lingo.dev -``` - -**Uso:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**SDKs disponibles:** +### API de Lingo.dev -- [SDK de JavaScript](https://lingo.dev/en/sdk/javascript) - Aplicaciones web, Node.js -- [SDK de PHP](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [SDK de Python](https://lingo.dev/en/sdk/python) - Django, Flask -- [SDK de Ruby](https://lingo.dev/en/sdk/ruby) - Rails +Llama a tu motor de localización directamente desde el código backend. Localización síncrona y asíncrona con entrega por webhook, aislamiento de fallos por idioma y progreso en tiempo real vía WebSocket. -[Consulta la documentación →](https://lingo.dev/en/sdk) +[Lee la documentación →](https://lingo.dev/en/docs/api) --- -### Compilador de Lingo.dev - -La i18n tradicional es invasiva. Envuelves cada cadena en funciones `t()`, inventas claves de traducción (`home.hero.title.v2`), mantienes archivos JSON paralelos y tus componentes aumentan de tamaño debido al código repetitivo de localización. Es tan tedioso que los equipos suelen posponer la internacionalización hasta que se convierte en una refactorización masiva. - -Lingo.dev Compiler elimina la ceremonia. Escribe componentes de React con texto en inglés simple. El compilador detecta cadenas traducibles en tiempo de compilación y genera variantes localizadas automáticamente. Sin claves, sin archivos JSON, sin funciones envolventes, solo código React que funciona en múltiples idiomas. - -**Instalación:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Autenticación:** - -```bash -# 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 -``` - -**Configuración (Next.js):** +### Compilador Lingo para React (Alpha temprana) -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; +Localización de React en tiempo de compilación sin wrappers i18n. Escribe componentes con texto en inglés simple: el compilador detecta las cadenas traducibles y genera variantes localizadas en tiempo de compilación. Sin claves de traducción, sin archivos JSON, sin funciones `t()`. Compatible con Next.js (App Router) y Vite + React. -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Configuración (Vite):** - -```ts -// 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(), - ], -}); -``` - -**Configuración del proveedor:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Selector de idioma:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Desarrollo:** `npm run dev` (usa pseudotraductor, sin llamadas a la API) - -**Producción:** Establece `usePseudotranslator: false` y después `next build` - -Guarda el directorio `.lingo/` en el control de versiones. - -**Características principales:** - -- Cero costo de rendimiento en tiempo de ejecución -- Sin claves de traducción ni archivos JSON -- Sin funciones `t()` ni componentes envolventes `` -- Detección automática de texto traducible en JSX -- Soporte para TypeScript -- ICU MessageFormat para plurales -- Anulaciones manuales mediante el atributo `data-lingo-override` -- Editor de traducción integrado - -**Modos de compilación:** - -- `pseudotranslator`: Modo desarrollo con traducciones de marcador de posición (sin costes de API) -- `real`: Genera traducciones reales usando LLMs -- `cache-only`: Modo producción usando traducciones pregeneradas desde CI (sin llamadas a la API) - -**Frameworks compatibles:** - -- Next.js (App Router con React Server Components) -- Vite + React (SPA y SSR) - -Soporte adicional de frameworks planificado. - -[Leer la documentación →](https://lingo.dev/en/compiler) +[Lee la documentación →](https://lingo.dev/en/docs/react/compiler) --- ## Contribuir -Las contribuciones son bienvenidas. Por favor, sigue estas directrices: +Las contribuciones son bienvenidas. Por favor, sigue estas pautas: -1. **Incidencias:** [Reporta errores o solicita funcionalidades](https://github.com/lingodotdev/lingo.dev/issues) +1. **Issues:** [Reporta errores o solicita funcionalidades](https://github.com/lingodotdev/lingo.dev/issues) 2. **Pull Requests:** [Envía cambios](https://github.com/lingodotdev/lingo.dev/pulls) - - Cada PR requiere un changeset: `pnpm new` (o `pnpm new:empty` para cambios que no requieren release) + - Cada PR requiere un changeset: `pnpm new` (o `pnpm new:empty` para cambios sin release) - Asegúrate de que las pruebas pasen antes de enviar 3. **Desarrollo:** Este es un monorepo pnpm + turborepo - Instala dependencias: `pnpm install` - - Ejecuta tests: `pnpm test` + - Ejecuta pruebas: `pnpm test` - Compila: `pnpm build` -**Soporte:** [Comunidad de Discord](https://lingo.dev/go/discord) +**Soporte:** [Comunidad Discord](https://lingo.dev/go/discord) -## Historial de estrellas +## Historial de Estrellas -Si encuentras útil Lingo.dev, danos una estrella y ayúdanos a alcanzar las 10 000 estrellas. +Si encuentras útil Lingo.dev, danos una estrella y ayúdanos a alcanzar las 10,000 estrellas! [ -![Gráfico del historial de estrellas](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Gráfico del Historial de Estrellas](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## Documentación localizada +## Documentación Localizada **Traducciones disponibles:** @@ -499,12 +174,5 @@ Si encuentras útil Lingo.dev, danos una estrella y ayúdanos a alcanzar las 10 **Añadir un nuevo idioma:** -1. Añade el código de locale a [`i18n.json`](./i18n.json) usando el [formato BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) -2. Envía un pull request - -**Formato de locale BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (minúsculas): `en`, `zh`, `bho` -- `Script`: ISO 15924 (mayúscula inicial): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alfa-2 (mayúsculas): `US`, `CN`, `IN` -- Ejemplos: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. Añade el código de idioma a [`i18n.json`](./i18n.json) usando el [formato BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +2. Envía una solicitud de incorporación de cambios diff --git a/readme/fa.md b/readme/fa.md index 50cf29262..ab09c4361 100644 --- a/readme/fa.md +++ b/readme/fa.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - جعبه‌ابزار i18n متن‌باز برای بومی‌سازی مبتنی بر LLM + ابزارهای متن‌باز مهندسی بومی‌سازی. به پلتفرم مهندسی بومی‌سازی Lingo.dev متصل + شوید تا ترجمه‌های باکیفیت و یکپارچه داشته باشید.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + کامپایلر Lingo برای React (آلفای اولیه)

@@ -71,167 +74,43 @@ ## شروع سریع -| ابزار | مورد استفاده | دستور سریع | -| ---------------------------------- | --------------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | راه‌اندازی i18n با کمک هوش مصنوعی برای اپلیکیشن‌های React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | ترجمه فایل‌های JSON، YAML، markdown، CSV، PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | پایپلاین ترجمه خودکار در GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ترجمه زمان اجرا برای محتوای پویا | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | بومی‌سازی React در زمان build بدون wrapper های i18n | افزونه `withLingo()` | +| ابزار | کاربرد | دستور سریع | +| --------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | راه‌اندازی i18n با کمک هوش مصنوعی برای اپلیکیشن‌های React | پرامپت: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | بومی‌سازی فایل‌های JSON، YAML، markdown، CSV، PO | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | بومی‌سازی مداوم در GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**کامپایلر Lingo برای React**](#lingodev-compiler) | بومی‌سازی React در زمان بیلد بدون نیاز به wrapper های i18n | افزونه `withLingo()` | ---- - -### Lingo.dev MCP - -راه‌اندازی i18n در برنامه‌های React به‌طور شناخته‌شده‌ای مستعد خطا است - حتی برای توسعه‌دهندگان با تجربه. دستیاران کدنویسی AI وضعیت را بدتر می‌کنند: آن‌ها APIهای غیرموجود را توهم می‌بینند، پیکربندی‌های middleware را فراموش می‌کنند، مسیریابی را خراب می‌کنند، یا نیمی از راه‌حل را پیاده‌سازی می‌کنند و سپس گم می‌شوند. مشکل این است که راه‌اندازی i18n نیازمند یک توالی دقیق از تغییرات هماهنگ در چندین فایل (مسیریابی، middleware، کامپوننت‌ها، پیکربندی) است و LLMها در حفظ آن context دچار مشکل می‌شوند. - -Lingo.dev MCP این مشکل را با دادن دسترسی ساختاریافته به دانش i18n خاص framework به دستیاران AI حل می‌کند. به‌جای حدس زدن، دستیار شما الگوهای پیاده‌سازی تأیید شده برای Next.js، React Router و TanStack Start را دنبال می‌کند. - -**IDEهای پشتیبانی‌شده:** +### موتورهای بومی‌سازی -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +این ابزارها به [موتورهای بومی‌سازی](https://lingo.dev) متصل می‌شوند – APIهای ترجمه‌ای با حافظه که روی پلتفرم مهندسی بومی‌سازی Lingo.dev ایجاد می‌کنید. هر موتور واژه‌نامه‌ها، لحن برند، و دستورالعمل‌های هر زبان را در تمام درخواست‌ها حفظ می‌کند و [خطاهای اصطلاح‌شناسی را ۱۶.۶ تا ۴۴.۶٪ کاهش می‌دهد](https://lingo.dev/research/retrieval-augmented-localization). یا [از LLM خودتان استفاده کنید](#lingodev-cli). -**frameworkهای پشتیبانی‌شده:** - -- Next.js (App Router و Pages Router نسخه‌های 13-16) -- TanStack Start (نسخه 1) -- React Router (نسخه 7) - -**استفاده:** - -پس از پیکربندی سرور MCP در IDE خود ([راهنماهای شروع سریع را ببینید](https://lingo.dev/en/mcp))، به دستیار خود دستور دهید: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -دستیار این کارها را انجام می‌دهد: +--- -1. پیکربندی مسیریابی مبتنی بر locale (مثلاً `/en`، `/es`، `/pt-BR`) -2. راه‌اندازی کامپوننت‌های تعویض زبان -3. پیاده‌سازی شناسایی خودکار locale -4. تولید فایل‌های پیکربندی لازم +### Lingo.dev MCP -**توجه:** تولید کد به کمک AI غیرقطعی است. کد تولید شده را قبل از commit بررسی کنید. +راه‌اندازی i18n در اپلیکیشن‌های React مستعد خطاست – حتی دستیارهای کدنویسی هوش مصنوعی APIهای وجود نداشته را توهم می‌بینند و مسیریابی را خراب می‌کنند. Lingo.dev MCP به دستیارهای هوش مصنوعی دسترسی ساختاریافته به دانش i18n مخصوص فریم‌ورک برای Next.js، React Router و TanStack Start می‌دهد. با Claude Code، Cursor، GitHub Copilot Agents و Codex کار می‌کند. -[مطالعه‌ی مستندات ←](https://lingo.dev/en/mcp) +[مستندات را بخوانید ←](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -همگام نگه‌داشتن ترجمه‌ها خسته‌کننده است. شما یک رشته‌ی جدید اضافه می‌کنید، فراموش می‌کنید آن را ترجمه کنید، UI خراب را برای کاربران بین‌المللی ارسال می‌کنید. یا فایل‌های JSON را برای مترجمان ارسال می‌کنید، چند روز منتظر می‌مانید، سپس کار آن‌ها را به‌صورت دستی ادغام می‌کنید. مقیاس‌بندی به بیش از 10 زبان به معنای مدیریت صدها فایل است که دائماً از همگام‌سازی خارج می‌شوند. - -Lingo.dev CLI این فرآیند را خودکار می‌کند. آن را به فایل‌های ترجمه‌ی خود اشاره دهید، یک دستور اجرا کنید و هر locale به‌روزرسانی می‌شود. یک lockfile پیگیری می‌کند که چه چیزی قبلاً ترجمه شده است، بنابراین فقط برای محتوای جدید یا تغییر یافته هزینه می‌پردازید. از JSON، YAML، CSV، فایل‌های PO و markdown پشتیبانی می‌کند. - -**راه‌اندازی:** +فایل‌های JSON، YAML، markdown، CSV و PO را با یک دستور بومی‌سازی کنید. یک lockfile پیگیری می‌کند چه چیزی قبلاً بومی‌سازی شده – فقط محتوای جدید یا تغییریافته پردازش می‌شود. به‌طور پیش‌فرض از موتور بومی‌سازی شما روی Lingo.dev استفاده می‌کند، یا LLM خودتان را بیاورید (OpenAI، Anthropic، Google، Mistral، OpenRouter، Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**نحوه‌ی عملکرد:** - -1. محتوای قابل ترجمه را از فایل‌های پیکربندی‌شده استخراج می‌کند -2. محتوا را برای ترجمه به ارائه‌دهنده LLM ارسال می‌کند -3. محتوای ترجمه‌شده را به سیستم فایل بازمی‌نویسد -4. فایل `i18n.lock` را برای ردیابی ترجمه‌های کامل‌شده ایجاد می‌کند (از پردازش تکراری جلوگیری می‌شود) - -**پیکربندی:** - -دستور `init` یک فایل `i18n.json` تولید می‌کند. localeها و bucketها را پیکربندی کنید: - -```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 سفارشی: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**ارائه‌دهندگان LLM پشتیبانی‌شده:** - -- Lingo.dev Engine (توصیه‌شده) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[مطالعه‌ی مستندات ←](https://lingo.dev/en/cli) +[مستندات را بخوانید ←](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -ترجمه‌ها ویژگی‌ای هستند که همیشه «تقریباً تمام» شده‌اند. مهندسان کد را بدون به‌روزرسانی locale‌ها merge می‌کنند. QA ترجمه‌های گم‌شده را در staging می‌یابد - یا بدتر، کاربران آن‌ها را در production می‌یابند. علت اصلی: ترجمه یک مرحله‌ی دستی است که تحت فشار deadline به‌راحتی قابل نادیده‌گرفتن است. - -Lingo.dev CI/CD ترجمه‌ها را خودکار می‌کند. هر push ترجمه را فعال می‌کند. رشته‌های گم‌شده قبل از رسیدن کد به production پر می‌شوند. نیازی به انضباط نیست - pipeline آن را مدیریت می‌کند. - -**پلتفرم‌های پشتیبانی‌شده:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**راه‌اندازی GitHub Actions:** - -فایل `.github/workflows/translate.yml` را ایجاد کنید: - -```yaml -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 }} -``` - -**الزامات راه‌اندازی:** - -1. مقدار `LINGODOTDEV_API_KEY` را به secrets مخزن اضافه کنید (Settings > Secrets and variables > Actions) -2. برای workflowهای PR: گزینه "Allow GitHub Actions to create and approve pull requests" را در Settings > Actions > General فعال کنید - -**گزینه‌های workflow:** - -ترجمه‌ها را مستقیماً commit کنید: +بومی‌سازی مداوم در خط لوله شما. هر push باعث فعال‌سازی بومی‌سازی می‌شود – رشته‌های گم‌شده قبل از رسیدن کد به محیط تولید تکمیل می‌شوند. از GitHub Actions، GitLab CI/CD و Bitbucket Pipelines پشتیبانی می‌کند. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,254 +118,48 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -ایجاد pull request با ترجمه‌ها: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**ورودی‌های موجود:** - -| ورودی | پیش‌فرض | توضیحات | -| -------------------- | ---------------------------------------------- | ----------------------------- | -| `api-key` | (الزامی) | کلید API سرویس Lingo.dev | -| `pull-request` | `false` | ایجاد PR به جای commit مستقیم | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | پیام commit سفارشی | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | عنوان PR سفارشی | -| `working-directory` | `"."` | مسیر اجرای دستور | -| `parallel` | `false` | فعال‌سازی پردازش موازی | - -[مطالعه مستندات ←](https://lingo.dev/en/ci/github) +[مستندات را بخوانید ←](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -فایل‌های ترجمه استاتیک برای برچسب‌های UI کار می‌کنند، اما محتوای تولید شده توسط کاربر چطور؟ پیام‌های چت، توضیحات محصول، تیکت‌های پشتیبانی - محتوایی که در زمان build وجود ندارد نمی‌تواند از پیش ترجمه شود. شما مجبورید متن ترجمه نشده را نمایش دهید یا یک pipeline ترجمه سفارشی بسازید. +موتور بومی‌سازی خود را مستقیماً از کد backend فراخوانی کنید. بومی‌سازی همزمان و ناهمزمان با تحویل webhook، جداسازی خطا برای هر locale و پیشرفت لحظه‌ای از طریق WebSocket. -SDK سرویس Lingo.dev محتوا را در زمان اجرا ترجمه می‌کند. هر متن، شیء یا HTML را ارسال کنید و نسخه محلی‌سازی شده را دریافت کنید. برای چت real-time، اعلان‌های پویا، یا هر محتوایی که پس از deployment می‌رسد کار می‌کند. برای JavaScript، PHP، Python و Ruby در دسترس است. - -**نصب:** - -```bash -npm install lingo.dev -``` - -**استفاده:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**SDK های موجود:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - اپلیکیشن‌های وب، Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP، Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django، Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[مطالعه مستندات ←](https://lingo.dev/en/sdk) +[مستندات را بخوانید ←](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### کامپایلر Lingo برای React (آلفای اولیه) -i18n سنتی مزاحم است. شما هر رشته را در توابع `t()` قرار می‌دهید، کلیدهای ترجمه (`home.hero.title.v2`) می‌سازید، فایل‌های JSON موازی نگهداری می‌کنید و مشاهده می‌کنید که کامپوننت‌های شما با boilerplate مربوط به بومی‌سازی حجیم می‌شود. این روند آنقدر زمان‌بر و طاقت‌فرسا است که تیم‌ها بین‌المللی‌سازی را تا زمان نیاز به یک بازسازی بزرگ به تعویق می‌اندازند. +بومی‌سازی React در زمان build بدون نیاز به wrapper های i18n. کامپوننت‌ها را با متن انگلیسی ساده بنویسید – کامپایلر رشته‌های قابل ترجمه را تشخیص داده و نسخه‌های بومی‌شده را در زمان build تولید می‌کند. بدون کلید ترجمه، بدون فایل JSON، بدون تابع `t()`. از Next.js (App Router) و Vite + React پشتیبانی می‌کند. -کامپایلر Lingo.dev تشریفات را حذف می‌کند. کامپوننت‌های React را با متن ساده انگلیسی بنویسید. کامپایلر رشته‌های قابل ترجمه را در زمان build شناسایی کرده و نسخه‌های محلی‌سازی شده را به صورت خودکار تولید می‌کند. بدون کلید، بدون فایل JSON، بدون تابع wrapper - فقط کد React که اتفاقاً به چندین زبان کار می‌کند. - -**نصب:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**احراز هویت:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**پیکربندی (Vite):** - -```ts -// 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:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**تعویض‌کننده‌ی زبان:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**توسعه:** `npm run dev` (استفاده از pseudotranslator، بدون فراخوانی API) - -**تولید:** متغیر `usePseudotranslator: false` را تنظیم کنید سپس `next build` - -دایرکتوری `.lingo/` را در کنترل نسخه ثبت کنید. - -**ویژگی‌های کلیدی:** - -- بدون هزینه عملکرد زمان اجرا -- بدون کلید ترجمه یا فایل JSON -- بدون توابع `t()` یا کامپوننت‌های wrapper `` -- شناسایی خودکار متن قابل ترجمه در JSX -- پشتیبانی از TypeScript -- ICU MessageFormat برای جمع‌ها -- بازنویسی دستی از طریق صفت `data-lingo-override` -- ویرایشگر داخلی ترجمه - -**حالت‌های build:** - -- `pseudotranslator`: حالت توسعه با ترجمه‌های placeholder (بدون هزینه API) -- `real`: تولید ترجمه واقعی با استفاده از LLM -- `cache-only`: حالت تولید با ترجمه‌های از پیش تولید شده از CI (بدون فراخوانی API) - -**فریم‌ورک‌های پشتیبانی شده:** - -- Next.js (App Router با React Server Components) -- Vite + React (SPA و SSR) - -پشتیبانی از فریم‌ورک‌های اضافی برنامه‌ریزی شده است. - -[مطالعه‌ی مستندات ←](https://lingo.dev/en/compiler) +[مستندات را بخوانید ←](https://lingo.dev/en/docs/react/compiler) --- ## مشارکت -مشارکت‌ها خوش‌آمد هستند. لطفاً این دستورالعمل‌ها را دنبال کنید: +مشارکت‌ها پذیرفته می‌شوند. لطفاً این دستورالعمل‌ها را دنبال کنید: -1. **ایرادها:** [گزارش باگ یا درخواست ویژگی](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Requestها:** [ارسال تغییرات](https://github.com/lingodotdev/lingo.dev/pulls) - - هر PR نیازمند changeset است: `pnpm new` (یا برای تغییرات غیرمنتشر، `pnpm new:empty`) - - قبل از ارسال مطمئن شوید که تست‌ها موفق هستند -3. **توسعه:** این مخزن مونو (monorepo) مبتنی بر pnpm و turborepo است +1. **مسائل:** [گزارش باگ یا درخواست ویژگی](https://github.com/lingodotdev/lingo.dev/issues) +2. **درخواست‌های Pull:** [ارسال تغییرات](https://github.com/lingodotdev/lingo.dev/pulls) + - هر PR نیاز به changeset دارد: `pnpm new` (یا `pnpm new:empty` برای تغییرات بدون انتشار) + - قبل از ارسال مطمئن شوید تست‌ها موفق هستند +3. **توسعه:** این یک monorepo مبتنی بر pnpm + turborepo است - نصب وابستگی‌ها: `pnpm install` - اجرای تست‌ها: `pnpm test` - - build: `pnpm build` + - Build: `pnpm build` **پشتیبانی:** [انجمن Discord](https://lingo.dev/go/discord) -## تاریخچه ستاره +## تاریخچه ستاره‌ها -اگر Lingo.dev را مفید می‌دانید، به ما ستاره بدهید و به ما کمک کنید به 10,000 ستاره برسیم! +اگر Lingo.dev را مفید می‌دانید، به ما ستاره دهید و به ما کمک کنید به 10,000 ستاره برسیم! [ -![نمودار تاریخچه ستاره](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![نمودار تاریخچه ستاره‌ها](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -498,12 +171,5 @@ export function LanguageSwitcher() { **افزودن زبان جدید:** -1. کد locale را به [`i18n.json`](./i18n.json) با استفاده از [فرمت BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) اضافه کنید -2. یک pull request ارسال کنید - -**فرمت locale BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (حروف کوچک): `en`، `zh`، `bho` -- `Script`: ISO 15924 (حروف بزرگ اول): `Hans`، `Hant`، `Latn` -- `REGION`: ISO 3166-1 alpha-2 (حروف بزرگ): `US`، `CN`، `IN` -- مثال‌ها: `en`، `pt-BR`، `zh-Hans`، `sr-Cyrl-RS` +1. کد زبان را به [`i18n.json`](./i18n.json) با استفاده از [فرمت BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) اضافه کنید +2. یک درخواست pull ارسال کنید diff --git a/readme/fr.md b/readme/fr.md index c85a190ba..f713a9893 100644 --- a/readme/fr.md +++ b/readme/fr.md @@ -3,24 +3,27 @@ Lingo.dev

- Lingo.dev - Boîte à outils i18n open-source pour la localisation assistée - par LLM + Outils d'ingénierie de localisation open source. Connectez-vous à la + plateforme d'ingénierie de localisation Lingo.dev pour des traductions + cohérentes et de qualité.


- MCPCLI • - CI/CDSDK • - Compilateur + API Lingo • + Lingo React MCP • + CLI Lingo • + Action GitHub Lingo • + Compilateur Lingo pour React (Alpha précoce)

@@ -72,51 +75,22 @@ ## Démarrage rapide -| Outil | Cas d'usage | Commande rapide | -| ------------------------------------- | ------------------------------------------------------ | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | Configuration i18n assistée par IA pour apps React | Prompt : `Set up i18n` | -| [**CLI**](#lingodev-cli) | Traduction de fichiers JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Pipeline de traduction automatisé dans GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Traduction à l'exécution pour contenu dynamique | `npm install lingo.dev` | -| [**Compilateur**](#lingodev-compiler) | Localisation React à la compilation sans wrappers i18n | Plugin `withLingo()` | +| Outil | Ce qu'il fait | Commande rapide | +| ------------------------------------------------------ | ----------------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Configuration i18n assistée par IA pour applications React | Prompt : `Set up i18n` | +| [**CLI Lingo**](#lingodev-cli) | Localise les fichiers JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**Action GitHub Lingo**](#lingodev-cicd) | Localisation continue dans GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Compilateur Lingo pour React**](#lingodev-compiler) | Localisation React au moment de la compilation sans wrappers i18n | Plugin `withLingo()` | ---- - -### Lingo.dev MCP - -La configuration de l'i18n dans les applications React est notoirement sujette aux erreurs, même pour les développeurs expérimentés. Les assistants de codage IA aggravent la situation : ils hallucinent des API inexistantes, oublient les configurations de middleware, cassent le routage ou implémentent une demi-solution avant de se perdre. Le problème est que la configuration i18n nécessite une séquence précise de modifications coordonnées sur plusieurs fichiers (routage, middleware, composants, configuration), et les LLM ont du mal à maintenir ce contexte. - -Lingo.dev MCP résout ce problème en donnant aux assistants IA un accès structuré aux connaissances i18n spécifiques aux frameworks. Au lieu de deviner, votre assistant suit des modèles d'implémentation vérifiés pour Next.js, React Router et TanStack Start. - -**IDE pris en charge :** +### Moteurs de localisation -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +Ces outils se connectent à des [moteurs de localisation](https://lingo.dev) – des API de traduction avec état que vous créez sur la plateforme d'ingénierie de localisation Lingo.dev. Chaque moteur conserve les glossaires, le ton de marque et les instructions par locale à travers chaque requête, [réduisant les erreurs terminologiques de 16,6 à 44,6 %](https://lingo.dev/research/retrieval-augmented-localization). Ou [utilisez votre propre LLM](#lingodev-cli). -**Frameworks pris en charge :** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Utilisation :** - -Après avoir configuré le serveur MCP dans votre IDE ([voir les guides de démarrage rapide](https://lingo.dev/en/mcp)), demandez à votre assistant : - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -L'assistant va : +--- -1. Configurer le routage basé sur les locales (par ex. `/en`, `/es`, `/pt-BR`) -2. Mettre en place des composants de changement de langue -3. Implémenter la détection automatique de la locale -4. Générer les fichiers de configuration nécessaires +### Lingo.dev MCP -**Remarque :** la génération de code assistée par IA est non déterministe. Vérifiez le code généré avant de le commiter. +Configurer l'i18n dans les applications React est source d'erreurs – même les assistants de codage IA hallucinent des API inexistantes et cassent le routage. Lingo.dev MCP donne aux assistants IA un accès structuré aux connaissances i18n spécifiques aux frameworks pour Next.js, React Router et TanStack Start. Fonctionne avec Claude Code, Cursor, GitHub Copilot Agents et Codex. [Lire la documentation →](https://lingo.dev/en/mcp) @@ -124,115 +98,20 @@ L'assistant va : ### CLI Lingo.dev -Maintenir les traductions synchronisées est fastidieux. Vous ajoutez une nouvelle chaîne, oubliez de la traduire, et livrez une interface cassée aux utilisateurs internationaux. Ou vous envoyez des fichiers JSON aux traducteurs, attendez des jours, puis fusionnez manuellement leur travail. Passer à 10+ langues signifie gérer des centaines de fichiers qui dérivent constamment. - -Le CLI Lingo.dev automatise cela. Pointez-le vers vos fichiers de traduction, exécutez une commande, et chaque locale se met à jour. Un fichier de verrouillage suit ce qui est déjà traduit, vous ne payez donc que pour le contenu nouveau ou modifié. Prend en charge les fichiers JSON, YAML, CSV, PO et markdown. - -**Configuration :** +Localisez les fichiers JSON, YAML, markdown, CSV et PO en une seule commande. Un fichier de verrouillage suit ce qui est déjà localisé – seul le contenu nouveau ou modifié est traité. Se connecte par défaut à votre moteur de localisation sur Lingo.dev, ou utilisez votre propre LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Fonctionnement :** - -1. Extrait le contenu traduisible des fichiers configurés -2. Envoie le contenu au fournisseur LLM pour traduction -3. Écrit le contenu traduit dans le système de fichiers -4. Crée un fichier `i18n.lock` pour suivre les traductions terminées (évite le traitement redondant) - -**Configuration :** - -La commande `init` génère un fichier `i18n.json`. Configurez les locales et les buckets : - -```json -{ - "$schema": "https://lingo.dev/schema/i18n.json", - "version": "1.10", - "locale": { - "source": "en", - "targets": ["es", "fr", "de"] - }, - "buckets": { - "json": { - "include": ["locales/[locale].json"] - } - } -} -``` - -Le champ `provider` est optionnel (par défaut : Lingo.dev Engine). Pour utiliser des fournisseurs LLM personnalisés : - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Fournisseurs LLM pris en charge :** - -- Lingo.dev Engine (recommandé) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Lire la documentation →](https://lingo.dev/en/cli) +[Lire la documentation →](https://lingo.dev/en/docs/cli) --- -### Lingo.dev CI/CD - -Les traductions sont la fonctionnalité qui est toujours "presque terminée". Les ingénieurs fusionnent le code sans mettre à jour les locales. L'assurance qualité détecte les traductions manquantes en staging - ou pire, les utilisateurs les détectent en production. La cause profonde : la traduction est une étape manuelle facile à ignorer sous la pression des délais. - -Lingo.dev CI/CD rend les traductions automatiques. Chaque push déclenche la traduction. Les chaînes manquantes sont complétées avant que le code n'atteigne la production. Aucune discipline requise - le pipeline s'en charge. - -**Plateformes prises en charge :** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines +### CI/CD Lingo.dev -**Configuration GitHub Actions :** - -Créez `.github/workflows/translate.yml` : - -```yaml -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 }} -``` - -**Prérequis de configuration :** - -1. Ajoutez `LINGODOTDEV_API_KEY` aux secrets du dépôt (Settings > Secrets and variables > Actions) -2. Pour les workflows PR : activez « Allow GitHub Actions to create and approve pull requests » dans Paramètres > Actions > Général - -**Options de workflow :** - -Commiter les traductions directement : +Localisation continue dans votre pipeline. Chaque push déclenche la localisation – les chaînes manquantes sont complétées avant que le code n'atteigne la production. Compatible avec GitHub Actions, GitLab CI/CD et Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,229 +119,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Créer des pull requests avec les traductions : - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Entrées disponibles :** - -| Entrée | Défaut | Description | -| -------------------- | ---------------------------------------------- | ------------------------------------- | -| `api-key` | (requis) | Clé API Lingo.dev | -| `pull-request` | `false` | Créer une PR au lieu de commit direct | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Message de commit personnalisé | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Titre de PR personnalisé | -| `working-directory` | `"."` | Répertoire d'exécution | -| `parallel` | `false` | Activer le traitement parallèle | - -[Lire la documentation →](https://lingo.dev/en/ci/github) +[Lire la documentation →](https://lingo.dev/en/docs/integrations) --- -### SDK Lingo.dev +### API Lingo.dev -Les fichiers de traduction statiques fonctionnent pour les libellés d'interface, mais qu'en est-il du contenu généré par les utilisateurs ? Messages de chat, descriptions de produits, tickets de support - le contenu qui n'existe pas au moment de la compilation ne peut pas être pré-traduit. Vous êtes obligé d'afficher du texte non traduit ou de créer un pipeline de traduction personnalisé. +Appelez votre moteur de localisation directement depuis votre code backend. Localisation synchrone et asynchrone avec livraison par webhook, isolation des échecs par locale et progression en temps réel via WebSocket. -Le SDK Lingo.dev traduit le contenu à l'exécution. Transmettez n'importe quel texte, objet ou HTML et obtenez une version localisée. Fonctionne pour le chat en temps réel, les notifications dynamiques ou tout contenu qui arrive après le déploiement. Disponible pour JavaScript, PHP, Python et Ruby. - -**Installation :** - -```bash -npm install lingo.dev -``` - -**Utilisation :** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**SDK disponibles :** - -- [SDK JavaScript](https://lingo.dev/en/sdk/javascript) - Applications web, Node.js -- [SDK PHP](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [SDK Python](https://lingo.dev/en/sdk/python) - Django, Flask -- [SDK Ruby](https://lingo.dev/en/sdk/ruby) - Rails - -[Lire la documentation →](https://lingo.dev/en/sdk) +[Lire la documentation →](https://lingo.dev/en/docs/api) --- -### Compilateur Lingo.dev +### Compilateur Lingo pour React (Alpha précoce) -L'i18n traditionnel est intrusif. Chaque chaîne est enveloppée dans des fonctions `t()`, vous inventez des clés de traduction (`home.hero.title.v2`), maintenez des fichiers JSON parallèles et vos composants gonflent à cause du boilerplate de localisation. C'est tellement fastidieux que les équipes repoussent l'internationalisation jusqu'à ce que cela devienne une refonte massive. +Localisation React au moment de la compilation sans wrappers i18n. Écrivez des composants avec du texte en anglais simple – le compilateur détecte les chaînes traduisibles et génère des variantes localisées au moment de la compilation. Pas de clés de traduction, pas de fichiers JSON, pas de fonctions `t()`. Compatible avec Next.js (App Router) et Vite + React. -Lingo.dev Compiler élimine les formalités. Écrivez des composants React avec du texte en anglais simple. Le compilateur détecte les chaînes traduisibles au moment de la compilation et génère automatiquement des variantes localisées. Pas de clés, pas de fichiers JSON, pas de fonctions wrapper - juste du code React qui fonctionne dans plusieurs langues. - -**Installation :** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Authentification :** - -```bash -# 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 -``` - -**Configuration (Next.js) :** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Configuration (Vite) :** - -```ts -// 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(), - ], -}); -``` - -**Configuration du provider :** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Sélecteur de langue :** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Développement :** `npm run dev` (utilise le pseudotraducteur, pas d'appels API) - -**Production :** définissez `usePseudotranslator: false`, puis `next build` - -Commitez le répertoire `.lingo/` dans le contrôle de version. - -**Fonctionnalités clés :** - -- Aucun coût de performance à l'exécution -- Pas de clés de traduction ni de fichiers JSON -- Pas de fonctions `t()` ni de composants wrapper `` -- Détection automatique du texte traduisible dans JSX -- Support TypeScript -- ICU MessageFormat pour le pluriel -- Surcharges manuelles via l'attribut `data-lingo-override` -- Éditeur de traduction intégré - -**Modes de compilation :** - -- `pseudotranslator` : Mode développement avec traductions fictives (aucun coût API) -- `real` : Générer les vraies traductions à l'aide de LLM -- `cache-only` : Mode production avec les traductions pré-générées depuis la CI (pas d'appels API) - -**Frameworks supportés :** - -- Next.js (App Router avec React Server Components) -- Vite + React (SPA et SSR) - -Support de frameworks supplémentaires prévu. - -[Lire la documentation →](https://lingo.dev/en/compiler) +[Lire la documentation →](https://lingo.dev/en/docs/react/compiler) --- @@ -470,14 +143,14 @@ Support de frameworks supplémentaires prévu. Les contributions sont les bienvenues. Veuillez suivre ces directives : -1. **Issues :** [Signaler des bugs ou demander des fonctionnalités](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Requests :** [Soumettre des modifications](https://github.com/lingodotdev/lingo.dev/pulls) - - Chaque PR nécessite un changeset : `pnpm new` (ou `pnpm new:empty` pour les changements sans release) +1. **Issues :** [Signalez des bugs ou demandez des fonctionnalités](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Requests :** [Soumettez des modifications](https://github.com/lingodotdev/lingo.dev/pulls) + - Chaque PR nécessite un changeset : `pnpm new` (ou `pnpm new:empty` pour les modifications sans version) - Assurez-vous que les tests passent avant de soumettre -3. **Développement :** Il s'agit d'un monorepo pnpm + turborepo - - Installer les dépendances : `pnpm install` - - Lancer les tests : `pnpm test` - - Build : `pnpm build` +3. **Développement :** Ceci est un monorepo pnpm + turborepo + - Installez les dépendances : `pnpm install` + - Exécutez les tests : `pnpm test` + - Compilez : `pnpm build` **Support :** [Communauté Discord](https://lingo.dev/go/discord) @@ -487,7 +160,7 @@ Si vous trouvez Lingo.dev utile, donnez-nous une étoile et aidez-nous à attein [ -![Graphique de l'historique des étoiles](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Graphique d'historique des étoiles](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -499,12 +172,5 @@ Si vous trouvez Lingo.dev utile, donnez-nous une étoile et aidez-nous à attein **Ajouter une nouvelle langue :** -1. Ajoutez le code de langue à [`i18n.json`](./i18n.json) en utilisant le [format BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +1. Ajoutez le code de langue dans [`i18n.json`](./i18n.json) en utilisant le [format BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) 2. Soumettez une pull request - -**Format de langue BCP-47 :** `language[-Script][-REGION]` - -- `language` : ISO 639-1/2/3 (minuscule) : `en`, `zh`, `bho` -- `Script` : ISO 15924 (casse de titre) : `Hans`, `Hant`, `Latn` -- `REGION` : ISO 3166-1 alpha-2 (majuscule) : `US`, `CN`, `IN` -- Exemples : `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/gu-IN.md b/readme/gu-IN.md index b0c0f9a5e..1919a136d 100644 --- a/readme/gu-IN.md +++ b/readme/gu-IN.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-સંચાલિત સ્થાનિકીકરણ માટે ઓપન-સોર્સ i18n ટૂલકિટ + ઓપન-સોર્સ સ્થાનિકીકરણ એન્જિનિયરિંગ સાધનો. સુસંગત, ગુણવત્તાયુક્ત અનુવાદો માટે + Lingo.dev સ્થાનિકીકરણ એન્જિનિયરિંગ પ્લેટફોર્મ સાથે જોડાઓ.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React માટે Lingo Compiler (પ્રારંભિક આલ્ફા)

@@ -71,51 +74,22 @@ ## ઝડપી શરૂઆત -| ટૂલ | ઉપયોગ કેસ | ઝડપી કમાન્ડ | -| ---------------------------------- | ---------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React એપ્લિકેશન્સ માટે AI-સહાયિત i18n સેટઅપ | પ્રોમ્પ્ટ: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ફાઇલોનું ભાષાંતર | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions માં સ્વચાલિત ભાષાંતર પાઇપલાઇન | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ડાયનેમિક કન્ટેન્ટ માટે રનટાઇમ ભાષાંતર | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n રેપર્સ વિના બિલ્ડ-ટાઇમ React સ્થાનિકીકરણ | `withLingo()` પ્લગઇન | +| સાધન | તે શું કરે છે | ઝડપી આદેશ | +| -------------------------------------------------- | ------------------------------------------------------ | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React એપ્લિકેશનો માટે AI-સહાયિત i18n સેટઅપ | પ્રોમ્પ્ટ: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ફાઇલોનું સ્થાનિકીકરણ કરો | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions માં સતત સ્થાનિકીકરણ | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n રેપર વગર બિલ્ડ-ટાઇમ React સ્થાનિકીકરણ | `withLingo()` પ્લગઇન | ---- - -### Lingo.dev MCP - -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) +આ સાધનો [સ્થાનિકીકરણ એન્જિનો](https://lingo.dev) સાથે જોડાય છે – સ્ટેટફુલ અનુવાદ API જે તમે Lingo.dev સ્થાનિકીકરણ એન્જિનિયરિંગ પ્લેટફોર્મ પર બનાવો છો. દરેક એન્જિન દરેક રિક્વેસ્ટમાં ગ્લોસરી, બ્રાન્ડ વૉઇસ અને લોકેલ-વિશિષ્ટ સૂચનાઓ જાળવી રાખે છે, જે [શબ્દકોશ ભૂલો 16.6–44.6% સુધી ઘટાડે છે](https://lingo.dev/research/retrieval-augmented-localization). અથવા [તમારું પોતાનું LLM લાવો](#lingodev-cli). -**સપોર્ટેડ ફ્રેમવર્ક્સ:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**ઉપયોગ:** - -તમારા IDEમાં MCP સર્વર કન્ફિગર કર્યા પછી ([ક્વિકસ્ટાર્ટ ગાઇડ્સ જુઓ](https://lingo.dev/en/mcp)), તમારા સહાયકને પ્રોમ્પ્ટ કરો: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -સહાયક આ કરશે: +--- -1. લોકેલ-આધારિત રાઉટિંગ કન્ફિગર કરશે (દા.ત., `/en`, `/es`, `/pt-BR`) -2. ભાષા સ્વિચિંગ કમ્પોનન્ટ્સ સેટઅપ કરશે -3. ઓટોમેટિક લોકેલ ડિટેક્શન લાગુ કરશે -4. જરૂરી કન્સીફિગરેશન ફાઇલો જનરેટ કરશે +### Lingo.dev MCP -**નોંધ:** AI-સહાયિત કોડ જનરેશન નોન-ડિટર્મિનિસ્ટિક છે. કમિટ કરતાં પહેલાં જનરેટ કરેલા કોડની સમીક્ષા કરો. +React એપ્લિકેશનોમાં i18n સેટઅપ કરવું ભૂલ-પ્રવણ છે – AI કોડિંગ સહાયકો પણ અસ્તિત્વમાં નથી એવા API વિશે ભ્રમણા કરે છે અને રૂટિંગ તોડે છે. Lingo.dev MCP, AI સહાયકોને Next.js, React Router અને TanStack Start માટે ફ્રેમવર્ક-વિશિષ્ટ i18n જ્ઞાનની સંરચિત ઍક્સેસ આપે છે. Claude Code, Cursor, GitHub Copilot Agents અને Codex સાથે કામ કરે છે. [ડોક્સ વાંચો →](https://lingo.dev/en/mcp) @@ -123,115 +97,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -ટ્રાન્સલેશન્સને સિંકમાં રાખવું કંટાળાજનક છે. તમે નવી સ્ટ્રિંગ ઉમેરો છો, તેનું ભાષાંતર કરવાનું ભૂલી જાઓ છો, આંતરરાષ્ટ્રીય યુઝર્સને તૂટેલું UI શિપ કરો છો. અથવા તમે ટ્રાન્સલેટર્સને JSON ફાઇલો મોકલો છો, દિવસો રાહ જુઓ છો, પછી તેમના કામને મેન્યુઅલી પાછા મર્જ કરો છો. 10+ ભાષાઓ સુધી સ્કેલ કરવાનો અર્થ છે સેંકડો ફાઇલોનું સંચાલન કરવું જે સતત સિંકની બહાર જાય છે. - -Lingo.dev CLI આને ઓટોમેટ કરે છે. તેને તમારી ટ્રાન્સલેશન ફાઇલો તરફ પોઇન્ટ કરો, એક કમાન્ડ ચલાવો, અને દરેક લોકેલ અપડેટ થાય છે. લોકફાઇલ ટ્રેક કરે છે કે શું પહેલેથી ભાષાંતરિત છે, જેથી તમે ફક્ત નવી અથવા બદલાયેલી કન્ટેન્ટ માટે જ ચૂકવો છો. JSON, YAML, CSV, PO ફાઇલો અને markdown સપોર્ટ કરે છે. - -**સેટઅપ:** +એક આદેશમાં JSON, YAML, markdown, CSV અને PO ફાઇલોનું સ્થાનિકીકરણ કરો. લૉકફાઇલ શું પહેલેથી સ્થાનિકીકૃત થયું છે તે ટ્રૅક કરે છે – ફક્ત નવી અથવા બદલાયેલી સામગ્રી પ્રોસેસ થાય છે. Lingo.dev પર તમારા સ્થાનિકીકરણ એન્જિનને ડિફૉલ્ટ કરે છે, અથવા તમારું પોતાનું LLM લાવો (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**તે કેવી રીતે કામ કરે છે:** - -1. કન્ફિગર કરેલી ફાઇલોમાંથી અનુવાદ યોગ્ય કન્ટેન્ટ એક્સટ્રેક્ટ કરે છે -2. અનુવાદ માટે LLM પ્રોવાઇડરને કન્ટેન્ટ મોકલે છે -3. અનુવાદિત કન્ટેન્ટને ફરીથી ફાઇલ સિસ્ટમમાં લખે છે -4. સંપૂર્ણ થયેલા અનુવાદોને ટ્રેક કરવા માટે `i18n.lock` ફાઇલ બનાવે છે (અવરોધક પ્રોસેસિંગ ટાળે છે) - -**કન્ફિગરેશન:** - -`init` કમાન્ડ `i18n.json` ફાઇલ જનરેટ કરે છે. લોકેલ અને બકેટ્સ કન્ફિગર કરો: - -```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 પ્રોવાઇડર્સ માટે: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**સપોર્ટેડ LLM પ્રોવાઇડર્સ:** - -- Lingo.dev Engine (ભલામણ કરેલ) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ડોક્સ વાંચો →](https://lingo.dev/en/cli) +[દસ્તાવેજો વાંચો →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -અનુવાદો એ એવી ફીચર છે જે હંમેશા "લગભગ પૂર્ણ" હોય છે. એન્જિનિયરો લોકેલ્સ અપડેટ કર્યા વિના કોડ મર્જ કરે છે. QA સ્ટેજિંગમાં ખૂટતા અનુવાદો પકડે છે - અથવા વધુ ખરાબ, યુઝર્સ તેને પ્રોડક્શનમાં પકડે છે. મૂળ કારણ: અનુવાદ એક મેન્યુઅલ સ્ટેપ છે જે ડેડલાઇન પ્રેશર હેઠળ સ્કિપ કરવું સરળ છે. - -Lingo.dev CI/CD અનુવાદોને ઓટોમેટિક બનાવે છે. દરેક પુશ અનુવાદને ટ્રિગર કરે છે. કોડ પ્રોડક્શનમાં પહોંચે તે પહેલાં ખૂટતી સ્ટ્રિંગ્સ ભરાઈ જાય છે. કોઈ ડિસિપ્લિનની જરૂર નથી - પાઇપલાઇન તેને હેન્ડલ કરે છે. - -**સપોર્ટેડ પ્લેટફોર્મ્સ:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions સેટઅપ:** - -`.github/workflows/translate.yml` બનાવો: - -```yaml -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 }} -``` - -**સેટઅપ આવશ્યકતાઓ:** - -1. રીપોઝિટરી સિક્રેટ્સમાં `LINGODOTDEV_API_KEY` ઉમેરો (Settings > Secrets and variables > Actions) -2. PR વર્કફ્લો માટે: Settings > Actions > General માં "Allow GitHub Actions to create and approve pull requests" સક્રિય કરો - -**વર્કફ્લો વિકલ્પો:** - -અનુવાદો સીધા કમિટ કરો: +તમારી પાઇપલાઇનમાં સતત સ્થાનિકીકરણ. દરેક પુશ સ્થાનિકીકરણને ટ્રિગર કરે છે – કોડ ઉત્પાદનમાં પહોંચે તે પહેલાં ખૂટતી સ્ટ્રિંગ્સ ભરાઈ જાય છે. GitHub Actions, GitLab CI/CD અને Bitbucket Pipelines ને સપોર્ટ કરે છે. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,254 +118,48 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -ભાષાંતરો સાથે pull requests બનાવો: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**ઉપલબ્ધ inputs:** - -| Input | Default | Description | -| -------------------- | ---------------------------------------------- | ------------------------------ | -| `api-key` | (આવશ્યક) | Lingo.dev API key | -| `pull-request` | `false` | સીધા કમિટ કરવાને બદલે PR બનાવો | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | કસ્ટમ commit message | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | કસ્ટમ PR title | -| `working-directory` | `"."` | જેમાં रन કરવું તે ડિરેક્ટરી | -| `parallel` | `false` | પેરલલ પ્રોસેસિંગ સક્રિય કરો | - -[ડોક્સ વાંચો →](https://lingo.dev/en/ci/github) +[દસ્તાવેજો વાંચો →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -સ્ટેટિક ટ્રાન્સલેશન ફાઇલો UI લેબલ્સ માટે કામ કરે છે, પરંતુ યુઝર-જનરેટેડ કન્ટેન્ટ વિશે શું? ચેટ મેસેજ, પ્રોડક્ટ વર્ણનો, સપોર્ટ ટિકિટ્સ - જે કન્ટેન્ટ બિલ્ડ ટાઇમ પર અસ્તિત્વમાં નથી તેનું પ્રી-ટ્રાન્સલેશન કરી શકાતું નથી. તમે અનુવાદ વિનાનું ટેક્સ્ટ બતાવવા અથવા કસ્ટમ ટ્રાન્સલેશન પાઇપલાઇન બનાવવા માટે અટવાઈ જાઓ છો. +બેકએન્ડ કોડમાંથી સીધા તમારા સ્થાનિકીકરણ એન્જિનને કૉલ કરો. વેબહૂક ડિલિવરી સાથે સિંક્રનસ અને એસિંક સ્થાનિકીકરણ, લોકેલ દીઠ નિષ્ફળતા અલગીકરણ અને WebSocket દ્વારા રિયલ-ટાઇમ પ્રગતિ. -Lingo.dev SDK રનટાઇમ પર કન્ટેન્ટનું ભાષાંતર કરે છે. કોઈપણ ટેક્સ્ટ, ઑબ્જેક્ટ અથવા HTML પાસ કરો અને લોકલાઇઝ્ડ વર્ઝન પાછું મેળવો. રિયલ-ટાઇમ ચેટ, ડાયનેમિક નોટિફિકેશન્સ અથવા ડિપ્લોયમેન્ટ પછી આવતા કોઈપણ કન્ટેન્ટ માટે કામ કરે છે. JavaScript, PHP, Python અને Ruby માટે ઉપલબ્ધ. - -**ઇન્સ્ટોલેશન:** - -```bash -npm install lingo.dev -``` - -**ઉપયોગ:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**ઉપલબ્ધ SDKs:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web apps, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ડોક્સ વાંચો →](https://lingo.dev/en/sdk) +[દસ્તાવેજો વાંચો →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React માટે Lingo કમ્પાઇલર (પ્રારંભિક આલ્ફા) -પરંપરાગત i18n આક્રમક છે. તમે દરેક સ્ટ્રિંગને `t()` ફંક્શનમાં રાખો છો, અનુવાદ કી શોધો છો (`home.hero.title.v2`), પેરલલ JSON ફાઇલ્સ જાળવો છો, અને તમારી કમ્પોનન્ટ્સને લોકલાઇઝેશન બોઇલરપ્લેટથી મોટું થતું જુઓ છો. આ બધી પ્રક્રિયા એટલી કંટાળાજનક છે કે ટીમો આંતરરાષ્ટ્રીયકરણને એટલું મોડું કરે છે, જેવાં તે આખરે મોટા રિફેક્ટરમાં પરિવર્તિત થાય છે. +i18n રેપર્સ વિના બિલ્ડ-ટાઇમ React સ્થાનિકીકરણ. સાદા અંગ્રેજી ટેક્સ્ટ સાથે કોમ્પોનન્ટ્સ લખો – કમ્પાઇલર ભાષાંતરિત કરી શકાય તેવી સ્ટ્રિંગ્સ શોધે છે અને બિલ્ડ સમયે સ્થાનિકીકૃત વેરિઅન્ટ્સ જનરેટ કરે છે. કોઈ ભાષાંતર કી નહીં, કોઈ JSON ફાઇલો નહીં, કોઈ `t()` ફંક્શન્સ નહીં. Next.js (App Router) અને Vite + React ને સપોર્ટ કરે છે. -Lingo.dev કમ્પાઇલર ઔપચારિકતાને દૂર કરે છે. સાદા અંગ્રેજી ટેક્સ્ટ સાથે React કમ્પોનન્ટ્સ લખો. કમ્પાઇલર બિલ્ડ સમયે ભાષાંતર યોગ્ય સ્ટ્રિંગ્સ શોધી કાઢે છે અને આપમેળે સ્થાનિકીકૃત વેરિઅન્ટ્સ જનરેટ કરે છે. કોઈ કી નહીં, કોઈ JSON ફાઇલો નહીં, કોઈ રેપર ફંક્શન્સ નહીં - ફક્ત React કોડ જે બહુવિધ ભાષાઓમાં કામ કરે છે. - -**ઇન્સ્ટોલેશન:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**ઓથેન્ટિકેશન:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**કોન્ફિગરેશન (Vite):** - -```ts -// 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(), - ], -}); -``` - -**પ્રોવાઇડર સેટઅપ:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**ભાષા સ્વિચર:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**ડેવલપમેન્ટ:** `npm run dev` (પસ્યુડોટ્રાન્સલેટર ઉપયોગ કરે છે, કોઈ API કોલ્સ નથી) - -**પ્રોડક્શન:** `usePseudotranslator: false` સેટ કરો, પછી `next build` - -`.lingo/` ડિરેક્ટરીને વર્ઝન કન્ટ્રોલમાં કમિટ કરો. - -**મુખ્ય વિશેષતાઓ:** - -- શૂન્ય રનટાઇમ પરફોર્મન્સ ખર્ચ -- કોઈ અનુવાદ કી અથવા JSON ફાઇલ્સ નહીં -- `t()` ફંક્શન્સ અથવા `` રેપર કમ્પોનન્ટ્સ નહીં -- JSX માં અનુવાદ યોગ્ય ટેક્સ્ટને આપમેળે શોધે છે -- TypeScript સપોર્ટ -- બહુવચન માટે ICU MessageFormat -- `data-lingo-override` એટ્રિબ્યૂટ દ્વારા મેન્યુઅલ ઓવરરાઇડ -- બિલ્ટ-ઇન ટ્રાન્સલેશન એડિટર વિજેટ - -**બિલ્ડ મોડ્સ:** - -- `pseudotranslator`: પ્લેસહોલ્ડર અનુવાદો સાથે વિકાસ મોડ (કોઈ API ખર્ચો નથી) -- `real`: LLMs વડે અસલ અનુવાદો જનરેટ કરો -- `cache-only`: CI પરથી પૂર્વ-જનરેટેડ અનુવાદો વડે પ્રોડક્શન મોડ (કોઈ API કોલ્સ નહીં) - -**સપોર્ટેડ ફ્રેમવર્ક્સ:** - -- Next.js (React Server Components સાથે App Router) -- Vite + React (SPA અને SSR) - -વધારાના ફ્રેમવર્ક સપોર્ટની યોજના છે. - -[ડોક્સ વાંચો →](https://lingo.dev/en/compiler) +[દસ્તાવેજો વાંચો →](https://lingo.dev/en/docs/react/compiler) --- ## યોગદાન -યોગદાનનું સ્વાગત છે. કૃપા કરીને આ માર્ગદર્શિકાઓનું પાલન કરો: +યોગદાન આવકાર્ય છે. કૃપા કરીને આ માર્ગદર્શિકાઓનું પાલન કરો: -1. **સમસ્યાઓ:** [બગ રિપોર્ટ કરો અથવા સુવિધાઓની અરજી કરો](https://github.com/lingodotdev/lingo.dev/issues) +1. **ઇશ્યૂઝ:** [બગ્સની જાણ કરો અથવા સુવિધાઓની વિનંતી કરો](https://github.com/lingodotdev/lingo.dev/issues) 2. **પુલ રિક્વેસ્ટ્સ:** [ફેરફારો સબમિટ કરો](https://github.com/lingodotdev/lingo.dev/pulls) - - દરેક PR માટે changeset જરૂરી છે: `pnpm new` (અથવા `pnpm new:empty` non-release બદલવા માટે) - - સબમિટ કરતા પહેલાં ખાતરી કરો કે બધા ટેસ્ટ પાસ થાય છે -3. **ડેવલપમેન્ટ:** આ pnpm + turborepo monorepo છે - - dependencies ઇન્સ્ટોલ કરો: `pnpm install` - - ટેસ્ટ્સ ચલાવો: `pnpm test` + - દરેક PR ને ચેન્જસેટની જરૂર છે: `pnpm new` (અથવા નોન-રિલીઝ ફેરફારો માટે `pnpm new:empty`) + - સબમિટ કરતાં પહેલાં ટેસ્ટ પાસ થાય તેની ખાતરી કરો +3. **ડેવલપમેન્ટ:** આ pnpm + turborepo મોનોરેપો છે + - ડિપેન્ડન્સીઝ ઇન્સ્ટોલ કરો: `pnpm install` + - ટેસ્ટ ચલાવો: `pnpm test` - બિલ્ડ: `pnpm build` -**સપોર્ટ:** [Discord કમ્યુનિટી](https://lingo.dev/go/discord) +**સપોર્ટ:** [Discord સમુદાય](https://lingo.dev/go/discord) ## સ્ટાર હિસ્ટ્રી -જો તમને Lingo.dev ઉપયોગી લાગે, તો અમને સ્ટાર આપો અને 10,000 સ્ટાર્સ સુધી પહોંચવામાં અમારી મદદ કરો! +જો તમને Lingo.dev ઉપયોગી લાગે, તો અમને સ્ટાર આપો અને 10,000 સ્ટાર સુધી પહોંચવામાં અમારી મદદ કરો! [ -![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![સ્ટાર હિસ્ટ્રી ચાર્ટ](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -498,12 +171,5 @@ export function LanguageSwitcher() { **નવી ભાષા ઉમેરવી:** -1. [BCP-47 ફોર્મેટ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) નો ઉપયોગ કરીને [`i18n.json`](./i18n.json) માં લોકેલ કોડ ઉમેરો -2. એક પુલ રિક્વેસ્ટ સબમિટ કરો - -**BCP-47 લોકેલ ફોર્મેટ:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (લોઅરકેસ): `en`, `zh`, `bho` -- `Script`: ISO 15924 (ટાઇટલ કેસ): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (અપરકેસ): `US`, `CN`, `IN` -- ઉદાહરણો: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 ફોર્મેટ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)નો ઉપયોગ કરીને [`i18n.json`](./i18n.json)માં લોકેલ કોડ ઉમેરો +2. પુલ રિક્વેસ્ટ સબમિટ કરો diff --git a/readme/he.md b/readme/he.md index a99d16e8a..ef6c49443 100644 --- a/readme/he.md +++ b/readme/he.md @@ -3,21 +3,26 @@ Lingo.dev

- Lingo.dev - ערכת כלים קוד פתוח ל-i18n עם תרגום מבוסס LLM + + כלי הנדסת לוקליזציה בקוד פתוח. התחברו לפלטפורמת ההנדסה של Lingo.dev לתרגומים + עקביים ואיכוtiים. +


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler עבור React (אלפא מוקדמת)

@@ -69,167 +74,43 @@ ## התחלה מהירה -| כלי | מקרה שימוש | פקודה מהירה | -| ---------------------------------- | -------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | הגדרת i18n בסיוע AI עבור אפליקציות React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | תרגום קבצי JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | צינור תרגום אוטומטי ב-GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | תרגום בזמן ריצה לתוכן דינמי | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | לוקליזציה של React בזמן build ללא wrappers של i18n | תוסף `withLingo()` | +| כלי | מה הכלי עושה | פקודה מהירה | +| --------------------------------------------------- | ----------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | הגדרת i18n מונחית AI עבור אפליקציות React | הנחיה: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | לוקליזציה של קבצי JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | לוקליזציה רציפה ב-GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler עבור React**](#lingodev-compiler) | לוקליזציה של React בזמן build ללא עטיפות i18n | פלאגין `withLingo()` | ---- - -### Lingo.dev MCP - -הגדרת i18n באפליקציות React ידועה לשמצה כמועדת לשגיאות - אפילו עבור מפתחים מנוסים. עוזרי קידוד AI מחמירים את המצב: הם מזיות APIs לא קיימים, שוכחים הגדרות middleware, שוברים routing, או מיישמים חצי פתרון לפני שהם מאבדים את ההקשר. הבעיה היא שהגדרת i18n דורשת רצף מדויק של שינויים מתואמים על פני קבצים מרובים (routing, middleware, קומפוננטות, הגדרות), ו-LLMs מתקשים לשמור על ההקשר הזה. - -Lingo.dev MCP פותר זאת על ידי מתן גישה מובנית לעוזרי AI לידע i18n ספציפי לפריימוורק. במקום לנחש, העוזר שלך עוקב אחר דפוסי יישום מאומתים עבור Next.js, React Router ו-TanStack Start. - -**סביבות פיתוח נתמכות:** +### מנועי לוקליזציה -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +כלים אלה מתחברים ל[מנועי לוקליזציה](https://lingo.dev) – APIs תרגום עם מצב שנוצרים בפלטפורמת ההנדסה Lingo.dev. כל מנוע שומר מילונים, קול מותג והנחיות לפי שפה לאורך כל בקשה, [ומפחית שגיאות טרמינולוגיה ב-16.6–44.6%](https://lingo.dev/research/retrieval-augmented-localization). או [הביאו את ה-LLM שלכם](#lingodev-cli). -**פריימוורקים נתמכים:** - -- Next.js (App Router ו-Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**שימוש:** - -לאחר הגדרת שרת ה-MCP בסביבת הפיתוח שלך ([ראה מדריכי התחלה מהירה](https://lingo.dev/en/mcp)), בקש מהעוזר שלך: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -העוזר יבצע: +--- -1. הגדרת routing מבוסס locale (לדוגמה, `/en`, `/es`, `/pt-BR`) -2. הגדרת קומפוננטות להחלפת שפה -3. יישום זיהוי אוטומטי של locale -4. יצירת קבצי הגדרות נדרשים +### Lingo.dev MCP -**שים לב:** יצירת קוד בעזרת AI אינה דטרמיניסטית. בדוק את הקוד שנוצר לפני ביצוע commit. +הגדרת i18n באפליקציות React רגישה לטעויות – אפילו עוזרי קוד מבוססי AI מזייפים APIs לא קיימים ושוברים ניתוב. Lingo.dev MCP מעניק לעוזרי AI גישה מובנית לידע i18n ספציפי לפריימוורק עבור Next.js, React Router ו-TanStack Start. עובד עם Claude Code, Cursor, GitHub Copilot Agents ו-Codex. -[קרא את התיעוד ←](https://lingo.dev/en/mcp) +[קראו את התיעוד →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -שמירה על סנכרון תרגומים היא מייגעת. אתה מוסיף מחרוזת חדשה, שוכח לתרגם אותה, משגר UI שבור למשתמשים בינלאומיים. או שאתה שולח קבצי JSON למתרגמים, ממתין ימים, ואז ממזג ידנית את עבודתם בחזרה. הרחבה ל-10+ שפות משמעותה ניהול מאות קבצים שסוטים כל הזמן מסנכרון. - -Lingo.dev CLI מבצע אוטומציה של זה. הפנה אותו לקבצי התרגום שלך, הרץ פקודה אחת, וכל locale מתעדכן. קובץ lockfile עוקב אחר מה כבר תורגם, כך שאתה משלם רק עבור תוכן חדש או ששונה. תומך ב-JSON, YAML, CSV, קבצי PO ו-markdown. - -**הגדרה:** +לוקליזציה של קבצי JSON, YAML, markdown, CSV ו-PO בפקודה אחת. קובץ נעילה עוקב אחר מה כבר תורגם – רק תוכן חדש או ששונה עובר עיבוד. ברירת המחדל היא מנוע הלוקליזציה שלכם ב-Lingo.dev, או הביאו את ה-LLM שלכם (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**איך זה עובד:** - -1. מחלץ תוכן הניתן לתרגום מקבצים מוגדרים -2. שולח תוכן לספק LLM לתרגום -3. כותב תוכן מתורגם חזרה למערכת הקבצים -4. יוצר קובץ `i18n.lock` למעקב אחר תרגומים שהושלמו (נמנע מעיבוד מיותר) - -**הגדרות:** - -הפקודה `init` מייצרת קובץ `i18n.json`. הגדר locales ו-buckets: - -```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 מותאמים אישית: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**ספקי LLM נתמכים:** - -- Lingo.dev Engine (מומלץ) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[קרא את התיעוד ←](https://lingo.dev/en/cli) +[קרא את התיעוד ←](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -תרגומים הם התכונה שתמיד "כמעט מוכנה". מהנדסים מבצעים merge לקוד מבלי לעדכן locales. QA מגלה תרגומים חסרים ב-staging - או גרוע מכך, משתמשים מגלים אותם ב-production. הסיבה העיקרית: תרגום הוא שלב ידני שקל לדלג עליו תחת לחץ של דדליינים. - -Lingo.dev CI/CD הופך תרגומים לאוטומטיים. כל push מפעיל תרגום. מחרוזות חסרות מתמלאות לפני שהקוד מגיע ל-production. אין צורך במשמעת - ה-pipeline מטפל בזה. - -**פלטפורמות נתמכות:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**הגדרת GitHub Actions:** - -צור `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**דרישות הגדרה:** - -1. הוסף `LINGODOTDEV_API_KEY` ל-secrets של ה-repository (Settings > Secrets and variables > Actions) -2. עבור workflows של PR: אפשר "Allow GitHub Actions to create and approve pull requests" ב-Settings > Actions > General - -**אפשרויות workflow:** - -בצע commit לתרגומים ישירות: +לוקליזציה רציפה בצינור העבודה שלך. כל push מפעיל לוקליזציה – מחרוזות חסרות מתמלאות לפני שהקוד מגיע לייצור. תומך ב-GitHub Actions, GitLab CI/CD ו-Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -237,250 +118,44 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -יצירת pull requests עם תרגומים: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**פרמטרים זמינים:** - -| פרמטר | ברירת מחדל | תיאור | -| -------------------- | ---------------------------------------------- | -------------------------- | -| `api-key` | (נדרש) | מפתח API של Lingo.dev | -| `pull-request` | `false` | יצירת PR במקום commit ישיר | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | הודעת commit מותאמת אישית | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | כותרת PR מותאמת אישית | -| `working-directory` | `"."` | תיקיה להרצה | -| `parallel` | `false` | הפעלת עיבוד מקבילי | - -[קרא את התיעוד ←](https://lingo.dev/en/ci/github) +[קרא את התיעוד ←](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -קבצי תרגום סטטיים עובדים עבור תוויות UI, אבל מה לגבי תוכן שנוצר על ידי משתמשים? הודעות צ'אט, תיאורי מוצרים, פניות תמיכה - תוכן שלא קיים בזמן build לא ניתן לתרגם מראש. אתה נתקע בהצגת טקסט לא מתורגם או בבניית pipeline תרגום מותאם אישית. +קרא למנוע הלוקליזציה שלך ישירות מקוד backend. לוקליזציה סינכרונית ואסינכרונית עם מסירה ב-webhook, בידוד כשלים לכל locale, והתקדמות בזמן אמת דרך WebSocket. -Lingo.dev SDK מתרגם תוכן ב-runtime. העבר כל טקסט, אובייקט או HTML וקבל בחזרה גרסה מלוקלזת. עובד עבור צ'אט בזמן אמת, התראות דינמיות או כל תוכן שמגיע לאחר deployment. זמין עבור JavaScript, PHP, Python ו-Ruby. - -**התקנה:** - -```bash -npm install lingo.dev -``` - -**שימוש:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**SDKs זמינים:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - אפליקציות web, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[קרא את התיעוד ←](https://lingo.dev/en/sdk) +[קרא את התיעוד ←](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### Lingo Compiler עבור React (אלפא מוקדמת) -i18n מסורתי הוא פולשני. עוטפים כל מחרוזת בפונקציות `t()`, ממציאים מפתחות תרגום (`home.hero.title.v2`), מתחזקים קבצי JSON מקבילים, וצופים בקומפוננטות מתנפחות עם קוד תשתית לוקליזציה. זה כל כך מתיש שצוותים דוחים בינאום עד שזה הופך ל-refactor מסיבי. +לוקליזציה של React בזמן build ללא עטיפות i18n. כתוב רכיבים עם טקסט רגיל באנגלית – המהדר מזהה מחרוזות הניתנות לתרגום ומייצר גרסאות מתורגמות בזמן build. ללא מפתחות תרגום, ללא קבצי JSON, ללא פונקציות `t()`. תומך ב-Next.js (App Router) ו-Vite + React. -Lingo.dev Compiler מבטל את הטקסיות. כתוב קומפוננטות React עם טקסט באנגלית פשוטה. הקומפיילר מזהה מחרוזות הניתנות לתרגום בזמן build ומייצר גרסאות מתורגמות באופן אוטומטי. ללא מפתחות, ללא קבצי JSON, ללא פונקציות עטיפה - רק קוד React שפשוט עובד במספר שפות. - -**התקנה:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**אימות:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**הגדרות (Vite):** - -```ts -// 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:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**מחליף שפה:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**פיתוח:** `npm run dev` (משתמש ב-pseudotranslator, ללא קריאות API) - -**פרודקשן:** יש להגדיר `usePseudotranslator: false`, ואז `next build` - -בצעו commit לתיקיית `.lingo/` אל בקרת הגרסאות. - -**תכונות עיקריות:** - -- אין השפעה על ביצועים בזמן ריצה -- אין מפתחות תרגום או קבצי JSON -- אין פונקציות `t()` או קומפוננטות עטיפה `` -- זיהוי אוטומטי של טקסטים שניתנים לתרגום ב-JSX -- תמיכה ב-TypeScript -- ICU MessageFormat לריבוי -- עקיפה ידנית דרך המאפיין `data-lingo-override` -- עורך תרגומים מובנה - -**מצבי build:** - -- `pseudotranslator`: מצב פיתוח עם תרגומי placeholder (ללא עלות API) -- `real`: יצירת תרגומים אמיתיים באמצעות LLMs -- `cache-only`: מצב פרודקשן עם תרגומים שהוזנו מראש מ-CI (ללא קריאות API) - -**פריימוורקים נתמכים:** - -- Next.js (App Router עם React Server Components) -- Vite + React (SPA ו-SSR) - -תמיכה בפריימוורקים נוספים מתוכננת. - -[קרא את התיעוד ←](https://lingo.dev/en/compiler) +[קרא את התיעוד ←](https://lingo.dev/en/docs/react/compiler) --- -## תרומה לפרויקט +## תרומה -תרומות מתקבלות בברכה. אנא עקבו אחר ההנחיות הבאות: +תרומות מתקבלות בברכה. אנא עקוב אחר ההנחיות הבאות: -1. **בעיות:** [דיווח על תקלות או בקשת פיצ'רים](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Requests:** [הגשת שינויים](https://github.com/lingodotdev/lingo.dev/pulls) - - כל PR דורש changeset: `pnpm new` (או `pnpm new:empty` עבור שינויים שאינם ב-release) - - יש לוודא שכל הבדיקות עוברות לפני שליחה -3. **פיתוח:** זהו מונו-רפו של pnpm + turborepo - - התקנת תלויות: `pnpm install` - - הרצת בדיקות: `pnpm test` - - בנייה: `pnpm build` +1. **בעיות:** [דווח על באגים או בקש פיצ'רים](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Requests:** [שלח שינויים](https://github.com/lingodotdev/lingo.dev/pulls) + - כל PR דורש changeset: `pnpm new` (או `pnpm new:empty` עבור שינויים שאינם לשחרור) + - וודא שהבדיקות עוברות לפני הגשה +3. **פיתוח:** זהו monorepo של pnpm + turborepo + - התקן תלויות: `pnpm install` + - הרץ בדיקות: `pnpm test` + - בנה: `pnpm build` **תמיכה:** [קהילת Discord](https://lingo.dev/go/discord) ## היסטוריית כוכבים -אם אתם מוצאים את Lingo.dev שימושי, תנו לנו כוכב ועזרו לנו להגיע ל-10,000 כוכבים! +אם אתה מוצא את Lingo.dev שימושי, תן לנו כוכב ועזור לנו להגיע ל-10,000 כוכבים! [ @@ -496,12 +171,5 @@ export function LanguageSwitcher() { **הוספת שפה חדשה:** -1. הוסיפו קוד locale ל-[`i18n.json`](./i18n.json) לפי [פורמט BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) -2. שלחו pull request - -**פורמט locale BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (אותיות קטנות): `en`, `zh`, `bho` -- `Script`: ISO 15924 (אות ראשונה גדולה): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (אותיות גדולות): `US`, `CN`, `IN` -- דוגמאות: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. הוסף קוד שפה ל-[`i18n.json`](./i18n.json) בפורמט [BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +2. שלח בקשת משיכה diff --git a/readme/hi.md b/readme/hi.md index b17333ef6..0866007bb 100644 --- a/readme/hi.md +++ b/readme/hi.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-संचालित स्थानीयकरण के लिए ओपन-सोर्स i18n टूलकिट + ओपन-सोर्स लोकलाइज़ेशन इंजीनियरिंग टूल्स। सुसंगत, गुणवत्ता अनुवादों के लिए + Lingo.dev लोकलाइज़ेशन इंजीनियरिंग प्लेटफ़ॉर्म से कनेक्ट करें।


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React के लिए Lingo Compiler (अर्ली अल्फा)

@@ -71,167 +74,43 @@ ## त्वरित शुरुआत -| टूल | उपयोग का मामला | त्वरित कमांड | -| ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React ऐप्स के लिए AI-सहायता प्राप्त i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फ़ाइलों का अनुवाद करें | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions में स्वचालित अनुवाद पाइपलाइन | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | डायनामिक कंटेंट के लिए रनटाइम अनुवाद | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n रैपर्स के बिना बिल्ड-टाइम React स्थानीयकरण | `withLingo()` प्लगइन | +| टूल | यह क्या करता है | त्वरित कमांड | +| -------------------------------------------------- | ------------------------------------------------------ | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React ऐप्स के लिए AI-असिस्टेड i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फ़ाइलों को लोकलाइज़ करें | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions में निरंतर लोकलाइज़ेशन | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n रैपर्स के बिना बिल्ड-टाइम React लोकलाइज़ेशन | `withLingo()` प्लगइन | ---- - -### Lingo.dev MCP - -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) +ये टूल्स [लोकलाइज़ेशन इंजन](https://lingo.dev) से कनेक्ट होते हैं – स्टेटफुल ट्रांसलेशन API जो आप Lingo.dev लोकलाइज़ेशन इंजीनियरिंग प्लेटफ़ॉर्म पर बनाते हैं। प्रत्येक इंजन हर अनुरोध में ग्लॉसरी, ब्रांड वॉइस और प्रति-लोकेल निर्देशों को संरक्षित रखता है, [शब्दावली त्रुटियों को 16.6–44.6% तक कम करता है](https://lingo.dev/research/retrieval-augmented-localization)। या [अपना खुद का LLM लाएं](#lingodev-cli)। -**समर्थित फ्रेमवर्क:** - -- Next.js (App Router और Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**उपयोग:** - -अपने IDE में MCP सर्वर को कॉन्फ़िगर करने के बाद ([क्विकस्टार्ट गाइड देखें](https://lingo.dev/en/mcp)), अपने असिस्टेंट को प्रॉम्प्ट करें: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -असिस्टेंट करेगा: +--- -1. लोकेल-आधारित राउटिंग कॉन्फ़िगर करें (जैसे, `/en`, `/es`, `/pt-BR`) -2. भाषा स्विचिंग कंपोनेंट सेटअप करें -3. स्वचालित लोकेल डिटेक्शन लागू करें -4. आवश्यक कॉन्फ़िगरेशन फ़ाइलें जेनरेट करें +### Lingo.dev MCP -**नोट:** AI-असिस्टेड कोड जेनरेशन नॉन-डिटर्मिनिस्टिक है। कमिट करने से पहले जेनरेट किए गए कोड की समीक्षा करें। +React ऐप्स में i18n सेटअप करना त्रुटि-प्रवण है – यहाँ तक कि AI कोडिंग असिस्टेंट भी गैर-मौजूद API को हैलुसिनेट करते हैं और राउटिंग को तोड़ देते हैं। Lingo.dev MCP, AI असिस्टेंट्स को Next.js, React Router, और TanStack Start के लिए फ्रेमवर्क-विशिष्ट i18n ज्ञान तक संरचित पहुँच देता है। Claude Code, Cursor, GitHub Copilot Agents, और Codex के साथ काम करता है। -[दस्तावेज़ पढ़ें →](https://lingo.dev/en/mcp) +[डॉक्स पढ़ें →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -अनुवादों को सिंक में रखना थकाऊ है। आप एक नई स्ट्रिंग जोड़ते हैं, इसे अनुवाद करना भूल जाते हैं, अंतर्राष्ट्रीय उपयोगकर्ताओं को टूटा हुआ UI भेज देते हैं। या आप अनुवादकों को JSON फ़ाइलें भेजते हैं, दिनों तक प्रतीक्षा करते हैं, फिर मैन्युअल रूप से उनके काम को वापस मर्ज करते हैं। 10+ भाषाओं तक स्केल करने का मतलब है सैकड़ों फ़ाइलों को मैनेज करना जो लगातार सिंक से बाहर हो जाती हैं। - -Lingo.dev CLI इसे स्वचालित करता है। इसे अपनी अनुवाद फ़ाइलों पर पॉइंट करें, एक कमांड चलाएं, और हर लोकेल अपडेट हो जाता है। एक लॉकफ़ाइल ट्रैक करती है कि क्या पहले से अनुवादित है, इसलिए आप केवल नए या बदले हुए कंटेंट के लिए भुगतान करते हैं। JSON, YAML, CSV, PO फ़ाइलें और markdown को सपोर्ट करता है। - -**सेटअप:** +एक कमांड में JSON, YAML, markdown, CSV, और PO फ़ाइलों को लोकलाइज़ करें। एक लॉकफ़ाइल ट्रैक करती है कि क्या पहले से लोकलाइज़ किया जा चुका है – केवल नई या बदली हुई सामग्री प्रोसेस होती है। डिफ़ॉल्ट रूप से Lingo.dev पर आपके लोकलाइज़ेशन इंजन से जुड़ता है, या अपना खुद का LLM लाएं (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)। ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**यह कैसे काम करता है:** - -1. कॉन्फ़िगर की गई फ़ाइलों से अनुवाद योग्य कंटेंट निकालता है -2. अनुवाद के लिए कंटेंट को LLM प्रोवाइडर को भेजता है -3. अनुवादित कंटेंट को फ़ाइल सिस्टम में वापस लिखता है -4. पूर्ण किए गए अनुवादों को ट्रैक करने के लिए `i18n.lock` फ़ाइल बनाता है (अनावश्यक प्रोसेसिंग से बचाता है) - -**कॉन्फ़िगरेशन:** - -`init` कमांड एक `i18n.json` फ़ाइल जेनरेट करती है। लोकेल और बकेट कॉन्फ़िगर करें: - -```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 प्रोवाइडर के लिए: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**समर्थित LLM प्रोवाइडर:** - -- Lingo.dev Engine (अनुशंसित) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[दस्तावेज़ पढ़ें →](https://lingo.dev/en/cli) +[दस्तावेज़ पढ़ें →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -अनुवाद वह फ़ीचर है जो हमेशा "लगभग पूरा" होता है। इंजीनियर लोकेल अपडेट किए बिना कोड मर्ज कर देते हैं। QA को स्टेजिंग में गायब अनुवाद मिलते हैं - या इससे भी बुरा, यूज़र्स को प्रोडक्शन में मिलते हैं। मूल कारण: अनुवाद एक मैनुअल स्टेप है जिसे डेडलाइन के दबाव में छोड़ना आसान है। - -Lingo.dev CI/CD अनुवाद को स्वचालित बनाता है। हर पुश अनुवाद ट्रिगर करता है। गायब स्ट्रिंग्स कोड के प्रोडक्शन में पहुंचने से पहले भर जाती हैं। किसी अनुशासन की आवश्यकता नहीं - पाइपलाइन इसे संभालती है। - -**समर्थित प्लेटफ़ॉर्म:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions सेटअप:** - -`.github/workflows/translate.yml` बनाएं: - -```yaml -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 }} -``` - -**सेटअप आवश्यकताएं:** - -1. रिपॉज़िटरी सीक्रेट्स में `LINGODOTDEV_API_KEY` जोड़ें (Settings > Secrets and variables > Actions) -2. PR वर्कफ़्लो के लिए: Settings > Actions > General में "Allow GitHub Actions to create and approve pull requests" सक्षम करें - -**वर्कफ़्लो विकल्प:** - -अनुवाद सीधे कमिट करें: +आपकी पाइपलाइन में निरंतर स्थानीयकरण। हर पुश स्थानीयकरण को ट्रिगर करता है – कोड प्रोडक्शन में पहुंचने से पहले खाली स्ट्रिंग्स भर दी जाती हैं। GitHub Actions, GitLab CI/CD और Bitbucket Pipelines का समर्थन करता है। ```yaml uses: lingodotdev/lingo.dev@main @@ -239,229 +118,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -अनुवादों के साथ pull request बनाएं: - -```yaml -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 key | -| `pull-request` | `false` | सीधे कमिट करने के बजाय PR बनाएं | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | कस्टम कमिट मैसेज | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | कस्टम PR टाइटल | -| `working-directory` | `"."` | जिस डायरेक्टरी में रन करना है | -| `parallel` | `false` | पैरेलल प्रोसेसिंग सक्षम करें | - -[डॉक्स पढ़ें →](https://lingo.dev/en/ci/github) +[दस्तावेज़ पढ़ें →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -स्टैटिक ट्रांसलेशन फ़ाइलें UI लेबल के लिए काम करती हैं, लेकिन यूज़र-जेनरेटेड कंटेंट का क्या? चैट मैसेज, प्रोडक्ट डिस्क्रिप्शन, सपोर्ट टिकट - ऐसा कंटेंट जो बिल्ड टाइम पर मौजूद नहीं होता, उसे प्री-ट्रांसलेट नहीं किया जा सकता। आप अनट्रांसलेटेड टेक्स्ट दिखाने या कस्टम ट्रांसलेशन पाइपलाइन बनाने में फंस जाते हैं। +बैकएंड कोड से सीधे अपने स्थानीयकरण इंजन को कॉल करें। वेबहुक डिलीवरी के साथ सिंक्रोनस और एसिंक स्थानीयकरण, प्रति लोकेल विफलता आइसोलेशन, और WebSocket के माध्यम से रियल-टाइम प्रगति। -Lingo.dev SDK रनटाइम पर कंटेंट को ट्रांसलेट करता है। कोई भी टेक्स्ट, ऑब्जेक्ट, या HTML पास करें और लोकलाइज़्ड वर्जन प्राप्त करें। रियल-टाइम चैट, डायनामिक नोटिफ़िकेशन, या डिप्लॉयमेंट के बाद आने वाले किसी भी कंटेंट के लिए काम करता है। JavaScript, PHP, Python, और Ruby के लिए उपलब्ध। - -**इंस्टॉलेशन:** - -```bash -npm install lingo.dev -``` - -**उपयोग:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**उपलब्ध SDK:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - वेब ऐप्स, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[डॉक्स पढ़ें →](https://lingo.dev/en/sdk) +[दस्तावेज़ पढ़ें →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React के लिए Lingo Compiler (अर्ली अल्फा) -पारंपरिक i18n दखल देने वाला है। आप हर स्ट्रिंग को `t()` फंक्शन में लपेटते हैं, ट्रांसलेशन कीज (`home.hero.title.v2`) बनाते हैं, समानांतर JSON फाइलें मेंटेन करते हैं, और अपने कंपोनेंट्स को स्थानीयकरण के boilerplate से भरा पाते हैं। यह इतना थकाऊ है कि टीमें अंतरराष्ट्रीयकरण को तब तक टालती हैं जब तक कि यह एक विशाल पुनर्रचना का कारण न बन जाए। +i18n रैपर्स के बिना बिल्ड-टाइम React स्थानीयकरण। सादे अंग्रेज़ी टेक्स्ट के साथ कंपोनेंट लिखें – कंपाइलर अनुवाद योग्य स्ट्रिंग्स का पता लगाता है और बिल्ड-टाइम पर स्थानीयकृत वैरिएंट जेनरेट करता है। कोई अनुवाद कुंजी नहीं, कोई JSON फ़ाइलें नहीं, कोई `t()` फ़ंक्शन नहीं। Next.js (App Router) और Vite + React का समर्थन करता है। -Lingo.dev Compiler औपचारिकता को समाप्त करता है। सादे अंग्रेजी टेक्स्ट के साथ React components लिखें। Compiler बिल्ड टाइम पर अनुवाद योग्य स्ट्रिंग्स का पता लगाता है और स्वचालित रूप से स्थानीयकृत वेरिएंट जेनरेट करता है। कोई keys नहीं, कोई JSON फ़ाइलें नहीं, कोई wrapper functions नहीं - बस React कोड जो कई भाषाओं में काम करता है। - -**इंस्टॉलेशन:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**प्रमाणीकरण:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**कॉन्फ़िगरेशन (Vite):** - -```ts -// 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 सेटअप:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**भाषा स्विचर:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**डेवलपमेंट:** `npm run dev` (pseudotranslator का उपयोग करता है, कोई API कॉल नहीं) - -**प्रोडक्शन:** `usePseudotranslator: false` सेट करें, फिर `next build` - -`.lingo/` डायरेक्टरी को version control में कमिट करें। - -**मुख्य विशेषताएं:** - -- शून्य रनटाइम प्रदर्शन लागत -- कोई ट्रांसलेशन कीज़ या JSON फाइलें नहीं -- कोई `t()` फंक्शन या `` wrapper कंपोनेंट्स नहीं -- JSX में ट्रांसलेटेबल टेक्स्ट का स्वचालित पता लगाना -- TypeScript का समर्थन -- बहुवचन हेतु ICU MessageFormat -- `data-lingo-override` एट्रीब्यूट के माध्यम से मैनुअल overrides -- इनबिल्ट ट्रांसलेशन एडिटर विजेट - -**बिल्ड मोड:** - -- `pseudotranslator`: प्लेसहोल्डर अनुवादों के साथ डेवलपमेंट मोड (कोई API लागत नहीं) -- `real`: LLMs का उपयोग करके वास्तविक अनुवाद उत्पन्न करें -- `cache-only`: CI से पूर्व-निर्मित अनुवादों के साथ प्रोडक्शन मोड (कोई API कॉल नहीं) - -**समर्थित frameworks:** - -- Next.js (React Server Components के साथ App Router) -- Vite + React (SPA और SSR) - -अतिरिक्त framework समर्थन योजनाबद्ध है। - -[दस्तावेज़ पढ़ें →](https://lingo.dev/en/compiler) +[दस्तावेज़ पढ़ें →](https://lingo.dev/en/docs/react/compiler) --- @@ -469,20 +142,20 @@ export function LanguageSwitcher() { योगदान का स्वागत है। कृपया इन दिशानिर्देशों का पालन करें: -1. **इश्यू:** [बग रिपोर्ट करें या फीचर मांगे](https://github.com/lingodotdev/lingo.dev/issues) +1. **इश्यूज़:** [बग रिपोर्ट करें या फ़ीचर का अनुरोध करें](https://github.com/lingodotdev/lingo.dev/issues) 2. **पुल रिक्वेस्ट:** [परिवर्तन सबमिट करें](https://github.com/lingodotdev/lingo.dev/pulls) - - हर PR के लिए चेंजसेट अनिवार्य: `pnpm new` (या गैर-रिलीज संशोधन के लिए `pnpm new:empty`) - - सबमिट करने से पहले जांचें कि सभी टेस्ट पास हों -3. **डेवलपमेंट:** यह एक pnpm + turborepo मोनोरेपो है - - डिपेंडेंसी इंस्टॉल करें: `pnpm install` + - हर PR के लिए चेंजसेट आवश्यक है: `pnpm new` (या गैर-रिलीज़ परिवर्तनों के लिए `pnpm new:empty`) + - सबमिट करने से पहले सुनिश्चित करें कि टेस्ट पास हों +3. **विकास:** यह एक pnpm + turborepo मोनोरेपो है + - डिपेंडेंसीज़ इंस्टॉल करें: `pnpm install` - टेस्ट चलाएं: `pnpm test` - बिल्ड करें: `pnpm build` -**सपोर्ट:** [Discord कम्युनिटी](https://lingo.dev/go/discord) +**सहायता:** [Discord समुदाय](https://lingo.dev/go/discord) ## स्टार हिस्ट्री -यदि आपको Lingo.dev उपयोगी लगता है, तो हमें एक स्टार दें और 10,000 स्टार तक पहुंचने में हमारी मदद करें! +अगर आपको Lingo.dev उपयोगी लगता है, तो हमें एक स्टार दें और 10,000 स्टार तक पहुंचने में हमारी मदद करें! [ @@ -490,7 +163,7 @@ export function LanguageSwitcher() { ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## स्थानीयकृत डॉक्यूमेंटेशन +## स्थानीयकृत दस्तावेज़ीकरण **उपलब्ध अनुवाद:** @@ -498,12 +171,5 @@ export function LanguageSwitcher() { **नई भाषा जोड़ना:** -1. [`i18n.json`](./i18n.json) में [BCP-47 फॉर्मेट](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) का उपयोग करके लोकेल कोड जोड़ें -2. एक पुल रिक्वेस्ट सबमिट करें - -**BCP-47 लोकेल फॉर्मेट:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (लोअरकेस): `en`, `zh`, `bho` -- `Script`: ISO 15924 (टाइटल केस): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (अपरकेस): `US`, `CN`, `IN` -- उदाहरण: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 प्रारूप](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) का उपयोग करके [`i18n.json`](./i18n.json) में लोकेल कोड जोड़ें +2. पुल रिक्वेस्ट सबमिट करें diff --git a/readme/it.md b/readme/it.md index 67d51c488..059b986fa 100644 --- a/readme/it.md +++ b/readme/it.md @@ -3,23 +3,27 @@ Lingo.dev

- Lingo.dev - Toolkit i18n open-source per la localizzazione basata su LLM + Strumenti open-source di ingegneria della localizzazione. Connettiti alla + piattaforma di ingegneria della localizzazione Lingo.dev per traduzioni + coerenti e di qualità.


- MCPCLI • - CI/CDSDK • - Compiler + API Lingo • + Lingo React MCP • + CLI Lingo • + Azione GitHub Lingo • + Compilatore Lingo per React (Alpha iniziale)

@@ -71,167 +75,43 @@ ## Quick start -| Tool | Caso d'uso | Comando rapido | -| ---------------------------------- | ------------------------------------------------------ | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | Setup i18n assistito da AI per app React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Traduci file JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Pipeline di traduzione automatizzata in GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Traduzione runtime per contenuti dinamici | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | Localizzazione React a build-time senza wrapper i18n | Plugin `withLingo()` | +| Strumento | Cosa fa | Comando rapido | +| ----------------------------------------------------- | -------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Configurazione i18n assistita da AI per app React | Prompt: `Set up i18n` | +| [**CLI Lingo**](#lingodev-cli) | Localizza file JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**Azione GitHub Lingo**](#lingodev-cicd) | Localizzazione continua in GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Compilatore Lingo per React**](#lingodev-compiler) | Localizzazione React in fase di build senza wrapper i18n | Plugin `withLingo()` | ---- - -### Lingo.dev MCP - -Configurare l'i18n nelle app React è notoriamente soggetto a errori, anche per sviluppatori esperti. Gli assistenti di codifica AI peggiorano la situazione: allucinano API inesistenti, dimenticano configurazioni middleware, rompono il routing o implementano metà soluzione prima di perdersi. Il problema è che la configurazione i18n richiede una sequenza precisa di modifiche coordinate su più file (routing, middleware, componenti, configurazione) e gli LLM faticano a mantenere quel contesto. - -Lingo.dev MCP risolve questo problema fornendo agli assistenti AI accesso strutturato alla conoscenza i18n specifica per framework. Invece di indovinare, il tuo assistente segue pattern di implementazione verificati per Next.js, React Router e TanStack Start. - -**IDE supportati:** +### Motori di localizzazione -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +Questi strumenti si connettono ai [motori di localizzazione](https://lingo.dev) – API di traduzione stateful che crei sulla piattaforma di ingegneria della localizzazione Lingo.dev. Ogni motore conserva glossari, tono di marca e istruzioni per locale in ogni richiesta, [riducendo gli errori terminologici del 16,6–44,6%](https://lingo.dev/research/retrieval-augmented-localization). Oppure [porta il tuo LLM](#lingodev-cli). -**Framework supportati:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Utilizzo:** - -Dopo aver configurato il server MCP nel tuo IDE ([vedi guide rapide](https://lingo.dev/en/mcp)), richiedi al tuo assistente: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -L'assistente: +--- -1. Configurare il routing basato su locale (es. `/en`, `/es`, `/pt-BR`) -2. Configurare i componenti per la selezione lingua -3. Implementare il rilevamento automatico del locale -4. Generare i file di configurazione necessari +### Lingo.dev MCP -**Nota:** la generazione di codice assistita da AI è non deterministica. Rivedi il codice generato prima di committare. +Configurare i18n nelle app React è soggetto a errori – anche gli assistenti di codifica AI allucinano API inesistenti e rompono il routing. Lingo.dev MCP fornisce agli assistenti AI accesso strutturato alla conoscenza i18n specifica per framework come Next.js, React Router e TanStack Start. Funziona con Claude Code, Cursor, GitHub Copilot Agents e Codex. [Leggi la documentazione →](https://lingo.dev/en/mcp) --- -### Lingo.dev CLI +### CLI Lingo.dev -Mantenere le traduzioni sincronizzate è tedioso. Aggiungi una nuova stringa, dimentichi di tradurla, rilasci un'interfaccia rotta agli utenti internazionali. Oppure invii file JSON ai traduttori, aspetti giorni, poi unisci manualmente il loro lavoro. Scalare a oltre 10 lingue significa gestire centinaia di file che costantemente vanno fuori sincronia. - -Lingo.dev CLI automatizza questo processo. Puntalo ai tuoi file di traduzione, esegui un comando e ogni locale si aggiorna. Un lockfile traccia ciò che è già tradotto, quindi paghi solo per contenuti nuovi o modificati. Supporta file JSON, YAML, CSV, PO e markdown. - -**Setup:** +Localizza file JSON, YAML, markdown, CSV e PO con un solo comando. Un lockfile tiene traccia di ciò che è già localizzato – solo i contenuti nuovi o modificati vengono elaborati. Utilizza di default il tuo motore di localizzazione su Lingo.dev, oppure porta il tuo LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Come funziona:** - -1. Estrae i contenuti traducibili dai file configurati -2. Invia i contenuti al provider LLM per la traduzione -3. Scrive i contenuti tradotti nel filesystem -4. Crea il file `i18n.lock` per tracciare le traduzioni completate (evita elaborazioni ridondanti) - -**Configurazione:** - -Il comando `init` genera un file `i18n.json`. Configura localizzazioni e bucket: - -```json -{ - "$schema": "https://lingo.dev/schema/i18n.json", - "version": "1.10", - "locale": { - "source": "en", - "targets": ["es", "fr", "de"] - }, - "buckets": { - "json": { - "include": ["locales/[locale].json"] - } - } -} -``` - -Il campo `provider` è opzionale (predefinito Lingo.dev Engine). Per provider LLM personalizzati: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Provider LLM supportati:** - -- Lingo.dev Engine (consigliato) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Leggi la documentazione →](https://lingo.dev/en/cli) +[Leggi la documentazione →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Le traduzioni sono la funzionalità che è sempre "quasi pronta". Gli sviluppatori fanno il merge del codice senza aggiornare le locale. Il QA scopre le traduzioni mancanti in staging - o peggio, gli utenti le scoprono in produzione. La causa principale: la traduzione è un passaggio manuale facile da saltare sotto la pressione delle scadenze. - -Lingo.dev CI/CD rende le traduzioni automatiche. Ogni push attiva la traduzione. Le stringhe mancanti vengono completate prima che il codice raggiunga la produzione. Non serve disciplina - la pipeline se ne occupa. - -**Piattaforme supportate:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**Setup GitHub Actions:** - -Crea `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Requisiti di setup:** - -1. Aggiungi `LINGODOTDEV_API_KEY` ai secret del repository (Impostazioni > Secrets and variables > Actions) -2. Per workflow PR: Abilita "Allow GitHub Actions to create and approve pull requests" in Impostazioni > Actions > General - -**Opzioni workflow:** - -Committa le traduzioni direttamente: +Localizzazione continua nella tua pipeline. Ogni push attiva la localizzazione: le stringhe mancanti vengono completate prima che il codice arrivi in produzione. Supporta GitHub Actions, GitLab CI/CD e Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,239 +119,33 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Crea pull request con le traduzioni: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Input disponibili:** - -| Input | Default | Descrizione | -| -------------------- | ---------------------------------------------- | ----------------------------------------- | -| `api-key` | (obbligatorio) | Chiave API Lingo.dev | -| `pull-request` | `false` | Crea PR invece di committare direttamente | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Messaggio di commit personalizzato | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Titolo PR personalizzato | -| `working-directory` | `"."` | Directory su cui operare | -| `parallel` | `false` | Abilita elaborazione parallela | - -[Leggi la documentazione →](https://lingo.dev/en/ci/github) +[Leggi la documentazione →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -I file di traduzione statici funzionano per le etichette UI, ma cosa succede con i contenuti generati dagli utenti? Messaggi di chat, descrizioni di prodotti, ticket di supporto - contenuti che non esistono al momento della build non possono essere pre-tradotti. Rimani bloccato mostrando testo non tradotto o costruendo una pipeline di traduzione personalizzata. +Chiama il tuo motore di localizzazione direttamente dal codice backend. Localizzazione sincrona e asincrona con consegna webhook, isolamento dei fallimenti per locale e avanzamento in tempo reale tramite WebSocket. -Lingo.dev SDK traduce i contenuti a runtime. Passa qualsiasi testo, oggetto o HTML e ottieni una versione localizzata. Funziona per chat in tempo reale, notifiche dinamiche o qualsiasi contenuto che arriva dopo il deployment. Disponibile per JavaScript, PHP, Python e Ruby. - -**Installazione:** - -```bash -npm install lingo.dev -``` - -**Utilizzo:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**SDK disponibili:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - App web, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[Leggi la documentazione →](https://lingo.dev/en/sdk) +[Leggi la documentazione →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### Lingo Compiler per React (Alpha iniziale) -L'i18n tradizionale è invasivo. Devi avvolgere ogni stringa in funzioni `t()`, inventare chiavi di traduzione (`home.hero.title.v2`), mantenere file JSON paralleli e vedere i componenti gonfiarsi con boilerplate di localizzazione. È così tedioso che i team rimandano l'internazionalizzazione finché non diventa un refactoring massivo. +Localizzazione React a tempo di build senza wrapper i18n. Scrivi componenti con testo in inglese semplice: il compilatore rileva le stringhe traducibili e genera varianti localizzate a tempo di build. Niente chiavi di traduzione, niente file JSON, niente funzioni `t()`. Supporta Next.js (App Router) e Vite + React. -Lingo.dev Compiler elimina le cerimonie. Scrivi componenti React con testo in inglese semplice. Il compiler rileva le stringhe traducibili al momento della build e genera automaticamente le varianti localizzate. Niente chiavi, niente file JSON, niente funzioni wrapper - solo codice React che funziona in più lingue. - -**Installazione:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Autenticazione:** - -```bash -# 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 -``` - -**Configurazione (Next.js):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Configurazione (Vite):** - -```ts -// 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(), - ], -}); -``` - -**Setup del provider:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Selettore lingua:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Sviluppo:** `npm run dev` (usa pseudotranslator, nessuna chiamata API) - -**Produzione:** Imposta `usePseudotranslator: false`, poi `next build` - -Committa la directory `.lingo/` nel version control. - -**Caratteristiche principali:** - -- Nessun costo di performance a runtime -- Nessuna chiave di traduzione o file JSON -- Nessuna funzione `t()` o componente wrapper `` -- Rilevamento automatico del testo traducibile in JSX -- Supporto TypeScript -- ICU MessageFormat per i plurali -- Override manuali tramite attributo `data-lingo-override` -- Editor di traduzione integrato - -**Modalità di build:** - -- `pseudotranslator`: Modalità sviluppo con traduzioni placeholder (nessun costo API) -- `real`: Genera traduzioni reali utilizzando LLM -- `cache-only`: Modalità produzione utilizzando traduzioni pre-generate dalla CI (nessuna chiamata API) - -**Framework supportati:** - -- Next.js (App Router con React Server Components) -- Vite + React (SPA e SSR) - -Supporto per framework aggiuntivi in programma. - -[Leggi la documentazione →](https://lingo.dev/en/compiler) +[Leggi la documentazione →](https://lingo.dev/en/docs/react/compiler) --- -## Contribuire +## Come contribuire -I contributi sono benvenuti. Si prega di seguire queste linee guida: +I contributi sono benvenuti. Segui queste linee guida: -1. **Issue:** [Segnala bug o richiedi funzionalità](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull request:** [Invia modifiche](https://github.com/lingodotdev/lingo.dev/pulls) - - Ogni PR richiede un changeset: `pnpm new` (o `pnpm new:empty` per modifiche non di release) +1. **Segnalazioni:** [Segnala bug o richiedi funzionalità](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Request:** [Invia modifiche](https://github.com/lingodotdev/lingo.dev/pulls) + - Ogni PR richiede un changeset: `pnpm new` (o `pnpm new:empty` per modifiche che non richiedono rilascio) - Assicurati che i test passino prima di inviare 3. **Sviluppo:** Questo è un monorepo pnpm + turborepo - Installa le dipendenze: `pnpm install` @@ -480,30 +154,23 @@ I contributi sono benvenuti. Si prega di seguire queste linee guida: **Supporto:** [Community Discord](https://lingo.dev/go/discord) -## Cronologia stelle +## Storico delle stelle -Se trovi Lingo.dev utile, lasciaci una stella e aiutaci a raggiungere 10.000 stelle! +Se trovi Lingo.dev utile, regalaci una stella e aiutaci a raggiungere 10.000 stelle! [ -![Grafico cronologia stelle](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Grafico storico delle stelle](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## Documentazione localizzata +## Documentazione Localizzata **Traduzioni disponibili:** [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**Aggiungere una nuova lingua:** +**Aggiunta di una nuova lingua:** 1. Aggiungi il codice locale a [`i18n.json`](./i18n.json) utilizzando il [formato BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) 2. Invia una pull request - -**Formato locale BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (minuscolo): `en`, `zh`, `bho` -- `Script`: ISO 15924 (maiuscolo iniziale): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (maiuscolo): `US`, `CN`, `IN` -- Esempi: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/ja.md b/readme/ja.md index 93b34b015..43d66d4f9 100644 --- a/readme/ja.md +++ b/readme/ja.md @@ -3,24 +3,27 @@ Lingo.dev

- Lingo.dev - - LLMベースのローカライゼーションのためのオープンソースi18nツールキット + オープンソースのローカライゼーションエンジニアリングツール。Lingo.devローカライゼーションエンジニアリングプラットフォームに接続して、一貫性のある高品質な翻訳を実現します。


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + + Lingo Compiler for React(アーリーアルファ版) +

@@ -72,51 +75,22 @@ ## クイックスタート -| ツール | ユースケース | クイックコマンド | -| ---------------------------------- | --------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | ReactアプリのAI支援i18nセットアップ | プロンプト: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON、YAML、Markdown、CSV、POファイルの翻訳 | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actionsでの自動翻訳パイプライン | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | 動的コンテンツのランタイム翻訳 | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18nラッパーなしのビルド時Reactローカライゼーション | `withLingo()`プラグイン | - ---- - -### Lingo.dev MCP - -Reactアプリでi18nを設定することは、経験豊富な開発者にとってもエラーが発生しやすいことで知られています。AIコーディングアシスタントはこれをさらに悪化させます。存在しないAPIを幻覚し、ミドルウェア設定を忘れ、ルーティングを壊したり、迷子になる前に半分の解決策を実装したりします。問題は、i18nのセットアップには複数のファイル(ルーティング、ミドルウェア、コンポーネント、設定)にわたる正確な一連の協調的な変更が必要であり、LLMがそのコンテキストを維持するのに苦労することです。 +| ツール | 機能 | クイックコマンド | +| -------------------------------------------------- | --------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | ReactアプリのAI支援i18nセットアップ | プロンプト: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON、YAML、Markdown、CSV、POファイルをローカライズ | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actionsでの継続的ローカライゼーション | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18nラッパー不要のビルド時Reactローカライゼーション | `withLingo()`プラグイン | -Lingo.dev MCPは、AIアシスタントにフレームワーク固有のi18n知識への構造化されたアクセスを提供することで、この問題を解決します。推測する代わりに、アシスタントはNext.js、React Router、TanStack Start向けの検証済み実装パターンに従います。 +### ローカライゼーションエンジン -**対応IDE:** +これらのツールは[ローカライゼーションエンジン](https://lingo.dev)に接続します。Lingo.devローカライゼーションエンジニアリングプラットフォーム上で作成するステートフルな翻訳APIです。各エンジンはすべてのリクエストにわたって用語集、ブランドボイス、ロケールごとの指示を保持し、[用語エラーを16.6~44.6%削減](https://lingo.dev/research/retrieval-augmented-localization)します。または[独自のLLMを使用](#lingodev-cli)することも可能です。 -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) - -**対応フレームワーク:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**使用方法:** - -IDE でMCPサーバーを設定した後([クイックスタートガイドを参照](https://lingo.dev/en/mcp))、アシスタントに次のようにプロンプトします: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -アシスタントは以下を実行します: +--- -1. ロケールベースのルーティングを設定(例: `/en`、`/es`、`/pt-BR`) -2. 言語切り替えコンポーネントをセットアップ -3. 自動ロケール検出を実装 -4. 必要な設定ファイルを生成 +### Lingo.dev MCP -**注意:** AI支援によるコード生成は非決定的です。コミット前に生成されたコードを確認してください。 +ReactアプリでのI18nセットアップはエラーが発生しやすく、AIコーディングアシスタントでさえ存在しないAPIを幻覚し、ルーティングを破壊することがあります。Lingo.dev MCPは、Next.js、React Router、TanStack Start向けのフレームワーク固有のi18n知識へのアクセスをAIアシスタントに提供します。Claude Code、Cursor、GitHub Copilot Agents、Codexで動作します。 [ドキュメントを読む →](https://lingo.dev/en/mcp) @@ -124,115 +98,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -翻訳を同期し続けることは面倒です。新しい文字列を追加し、翻訳を忘れ、国際ユーザーに壊れたUIを提供してしまいます。または、JSONファイルを翻訳者に送り、数日待ってから、手動で彼らの作業をマージし直します。10以上の言語にスケールすることは、常に同期がずれる数百のファイルを管理することを意味します。 - -Lingo.dev CLIはこれを自動化します。翻訳ファイルを指定し、1つのコマンドを実行すると、すべてのロケールが更新されます。ロックファイルが既に翻訳されたものを追跡するため、新しいコンテンツまたは変更されたコンテンツに対してのみ支払います。JSON、YAML、CSV、POファイル、およびマークダウンに対応しています。 - -**セットアップ:** +1つのコマンドでJSON、YAML、Markdown、CSV、POファイルをローカライズ。ロックファイルがすでにローカライズされた内容を追跡し、新規または変更されたコンテンツのみが処理されます。デフォルトではLingo.dev上のローカライゼーションエンジンを使用しますが、独自のLLM(OpenAI、Anthropic、Google、Mistral、OpenRouter、Ollama)も使用可能です。 ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**仕組み:** - -1. 設定されたファイルから翻訳可能なコンテンツを抽出 -2. LLMプロバイダーにコンテンツを送信して翻訳 -3. 翻訳されたコンテンツをファイルシステムに書き戻し -4. 翻訳の完了を追跡するための`i18n.lock`ファイルを作成(冗長な処理を回避) - -**設定:** - -`init`コマンドは`i18n.json`ファイルを生成します。ロケールとバケットを設定してください: - -```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プロバイダーの場合: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**サポートされているLLMプロバイダー:** - -- Lingo.dev Engine(推奨) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ドキュメントを読む →](https://lingo.dev/en/cli) +[ドキュメントを読む →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -翻訳は常に「もうすぐ完成」の機能です。エンジニアはロケールを更新せずにコードをマージします。QAはステージング環境で翻訳の欠落を発見します。さらに悪い場合は、ユーザーが本番環境で発見します。根本原因は、翻訳が締め切りのプレッシャー下でスキップしやすい手動ステップであることです。 - -Lingo.dev CI/CDは翻訳を自動化します。すべてのプッシュが翻訳をトリガーします。欠落している文字列はコードが本番環境に到達する前に補完されます。規律は不要です。パイプラインが処理します。 - -**サポートされているプラットフォーム:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actionsのセットアップ:** - -`.github/workflows/translate.yml`を作成: - -```yaml -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 }} -``` - -**セットアップ要件:** - -1. リポジトリのシークレット(Settings > Secrets and variables > Actions)に`LINGODOTDEV_API_KEY`を追加 -2. PRワークフローの場合: Settings > Actions > Generalで「Allow GitHub Actions to create and approve pull requests」を有効化 - -**ワークフローオプション:** - -翻訳を直接コミット: +パイプラインでの継続的ローカライゼーション。プッシュごとにローカライゼーションが実行され、コードが本番環境に到達する前に未翻訳の文字列が補完されます。GitHub Actions、GitLab CI/CD、Bitbucket Pipelinesに対応しています。 ```yaml uses: lingodotdev/lingo.dev@main @@ -240,250 +119,44 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -翻訳を含むプルリクエストを作成: - -```yaml -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` | 並列処理を有効化 | - -[ドキュメントを読む →](https://lingo.dev/en/ci/github) +[ドキュメントを読む →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK - -静的な翻訳ファイルはUIラベルには有効ですが、ユーザー生成コンテンツはどうでしょうか?チャットメッセージ、商品説明、サポートチケットなど、ビルド時に存在しないコンテンツは事前翻訳できません。未翻訳のテキストを表示するか、カスタム翻訳パイプラインを構築するしかありません。 - -Lingo.dev SDKは実行時にコンテンツを翻訳します。任意のテキスト、オブジェクト、HTMLを渡すと、ローカライズされたバージョンが返されます。リアルタイムチャット、動的通知、またはデプロイ後に到着するあらゆるコンテンツに対応します。JavaScript、PHP、Python、Rubyで利用可能です。 - -**インストール:** - -```bash -npm install lingo.dev -``` - -**使用方法:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**利用可能なSDK:** +### Lingo.dev API -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Webアプリ、Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP、Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django、Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails +バックエンドコードから直接ローカライゼーションエンジンを呼び出せます。Webhook配信による同期・非同期ローカライゼーション、ロケールごとの障害分離、WebSocketによるリアルタイム進捗確認が可能です。 -[ドキュメントを読む →](https://lingo.dev/en/sdk) +[ドキュメントを読む →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler - -従来のi18nは侵襲的です。すべての文字列を`t()`関数でラップし、翻訳キー(`home.hero.title.v2`)を作って、並列JSONファイルを管理し、ローカリゼーション用の定型コードでコンポーネントが肥大化していくのを見守ることになります。あまりにも面倒なので、チームは国際化を後回しにし、その結果大規模なリファクタリングになりがちです。 - -Lingo.devコンパイラーは煩雑な作業を排除します。プレーンな英語テキストでReactコンポーネントを記述できます。コンパイラーはビルド時に翻訳可能な文字列を検出し、ローカライズされたバリアントを自動的に生成します。キー、JSONファイル、ラッパー関数は不要です。複数の言語で動作するReactコードを記述するだけです。 - -**インストール:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**認証:** - -```bash -# 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):** +### Lingo Compiler for React(アルファ版) -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; +i18nラッパーなしでビルド時にReactをローカライズ。プレーンな英語テキストでコンポーネントを記述すると、コンパイラが翻訳可能な文字列を検出し、ビルド時にローカライズされたバリアントを生成します。翻訳キー、JSONファイル、`t()`関数は不要です。Next.js(App Router)およびVite + Reactに対応しています。 -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**設定(Vite):** - -```ts -// 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(), - ], -}); -``` - -**プロバイダーのセットアップ:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**言語切り替え:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**開発環境:** `npm run dev`(疑似翻訳を使用、APIコール不要) - -**本番環境:** `usePseudotranslator: false`を設定後、`next build`を実行 - -`.lingo/`ディレクトリをバージョン管理にコミットしてください。 - -**主な機能:** - -- 実行時パフォーマンスコストゼロ -- 翻訳キーやJSONファイル不要 -- `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) - -追加のフレームワークサポートを予定しています。 - -[ドキュメントを読む →](https://lingo.dev/en/compiler) +[ドキュメントを読む →](https://lingo.dev/en/docs/react/compiler) --- ## コントリビューション -コントリビューションを歓迎します。以下のガイドラインに従ってください。 +貢献を歓迎します。以下のガイドラインに従ってください: -1. **Issue:** [バグ報告・機能リクエスト](https://github.com/lingodotdev/lingo.dev/issues) -2. **プルリクエスト:** [変更の提出](https://github.com/lingodotdev/lingo.dev/pulls) - - すべてのPRにはchangesetが必要です: `pnpm new`(リリース対象外は`pnpm new:empty`) - - 提出前にテストが成功することを確認してください。 -3. **開発:** 本リポジトリはpnpm + turborepoのモノレポです。 - - 依存インストール: `pnpm install` - - テスト実行: `pnpm test` - - ビルド: `pnpm build` +1. **Issue:** [バグ報告や機能リクエスト](https://github.com/lingodotdev/lingo.dev/issues) +2. **プルリクエスト:** [変更を提出](https://github.com/lingodotdev/lingo.dev/pulls) + - すべてのPRにはchangesetが必要です:`pnpm new`(リリース対象外の変更の場合は`pnpm new:empty`) + - 提出前にテストが通ることを確認してください +3. **開発:** pnpm + turborepoモノレポです + - 依存関係のインストール:`pnpm install` + - テスト実行:`pnpm test` + - ビルド:`pnpm build` -**サポート:** [Discordコミュニティ](https://lingo.dev/go/discord) +**サポート:** [Discordコミュニティ](https://lingo.dev/go/discord) ## スター履歴 -Lingo.devが役に立つと思ったら、スターを付けて10,000スター達成にご協力ください! +Lingo.devが役に立ったら、スターをつけて10,000スター達成を支援してください! [ @@ -497,14 +170,7 @@ Lingo.devが役に立つと思ったら、スターを付けて10,000スター [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**新しい言語の追加:** - -1. [BCP-47形式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)でロケールコードを[i18n.json](./i18n.json)に追加してください (`i18n.json`) -2. プルリクエストを送信してください - -**BCP-47ロケール形式:** `language[-Script][-REGION]` +**新しい言語を追加する:** -- `language`: ISO 639-1/2/3(小文字): `en`、`zh`、`bho` -- `Script`: ISO 15924(タイトルケース): `Hans`、`Hant`、`Latn` -- `REGION`: ISO 3166-1 alpha-2(大文字): `US`、`CN`、`IN` -- 例: `en`、`pt-BR`、`zh-Hans`、`sr-Cyrl-RS` +1. [BCP-47形式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)を使用して、[`i18n.json`](./i18n.json)にロケールコードを追加 +2. プルリクエストを送信 diff --git a/readme/ko.md b/readme/ko.md index b8d0bbd68..4efe3911e 100644 --- a/readme/ko.md +++ b/readme/ko.md @@ -3,21 +3,26 @@ Lingo.dev

- Lingo.dev - LLM 기반 현지화를 위한 오픈소스 i18n 툴킷 + + 오픈소스 로컬라이제이션 엔지니어링 도구. Lingo.dev 로컬라이제이션 엔지니어링 + 플랫폼에 연결하여 일관되고 품질 높은 번역을 구현하세요. +


- MCPCLI • - CI/CDSDK • - 컴파일러 + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler for React (얼리 알파)

@@ -69,167 +74,43 @@ ## 빠른 시작 -| 도구 | 사용 사례 | 빠른 명령어 | -| ---------------------------------- | ----------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React 앱을 위한 AI 지원 i18n 설정 | 프롬프트: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, 마크다운, CSV, PO 파일 번역 | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions에서 자동화 번역 파이프라인 | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | 동적 콘텐츠를 위한 런타임 번역 | `npm install lingo.dev` | -| [**컴파일러**](#lingodev-compiler) | i18n 래퍼 없는 빌드 타임 React 현지화 | `withLingo()` 플러그인 | +| 도구 | 기능 | 빠른 명령어 | +| -------------------------------------------------- | ------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React 앱을 위한 AI 지원 i18n 설정 | 프롬프트: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, 마크다운, CSV, PO 파일 로컬라이제이션 | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions에서의 지속적 로컬라이제이션 | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n 래퍼 없이 빌드 타임 React 로컬라이제이션 | `withLingo()` 플러그인 | ---- - -### Lingo.dev MCP - -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) +이 도구들은 [로컬라이제이션 엔진](https://lingo.dev)에 연결됩니다 – Lingo.dev 로컬라이제이션 엔지니어링 플랫폼에서 생성하는 상태 유지형 번역 API입니다. 각 엔진은 모든 요청에서 용어집, 브랜드 보이스, 로케일별 지침을 유지하여 [용어 오류를 16.6–44.6% 감소](https://lingo.dev/research/retrieval-augmented-localization)시킵니다. 또는 [자체 LLM을 사용](#lingodev-cli)할 수 있습니다. -**지원 프레임워크:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**사용법:** - -IDE에서 MCP 서버를 구성한 후([빠른 시작 가이드 참조](https://lingo.dev/en/mcp)), 어시스턴트에게 다음과 같이 프롬프트하세요: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -어시스턴트는 다음을 수행합니다: +--- -1. 로케일 기반 라우팅 구성 (예: `/en`, `/es`, `/pt-BR`) -2. 언어 전환 컴포넌트 설정 -3. 자동 로케일 감지 구현 -4. 필요한 구성 파일 생성 +### Lingo.dev MCP -**참고:** AI 지원 코드 생성은 비결정적입니다. 커밋하기 전에 생성된 코드를 검토하세요. +React 앱에서 i18n을 설정하는 것은 오류가 발생하기 쉽습니다 – AI 코딩 어시스턴트조차 존재하지 않는 API를 환각하고 라우팅을 망가뜨립니다. Lingo.dev MCP는 AI 어시스턴트에게 Next.js, React Router, TanStack Start를 위한 프레임워크별 i18n 지식에 대한 구조화된 접근을 제공합니다. Claude Code, Cursor, GitHub Copilot Agents, Codex와 함께 작동합니다. -[문서 읽기 →](https://lingo.dev/en/mcp) +[문서 보기 →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -번역을 동기화 상태로 유지하는 것은 지루한 작업입니다. 새 문자열을 추가하고, 번역을 잊고, 국제 사용자에게 망가진 UI를 배포합니다. 또는 번역가에게 JSON 파일을 보내고, 며칠을 기다린 다음, 그들의 작업을 수동으로 다시 병합합니다. 10개 이상의 언어로 확장한다는 것은 지속적으로 동기화가 어긋나는 수백 개의 파일을 관리한다는 의미입니다. - -Lingo.dev CLI는 이를 자동화합니다. 번역 파일을 가리키고, 하나의 명령을 실행하면 모든 로케일이 업데이트됩니다. 잠금 파일이 이미 번역된 내용을 추적하므로 새롭거나 변경된 콘텐츠에 대해서만 비용을 지불합니다. JSON, YAML, CSV, PO 파일 및 마크다운을 지원합니다. - -**설정:** +단일 명령어로 JSON, YAML, 마크다운, CSV, PO 파일을 로컬라이제이션하세요. 잠금 파일이 이미 로컬라이제이션된 내용을 추적합니다 – 새롭거나 변경된 콘텐츠만 처리됩니다. 기본값은 Lingo.dev의 로컬라이제이션 엔진이며, 자체 LLM(OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)을 사용할 수도 있습니다. ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**작동 방식:** - -1. 구성된 파일에서 번역 가능한 콘텐츠 추출 -2. 번역을 위해 LLM 제공자에게 콘텐츠 전송 -3. 번역된 콘텐츠를 파일 시스템에 기록 -4. 완료된 번역 추적용 `i18n.lock` 파일 생성 (중복 처리 방지) - -**구성:** - -`init` 명령은 `i18n.json` 파일을 생성합니다. 로케일과 버킷을 구성하세요: - -```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 제공자 사용 시: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**지원되는 LLM 제공자:** - -- Lingo.dev Engine (권장) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[문서 읽기 →](https://lingo.dev/en/cli) +[문서 보기 →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -번역은 항상 "거의 완료된" 기능입니다. 엔지니어들은 로케일을 업데이트하지 않고 코드를 병합합니다. QA는 스테이징에서 누락된 번역을 발견하거나, 더 나쁜 경우 사용자가 프로덕션에서 발견합니다. 근본 원인: 번역은 마감 압박 속에서 쉽게 건너뛸 수 있는 수동 단계입니다. - -Lingo.dev CI/CD는 번역을 자동화합니다. 모든 푸시가 번역을 트리거합니다. 누락된 문자열은 코드가 프로덕션에 도달하기 전에 채워집니다. 규율이 필요 없습니다 - 파이프라인이 처리합니다. - -**지원되는 플랫폼:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions 설정:** - -`.github/workflows/translate.yml` 생성: - -```yaml -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 }} -``` - -**설정 요구사항:** - -1. `LINGODOTDEV_API_KEY`을(를) 저장소 시크릿(Settings > Secrets and variables > Actions)에 추가하세요 -2. PR 워크플로우의 경우: Settings > Actions > General에서 "Allow GitHub Actions to create and approve pull requests" 활성화 - -**워크플로우 옵션:** - -번역을 직접 커밋: +파이프라인에서 지속적인 현지화를 실현합니다. 모든 푸시마다 현지화가 자동으로 실행되어 누락된 문자열이 프로덕션 배포 전에 채워집니다. GitHub Actions, GitLab CI/CD, Bitbucket Pipelines을 지원합니다. ```yaml uses: lingodotdev/lingo.dev@main @@ -237,229 +118,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -번역이 포함된 풀 리퀘스트 생성: - -```yaml -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` | 병렬 처리 활성화 | - -[문서 읽기 →](https://lingo.dev/en/ci/github) +[문서 보기 →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -정적 번역 파일은 UI 레이블에는 적합하지만 사용자 생성 콘텐츠는 어떻게 할까요? 채팅 메시지, 제품 설명, 지원 티켓 등 빌드 시점에 존재하지 않는 콘텐츠는 사전 번역할 수 없습니다. 번역되지 않은 텍스트를 표시하거나 사용자 정의 번역 파이프라인을 구축해야 합니다. +백엔드 코드에서 현지화 엔진을 직접 호출할 수 있습니다. 웹훅 전달을 통한 동기 및 비동기 현지화, 로케일별 오류 격리, WebSocket을 통한 실시간 진행 상황 추적을 지원합니다. -Lingo.dev SDK는 런타임에 콘텐츠를 번역합니다. 텍스트, 객체 또는 HTML을 전달하면 현지화된 버전을 받습니다. 실시간 채팅, 동적 알림 또는 배포 후 도착하는 모든 콘텐츠에 사용할 수 있습니다. JavaScript, PHP, Python, Ruby에서 사용 가능합니다. - -**설치:** - -```bash -npm install lingo.dev -``` - -**사용법:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**사용 가능한 SDK:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - 웹 앱, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[문서 읽기 →](https://lingo.dev/en/sdk) +[문서 보기 →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React용 Lingo Compiler (얼리 알파) -기존 i18n은 침습적입니다. 모든 문자열을 `t()` 함수로 래핑하고, 번역 키(`home.hero.title.v2`)를 만들어야 하며, 병렬 JSON 파일을 관리하면서 현지화 보일러플레이트로 인해 컴포넌트가 비대해지는 것을 목격해야 합니다. 이 과정이 너무 번거로워서 팀들이 국제화를 대규모 리팩터링이 될 때까지 미루게 됩니다. +i18n 래퍼 없이 빌드 타임에 React 현지화를 수행합니다. 컴포넌트를 순수한 영어 텍스트로 작성하면 컴파일러가 번역 가능한 문자열을 감지하고 빌드 시점에 현지화된 버전을 생성합니다. 번역 키도, JSON 파일도, `t()` 함수도 필요 없습니다. Next.js (App Router) 및 Vite + React를 지원합니다. -Lingo.dev Compiler는 복잡한 절차를 제거합니다. 일반 영어 텍스트로 React 컴포넌트를 작성하세요. 컴파일러는 빌드 시점에 번역 가능한 문자열을 감지하고 자동으로 현지화된 변형을 생성합니다. 키도, JSON 파일도, 래퍼 함수도 필요 없습니다 - 그저 여러 언어로 작동하는 React 코드일 뿐입니다. - -**설치:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**인증:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**구성 (Vite):** - -```ts -// 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 설정:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**언어 전환기:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**개발:** `npm run dev` (의사 번역기 사용, API 호출 없음) - -**프로덕션:** `usePseudotranslator: false`를 설정한 후 `next build` 실행 - -`.lingo/` 디렉터리를 버전 관리에 커밋하세요. - -**주요 기능:** - -- 런타임 성능 비용 없음 -- 번역 키 또는 JSON 파일 불필요 -- `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) - -추가 프레임워크 지원이 계획되어 있습니다. - -[문서 읽기 →](https://lingo.dev/en/compiler) +[문서 보기 →](https://lingo.dev/en/docs/react/compiler) --- @@ -469,8 +144,8 @@ export function LanguageSwitcher() { 1. **이슈:** [버그 신고 또는 기능 요청](https://github.com/lingodotdev/lingo.dev/issues) 2. **풀 리퀘스트:** [변경 사항 제출](https://github.com/lingodotdev/lingo.dev/pulls) - - 모든 PR에는 changeset이 필요합니다: `pnpm new` (릴리스가 아닌 변경의 경우 `pnpm new:empty`) - - 제출 전 테스트 통과 여부 확인 + - 모든 PR에는 체인지셋이 필요합니다: `pnpm new` (릴리스가 아닌 변경 사항의 경우 `pnpm new:empty`) + - 제출 전 테스트가 통과하는지 확인하세요 3. **개발:** pnpm + turborepo 모노레포입니다 - 의존성 설치: `pnpm install` - 테스트 실행: `pnpm test` @@ -480,11 +155,11 @@ export function LanguageSwitcher() { ## 스타 히스토리 -Lingo.dev가 유용하다면 스타를 주시고 10,000개의 스타를 달성할 수 있도록 도와주세요! +Lingo.dev가 유용하다면 스타를 눌러주시고 10,000개 스타 달성을 도와주세요! [ -![스타 히스토리 차트](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -494,14 +169,7 @@ Lingo.dev가 유용하다면 스타를 주시고 10,000개의 스타를 달성 [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**새 언어 추가:** +**새 언어 추가하기:** 1. [BCP-47 형식](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)을 사용하여 [`i18n.json`](./i18n.json)에 로케일 코드를 추가하세요 2. 풀 리퀘스트를 제출하세요 - -**BCP-47 로케일 형식:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (소문자): `en`, `zh`, `bho` -- `Script`: ISO 15924 (첫 글자 대문자): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (대문자): `US`, `CN`, `IN` -- 예시: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/mr-IN.md b/readme/mr-IN.md index 6ca0c4510..59fd13909 100644 --- a/readme/mr-IN.md +++ b/readme/mr-IN.md @@ -3,21 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-आधारित स्थानिकीकरणासाठी ओपन-सोर्स i18n टूलकिट + + ओपन-सोर्स स्थानिकीकरण अभियांत्रिकी साधने. सुसंगत, दर्जेदार भाषांतरांसाठी + Lingo.dev स्थानिकीकरण अभियांत्रिकी प्लॅटफॉर्मशी कनेक्ट करा. +


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React साठी Lingo Compiler (प्रारंभिक अल्फा)

@@ -69,167 +74,43 @@ ## द्रुत प्रारंभ -| टूल | वापर प्रकरण | द्रुत कमांड | -| ---------------------------------- | ----------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React अॅप्ससाठी AI-सहाय्यित i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फाइल्सचे भाषांतर | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions मध्ये स्वयंचलित भाषांतर पाइपलाइन | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | डायनॅमिक कंटेंटसाठी रनटाइम भाषांतर | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n रॅपर्सशिवाय बिल्ड-टाइम React स्थानिकीकरण | `withLingo()` प्लगइन | +| साधन | काय करते | द्रुत कमांड | +| -------------------------------------------------- | -------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React अॅप्ससाठी AI-सहाय्यित i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फायलींचे स्थानिकीकरण | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions मध्ये सतत स्थानिकीकरण | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n रॅपर्सशिवाय बिल्ड-टाइम React स्थानिकीकरण | `withLingo()` प्लगइन | ---- - -### Lingo.dev MCP - -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) +ही साधने [स्थानिकीकरण इंजिन](https://lingo.dev) शी कनेक्ट होतात – तुम्ही Lingo.dev स्थानिकीकरण अभियांत्रिकी प्लॅटफॉर्मवर तयार केलेले स्टेटफुल भाषांतर API. प्रत्येक इंजिन प्रत्येक विनंतीमध्ये शब्दावली, ब्रँड व्हॉइस आणि प्रति-लोकेल सूचना टिकवून ठेवते, [परिभाषा त्रुटी 16.6–44.6% कमी करते](https://lingo.dev/research/retrieval-augmented-localization). किंवा [स्वतःचे LLM आणा](#lingodev-cli). -**समर्थित फ्रेमवर्क:** - -- Next.js (App Router आणि Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**वापर:** - -तुमच्या IDE मध्ये MCP सर्व्हर कॉन्फिगर केल्यानंतर ([क्विकस्टार्ट मार्गदर्शक पहा](https://lingo.dev/en/mcp)), तुमच्या असिस्टंटला प्रॉम्प्ट करा: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -असिस्टंट हे करेल: +--- -1. लोकेल-आधारित राउटिंग कॉन्फिगर करेल (उदा., `/en`, `/es`, `/pt-BR`) -2. भाषा स्विचिंग कंपोनेंट्स सेटअप करेल -3. स्वयंचलित लोकेल डिटेक्शन इम्प्लिमेंट करेल -4. आवश्यक कॉन्फिगरेशन फाइल्स जनरेट करेल +### Lingo.dev MCP -**टीप:** AI-असिस्टेड कोड जनरेशन नॉन-डिटर्मिनिस्टिक आहे. कमिट करण्यापूर्वी जनरेट केलेल्या कोडचे पुनरावलोकन करा. +React अॅप्समध्ये i18n सेटअप करणे त्रुटीप्रवण आहे – AI कोडिंग असिस्टंट देखील अस्तित्वात नसलेल्या API च्या भ्रमात पडतात आणि राउटिंग खराब करतात. Lingo.dev MCP AI असिस्टंट्सना Next.js, React Router आणि TanStack Start साठी फ्रेमवर्क-विशिष्ट i18n ज्ञानाची संरचित प्रवेश देते. Claude Code, Cursor, GitHub Copilot Agents आणि Codex सह कार्य करते. -[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/mcp) +[दस्तऐवज वाचा →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -अनुवाद सिंकमध्ये ठेवणे कंटाळवाणे आहे. तुम्ही नवीन स्ट्रिंग जोडता, ती अनुवादित करायला विसरता, आंतरराष्ट्रीय वापरकर्त्यांना खराब UI शिप करता. किंवा तुम्ही अनुवादकांना JSON फाइल्स पाठवता, दिवस वाट पाहता, नंतर त्यांचे काम मॅन्युअली परत मर्ज करता. 10+ भाषांपर्यंत स्केलिंग म्हणजे शेकडो फाइल्स व्यवस्थापित करणे ज्या सतत सिंकच्या बाहेर जातात. - -Lingo.dev CLI हे स्वयंचलित करते. तुमच्या अनुवाद फाइल्सकडे पॉइंट करा, एक कमांड चालवा आणि प्रत्येक लोकेल अपडेट होते. लॉकफाइल आधीच काय अनुवादित झाले आहे याचा मागोवा ठेवते, त्यामुळे तुम्ही फक्त नवीन किंवा बदललेल्या कंटेंटसाठी पैसे देता. JSON, YAML, CSV, PO फाइल्स आणि markdown सपोर्ट करते. - -**सेटअप:** +एका कमांडमध्ये JSON, YAML, markdown, CSV आणि PO फायलींचे स्थानिकीकरण करा. लॉकफाइल आधीच काय स्थानिकीकरण केले गेले आहे याचा मागोवा ठेवते – फक्त नवीन किंवा बदललेली सामग्री प्रक्रिया होते. Lingo.dev वर तुमच्या स्थानिकीकरण इंजिनला डिफॉल्ट करते, किंवा स्वतःचे LLM आणा (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**हे कसे कार्य करते:** - -1. कॉन्फिगर केलेल्या फाइल्समधून भाषांतरणयोग्य कंटेंट एक्स्ट्रॅक्ट करते -2. Anuvadasathi content LLM provider कडे पाठवते -3. अनुवादित कंटेंट फाइलसिस्टममध्ये परत लिहिते -4. पूर्ण झालेल्या अनुवादाचा मागोवा ठेवण्यासाठी `i18n.lock` फाइल तयार करते (अनावश्यक प्रोसेसिंग टाळते) - -**कॉन्फिगरेशन:** - -`init` कमांड `i18n.json` फाइल जनरेट करते. लोकेल्स आणि बकेट्स कॉन्फिगर करा: - -```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 प्रोव्हायडर्ससाठी: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**सपोर्ट केलेले LLM प्रोव्हायडर्स:** - -- Lingo.dev Engine (शिफारस केलेले) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/cli) +[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -अनुवाद हे असे फीचर आहे जे नेहमी "जवळजवळ पूर्ण" असते. इंजिनियर्स लोकेल्स अपडेट न करता कोड मर्ज करतात. QA ला स्टेजिंगमध्ये गहाळ अनुवाद सापडतात - किंवा त्याहून वाईट, युजर्सना प्रोडक्शनमध्ये सापडतात. मूळ कारण: अनुवाद ही एक मॅन्युअल स्टेप आहे जी डेडलाइनच्या दबावाखाली वगळणे सोपे असते. - -Lingo.dev CI/CD अनुवाद स्वयंचलित बनवते. प्रत्येक पुश अनुवाद ट्रिगर करते. कोड प्रोडक्शनमध्ये पोहोचण्यापूर्वी गहाळ स्ट्रिंग्स भरल्या जातात. शिस्तीची आवश्यकता नाही - पाइपलाइन ते हाताळते. - -**सपोर्ट केलेले प्लॅटफॉर्म्स:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions सेटअप:** - -`.github/workflows/translate.yml` तयार करा: - -```yaml -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 }} -``` - -**सेटअप आवश्यकता:** - -1. रिपॉझिटरी सीक्रेट्समध्ये `LINGODOTDEV_API_KEY` जोडा (Settings > Secrets and variables > Actions) -2. PR workflows साठी: Settings > Actions > General मध्ये "Allow GitHub Actions to create and approve pull requests" सक्षम करा - -**वर्कफ्लो पर्याय:** - -अनुवाद थेट कमिट करा: +तुमच्या पाइपलाइनमध्ये सतत स्थानिकीकरण. प्रत्येक पुश स्थानिकीकरण सुरू करतो – कोड प्रोडक्शनमध्ये पोहोचण्यापूर्वी गहाळ स्ट्रिंग्स भरल्या जातात. GitHub Actions, GitLab CI/CD आणि Bitbucket Pipelines ला समर्थन देतो. ```yaml uses: lingodotdev/lingo.dev@main @@ -237,229 +118,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -अनुवादांसह पुल रिक्वेस्ट तयार करा: - -```yaml -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` | पॅरलल प्रोसेसिंग सक्षम करा | - -[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/ci/github) +[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -स्टॅटिक ट्रान्सलेशन फाइल्स UI लेबल्ससाठी काम करतात, पण युजर-जनरेटेड कंटेंटचे काय? चॅट मेसेजेस, प्रॉडक्ट डिस्क्रिप्शन्स, सपोर्ट टिकिट्स - जे कंटेंट बिल्ड टाइमवर अस्तित्वात नसते ते प्री-ट्रान्सलेट केले जाऊ शकत नाही. तुम्हाला अनट्रान्सलेटेड टेक्स्ट दाखवावा लागतो किंवा कस्टम ट्रान्सलेशन पाइपलाइन तयार करावी लागते. +बॅकएंड कोडमधून थेट तुमचे स्थानिकीकरण इंजिन कॉल करा. वेबहुक डिलिव्हरीसह सिंक्रोनस आणि async स्थानिकीकरण, प्रत्येक लोकॅलसाठी फेल्युअर आयसोलेशन आणि WebSocket द्वारे रिअल-टाइम प्रोग्रेस. -Lingo.dev SDK रनटाइमवर कंटेंट ट्रान्सलेट करते. कोणताही टेक्स्ट, ऑब्जेक्ट किंवा HTML पास करा आणि लोकलाइज्ड व्हर्जन मिळवा. रिअल-टाइम चॅट, डायनॅमिक नोटिफिकेशन्स किंवा डिप्लॉयमेंटनंतर येणाऱ्या कोणत्याही कंटेंटसाठी काम करते. JavaScript, PHP, Python आणि Ruby साठी उपलब्ध. - -**इन्स्टॉलेशन:** - -```bash -npm install lingo.dev -``` - -**वापर:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**उपलब्ध SDK:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - वेब अॅप्स, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/sdk) +[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React साठी Lingo Compiler (अर्ली अल्फा) -पारंपारिक i18n आक्रमक आहे. तुम्ही प्रत्येक स्ट्रिंगला `t()` फंक्शन्समध्ये गुंडाळता, ट्रान्सलेशन की शोधता (`home.hero.title.v2`), समांतर JSON फाइल्स मेंटेन करता आणि लोकलायझेशन बोईलरप्लेटमुळे तुमचे कंपोनेंट्स फुगलेले बघता. हे इतके कंटाळवाणे आहे की टीम्स इंटरनॅशनलायझेशन पुढे ढकलतात तोपर्यंत की तो एक मोठा रिफॅक्टर होतो. +i18n रॅपर्सशिवाय बिल्ड-टाइम React स्थानिकीकरण. साध्या इंग्रजी मजकुरासह कंपोनेंट लिहा – कंपायलर अनुवादयोग्य स्ट्रिंग्स शोधतो आणि बिल्ड टाइमवर स्थानिकीकृत व्हेरिएंट्स तयार करतो. अनुवाद की नाहीत, JSON फाइल्स नाहीत, `t()` फंक्शन्स नाहीत. Next.js (App Router) आणि Vite + React ला समर्थन देतो. -Lingo.dev Compiler औपचारिकता काढून टाकतो. साध्या इंग्रजी मजकुरासह React कॉम्पोनेंट्स लिहा. कंपायलर बिल्ड टाइमवर भाषांतर करण्यायोग्य स्ट्रिंग्स शोधतो आणि आपोआप स्थानिकीकृत व्हेरिएंट्स जनरेट करतो. की नाहीत, JSON फाइल्स नाहीत, रॅपर फंक्शन्स नाहीत - फक्त React कोड जो अनेक भाषांमध्ये काम करतो. - -**इंस्टॉलेशन:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**ऑथेंटिकेशन:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**कॉन्फिगरेशन (Vite):** - -```ts -// 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(), - ], -}); -``` - -**प्रोव्हायडर सेटअप:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**भाषा स्विचर:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**डेव्हलपमेंट:** `npm run dev` (स्यूडोट्रान्सलेटर वापरतो, API कॉल्स नाहीत) - -**प्रोडक्शन:** `usePseudotranslator: false` सेट करा, नंतर `next build` - -`.lingo/` डिरेक्टरी व्हर्जन कंट्रोलमध्ये कमिट करा. - -**मुख्य वैशिष्ट्ये:** - -- रनटाइम परफॉर्मन्स कॉस्ट शून्य -- ट्रान्सलेशन की किंवा JSON फाइल्स नाहीत -- `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) - -अतिरिक्त फ्रेमवर्क सपोर्ट नियोजित आहे. - -[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/compiler) +[डॉक्युमेंटेशन वाचा →](https://lingo.dev/en/docs/react/compiler) --- @@ -467,20 +142,20 @@ export function LanguageSwitcher() { योगदानाचे स्वागत आहे. कृपया या मार्गदर्शक तत्त्वांचे पालन करा: -1. **समस्या:** [बग नोंदवा किंवा वैशिष्ट्यांची विनंती करा](https://github.com/lingodotdev/lingo.dev/issues) -2. **पुल रिक्वेस्ट:** [बदल सबमिट करा](https://github.com/lingodotdev/lingo.dev/pulls) - - प्रत्येक PR साठी एक चेंजसेट आवश्यक आहे: `pnpm new` (किंवा नॉन-रिलीज बदलांसाठी `pnpm new:empty`) - - सबमिट करण्यापूर्वी चाचण्या पास होतात याची खात्री करा +1. **इश्यूज:** [बग्स रिपोर्ट करा किंवा फीचर्सची विनंती करा](https://github.com/lingodotdev/lingo.dev/issues) +2. **पुल रिक्वेस्ट्स:** [बदल सबमिट करा](https://github.com/lingodotdev/lingo.dev/pulls) + - प्रत्येक PR साठी चेंजसेट आवश्यक आहे: `pnpm new` (किंवा नॉन-रिलीज बदलांसाठी `pnpm new:empty`) + - सबमिट करण्यापूर्वी टेस्ट्स पास होतात याची खात्री करा 3. **डेव्हलपमेंट:** हे pnpm + turborepo मोनोरेपो आहे - - डिपेंडन्सी इन्स्टॉल करा: `pnpm install` - - चाचण्या चालवा: `pnpm test` - - बिल्ड: `pnpm build` + - डिपेंडन्सी इंस्टॉल करा: `pnpm install` + - टेस्ट्स चालवा: `pnpm test` + - बिल्ड करा: `pnpm build` **सपोर्ट:** [Discord कम्युनिटी](https://lingo.dev/go/discord) ## स्टार हिस्ट्री -जर तुम्हाला Lingo.dev उपयुक्त वाटत असेल, तर आम्हाला स्टार द्या आणि 10,000 स्टार गाठण्यात आमची मदत करा! +Lingo.dev उपयुक्त वाटल्यास, आम्हाला स्टार द्या आणि आम्हाला 10,000 स्टार्स गाठण्यात मदत करा! [ @@ -488,7 +163,7 @@ export function LanguageSwitcher() { ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## स्थानिकीकृत डॉक्युमेंटेशन +## स्थानिकीकृत दस्तऐवजीकरण **उपलब्ध भाषांतरे:** @@ -496,12 +171,5 @@ export function LanguageSwitcher() { **नवीन भाषा जोडणे:** -1. [BCP-47 फॉरमॅट](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) वापरून [`i18n.json`](./i18n.json) मध्ये लोकेल कोड जोडा +1. [BCP-47 स्वरूप](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) वापरून [`i18n.json`](./i18n.json) मध्ये लोकेल कोड जोडा 2. पुल रिक्वेस्ट सबमिट करा - -**BCP-47 लोकेल फॉरमॅट:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (लोअरकेस): `en`, `zh`, `bho` -- `Script`: ISO 15924 (टायटल केस): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (अप्परकेस): `US`, `CN`, `IN` -- उदाहरणे: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/or-IN.md b/readme/or-IN.md index 04e69c4a6..8a95c70e9 100644 --- a/readme/or-IN.md +++ b/readme/or-IN.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-ଚାଳିତ ଲୋକାଲାଇଜେସନ୍ ପାଇଁ ଓପନ୍-ସୋର୍ସ i18n ଟୁଲକିଟ୍ + ମୁକ୍ତ-ଉତ୍ସ ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନିୟରିଂ ଉପକରଣ। ସ୍ଥିର, ଗୁଣବତ୍ତାପୂର୍ଣ୍ଣ ଅନୁବାଦ ପାଇଁ + Lingo.dev ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନିୟରିଂ ପ୍ଲାଟଫର୍ମ ସହ ସଂଯୋଗ କରନ୍ତୁ।


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React ପାଇଁ Lingo Compiler (ପ୍ରାରମ୍ଭିକ ଆଲଫା)

@@ -71,167 +74,43 @@ ## ଶୀଘ୍ର ଆରମ୍ଭ -| ଟୁଲ୍ | ବ୍ୟବହାର କେସ୍ | ଶୀଘ୍ର କମାଣ୍ଡ | -| ---------------------------------- | ------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React ଆପ୍ ପାଇଁ AI-ସହାୟକ i18n ସେଟଅପ୍ | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ଫାଇଲ୍ ଅନୁବାଦ କରନ୍ତୁ | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions ରେ ସ୍ୱୟଂଚାଳିତ ଅନୁବାଦ ପାଇପଲାଇନ୍ | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ଡାଇନାମିକ୍ କଣ୍ଟେଣ୍ଟ ପାଇଁ ରନଟାଇମ୍ ଅନୁବାଦ | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n ରାପର୍ ବିନା ବିଲ୍ଡ-ଟାଇମ୍ React ଲୋକାଲାଇଜେସନ୍ | `withLingo()` plugin | +| ଉପକରଣ | ଏହା କ'ଣ କରେ | ଶୀଘ୍ର କମାଣ୍ଡ | +| -------------------------------------------------- | ----------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React ଆପ୍‌ ପାଇଁ AI-ସହାୟତା ପ୍ରାପ୍ତ i18n ସେଟଅପ୍ | ପ୍ରମ୍ପଟ୍: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ଫାଇଲ୍ ସ୍ଥାନୀୟକରଣ କରନ୍ତୁ | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions ରେ ନିରନ୍ତର ସ୍ଥାନୀୟକରଣ | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n ରାପର୍ ବିନା ବିଲ୍ଡ-ଟାଇମ୍ React ସ୍ଥାନୀୟକରଣ | `withLingo()` ପ୍ଲଗଇନ୍ | ---- - -### Lingo.dev MCP - -React apps ରେ i18n ସେଟଅପ୍ କରିବା ଅତ୍ୟନ୍ତ ତ୍ରୁଟିପୂର୍ଣ୍ଣ - ଅଭିଜ୍ଞ ଡେଭଲପରମାନଙ୍କ ପାଇଁ ମଧ୍ୟ। AI କୋଡିଂ ଆସିଷ୍ଟାଣ୍ଟଗୁଡ଼ିକ ଏହାକୁ ଆହୁରି ଖରାପ କରିଦିଅନ୍ତି: ସେମାନେ ଅସ୍ତିତ୍ୱହୀନ APIs କୁ hallucinate କରନ୍ତି, middleware configurations ଭୁଲିଯାଆନ୍ତି, routing ଭାଙ୍ଗିଦିଅନ୍ତି, କିମ୍ବା ହଜିଯିବା ପୂର୍ବରୁ ଅଧା ସମାଧାନ implement କରନ୍ତି। ସମସ୍ୟା ହେଉଛି ଯେ i18n ସେଟଅପ୍ ଏକାଧିକ ଫାଇଲ୍ (routing, middleware, components, configuration) ମଧ୍ୟରେ ସମନ୍ୱିତ ପରିବର୍ତ୍ତନଗୁଡ଼ିକର ଏକ ସଠିକ୍ କ୍ରମ ଆବଶ୍ୟକ କରେ, ଏବଂ LLMs ସେହି context ବଜାୟ ରଖିବାରେ ସଂଘର୍ଷ କରନ୍ତି। - -Lingo.dev MCP AI ଆସିଷ୍ଟାଣ୍ଟମାନଙ୍କୁ framework-specific i18n ଜ୍ଞାନକୁ structured access ଦେଇ ଏହାର ସମାଧାନ କରେ। ଅନୁମାନ କରିବା ପରିବର୍ତ୍ତେ, ଆପଣଙ୍କର ଆସିଷ୍ଟାଣ୍ଟ Next.js, React Router, ଏବଂ TanStack Start ପାଇଁ verified implementation patterns ଅନୁସରଣ କରେ। - -**ସମର୍ଥିତ IDEs:** +### ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନ୍ -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +ଏହି ଉପକରଣଗୁଡ଼ିକ [ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନ୍](https://lingo.dev) ସହ ସଂଯୁକ୍ତ – ଆପଣ Lingo.dev ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନିୟରିଂ ପ୍ଲାଟଫର୍ମରେ ସୃଷ୍ଟି କରୁଥିବା ସ୍ଥିର ଅନୁବାଦ API। ପ୍ରତ୍ୟେକ ଇଞ୍ଜିନ୍ ସମସ୍ତ ଅନୁରୋଧରେ ଶବ୍ଦାବଳୀ, ବ୍ରାଣ୍ଡ ଭଏସ୍ ଏବଂ ପ୍ରତି-ଲୋକେଲ୍ ନିର୍ଦ୍ଦେଶନା ସଂରକ୍ଷଣ କରେ, [ଶବ୍ଦାବଳୀ ତ୍ରୁଟି 16.6–44.6% ହ୍ରାସ କରେ](https://lingo.dev/research/retrieval-augmented-localization)। କିମ୍ବା [ନିଜର LLM ଆଣନ୍ତୁ](#lingodev-cli)। -**ସମର୍ଥିତ frameworks:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**ବ୍ୟବହାର:** - -ଆପଣଙ୍କର IDE ରେ MCP server କନଫିଗର୍ କରିବା ପରେ ([quickstart guides ଦେଖନ୍ତୁ](https://lingo.dev/en/mcp)), ଆପଣଙ୍କର ଆସିଷ୍ଟାଣ୍ଟକୁ prompt କରନ୍ତୁ: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -ଆସିଷ୍ଟାଣ୍ଟ କରିବ: +--- -1. Locale-based routing କନଫିଗର୍ କରନ୍ତୁ (ଯଥା, `/en`, `/es`, `/pt-BR`) -2. Language switching components ସେଟଅପ୍ କରନ୍ତୁ -3. Automatic locale detection implement କରନ୍ତୁ -4. ଆବଶ୍ୟକ configuration ଫାଇଲ୍ generate କରନ୍ତୁ +### Lingo.dev MCP -**ଧ୍ୟାନ ଦିଅନ୍ତୁ:** AI-assisted କୋଡ୍ generation non-deterministic ଅଟେ। Commit କରିବା ପୂର୍ବରୁ generated କୋଡ୍ review କରନ୍ତୁ। +React ଆପ୍‌ରେ i18n ସେଟଅପ୍ କରିବା ତ୍ରୁଟିପ୍ରବଣ – AI କୋଡିଂ ସହାୟକମାନେ ମଧ୍ୟ ଅସ୍ତିତ୍ୱହୀନ API କଳ୍ପନା କରନ୍ତି ଏବଂ ରାଉଟିଂ ଭାଙ୍ଗନ୍ତି। Lingo.dev MCP AI ସହାୟକମାନଙ୍କୁ Next.js, React Router ଏବଂ TanStack Start ପାଇଁ framework-ନିର୍ଦ୍ଦିଷ୍ଟ i18n ଜ୍ଞାନର ସଂରଚିତ ପ୍ରବେଶ ପ୍ରଦାନ କରେ। Claude Code, Cursor, GitHub Copilot Agents ଏବଂ Codex ସହ କାମ କରେ। -[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/mcp) +[ଡକ୍ସ୍ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -ଅନୁବାଦଗୁଡ଼ିକୁ sync ରେ ରଖିବା କ୍ଲାନ୍ତିକର। ଆପଣ ଏକ ନୂଆ string ଯୋଡ଼ନ୍ତି, ଏହାକୁ ଅନୁବାଦ କରିବାକୁ ଭୁଲିଯାଆନ୍ତି, ଆନ୍ତର୍ଜାତୀୟ ବ୍ୟବହାରକାରୀଙ୍କୁ ଭଙ୍ଗା UI ship କରନ୍ତି। କିମ୍ବା ଆପଣ translators କୁ JSON ଫାଇଲ୍ ପଠାନ୍ତି, ଦିନେ ଅପେକ୍ଷା କରନ୍ତି, ତା'ପରେ manually ସେମାନଙ୍କର କାମକୁ ପୁଣି merge କରନ୍ତି। 10+ ଭାଷାକୁ scale କରିବାର ଅର୍ଥ ହେଉଛି ଶହ ଶହ ଫାଇଲ୍ manage କରିବା ଯାହା କ୍ରମାଗତ ଭାବରେ sync ବାହାରେ drift କରେ। - -Lingo.dev CLI ଏହାକୁ automate କରେ। ଏହାକୁ ଆପଣଙ୍କର translation ଫାଇଲ୍ ଆଡ଼କୁ point କରନ୍ତୁ, ଗୋଟିଏ command ଚଲାନ୍ତୁ, ଏବଂ ପ୍ରତ୍ୟେକ locale update ହୁଏ। ଏକ lockfile ଟ୍ରାକ୍ କରେ କ'ଣ ପୂର୍ବରୁ ଅନୁବାଦିତ ହୋଇଛି, ତେଣୁ ଆପଣ କେବଳ ନୂଆ କିମ୍ବା ପରିବର୍ତ୍ତିତ content ପାଇଁ ଦେୟ ଦିଅନ୍ତି। JSON, YAML, CSV, PO ଫାଇଲ୍, ଏବଂ markdown କୁ support କରେ। - -**ସେଟଅପ୍:** +ଗୋଟିଏ କମାଣ୍ଡରେ JSON, YAML, markdown, CSV ଏବଂ PO ଫାଇଲ୍ ସ୍ଥାନୀୟକରଣ କରନ୍ତୁ। ଗୋଟିଏ ଲକଫାଇଲ୍ ପୂର୍ବରୁ ସ୍ଥାନୀୟକୃତ ବିଷୟବସ୍ତୁ ଟ୍ରାକ୍ କରେ – କେବଳ ନୂତନ କିମ୍ବା ପରିବର୍ତ୍ତିତ ବିଷୟବସ୍ତୁ ପ୍ରକ୍ରିୟାକରଣ ହୁଏ। Lingo.dev ରେ ଆପଣଙ୍କ ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନ୍ କୁ ଡିଫଲ୍ଟ କରେ, କିମ୍ବା ନିଜର LLM ଆଣନ୍ତୁ (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)। ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**ଏହା କିପରି କାମ କରେ:** - -1. କନଫିଗର୍ କରାଯାଇଥିବା ଫାଇଲଗୁଡ଼ିକରୁ ଅନୁବାଦଯୋଗ୍ୟ କଣ୍ଟେଣ୍ଟ ବାହାର କରନ୍ତି -2. ଅନୁବାଦ ପାଇଁ LLM provider କୁ କଣ୍ଟେଣ୍ଟ ପଠାନ୍ତି -3. ଅନୁବାଦିତ କଣ୍ଟେଣ୍ଟକୁ filesystem ରେ ଲେଖନ୍ତି -4. ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଥିବା ଅନୁବାଦଗୁଡ଼ିକୁ ଟ୍ରାକ୍ କରିବା ପାଇଁ `i18n.lock` ଫାଇଲ୍ ସୃଷ୍ଟି କରନ୍ତି (ଅନାବଶ୍ୟକ ପ୍ରକ୍ରିୟାକରଣକୁ ଏଡ଼ାଇଥାଏ) - -**କନଫିଗରେସନ୍:** - -`init` କମାଣ୍ଡ ଏକ `i18n.json` ଫାଇଲ୍ ସୃଷ୍ଟି କରେ। locales ଏବଂ buckets କନଫିଗର୍ କରନ୍ତୁ: - -```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 ପାଇଁ: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**ସପୋର୍ଟ କରାଯାଉଥିବା LLM providers:** - -- Lingo.dev Engine (ସୁପାରିଶ କରାଯାଏ) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/cli) +[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -ଅନୁବାଦ ହେଉଛି ସେହି ଫିଚର୍ ଯାହା ସବୁବେଳେ "ପ୍ରାୟ ସମ୍ପୂର୍ଣ୍ଣ" ହୋଇଥାଏ। ଇଞ୍ଜିନିୟର୍‌ମାନେ locales ଅପଡେଟ୍ ନକରି କୋଡ୍ merge କରନ୍ତି। QA staging ରେ ହଜିଯାଇଥିବା ଅନୁବାଦ ଧରିଥାଏ - କିମ୍ବା ଆହୁରି ଖରାପ, ୟୁଜର୍‌ମାନେ production ରେ ସେଗୁଡ଼ିକୁ ଧରନ୍ତି। ମୂଳ କାରଣ: ଅନୁବାଦ ଏକ manual ପଦକ୍ଷେପ ଯାହା deadline pressure ରେ ଛାଡ଼ିବା ସହଜ। - -Lingo.dev CI/CD ଅନୁବାଦକୁ ସ୍ୱୟଂଚାଳିତ କରେ। ପ୍ରତ୍ୟେକ push ଅନୁବାଦ ଟ୍ରିଗର୍ କରେ। କୋଡ୍ production ରେ ପହଞ୍ଚିବା ପୂର୍ବରୁ ହଜିଯାଇଥିବା strings ପୂରଣ ହୋଇଯାଏ। କୌଣସି ଅନୁଶାସନ ଆବଶ୍ୟକ ନାହିଁ - pipeline ଏହାକୁ ସମ୍ଭାଳେ। - -**ସପୋର୍ଟ କରାଯାଉଥିବା platforms:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions ସେଟଅପ୍:** - -`.github/workflows/translate.yml` ସୃଷ୍ଟି କରନ୍ତୁ: - -```yaml -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 }} -``` - -**ସେଟଅପ୍ ଆବଶ୍ୟକତା:** - -1. repository secrets ରେ `LINGODOTDEV_API_KEY` ଯୋଡ଼ନ୍ତୁ (Settings > Secrets and variables > Actions) -2. PR workflows ପାଇଁ: Settings > Actions > General ରେ "Allow GitHub Actions to create and approve pull requests" ସକ୍ଷମ କରନ୍ତୁ - -**Workflow ବିକଳ୍ପଗୁଡ଼ିକ:** - -ଅନୁବାଦଗୁଡ଼ିକୁ ସିଧାସଳଖ commit କରନ୍ତୁ: +ଆପଣଙ୍କ ପାଇପଲାଇନରେ ନିରନ୍ତର ସ୍ଥାନୀୟକରଣ। ପ୍ରତ୍ୟେକ ପୁସ୍ ସ୍ଥାନୀୟକରଣକୁ ଟ୍ରିଗର କରେ – ଅନୁପସ୍ଥିତ ଷ୍ଟ୍ରିଂଗୁଡ଼ିକ କୋଡ୍ ପ୍ରଡକ୍ସନରେ ପହଞ୍ଚିବା ପୂର୍ବରୁ ପୂରଣ ହୁଏ। GitHub Actions, GitLab CI/CD, ଏବଂ Bitbucket Pipelines କୁ ସମର୍ଥନ କରେ। ```yaml uses: lingodotdev/lingo.dev@main @@ -239,229 +118,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -ଅନୁବାଦ ସହିତ pull request ସୃଷ୍ଟି କରନ୍ତୁ: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**ଉପଲବ୍ଧ input ଗୁଡ଼ିକ:** - -| Input | Default | Description | -| -------------------- | ---------------------------------------------- | ------------------------------------------------ | -| `api-key` | (ଆବଶ୍ୟକ) | Lingo.dev API key | -| `pull-request` | `false` | ସିଧାସଳଖ commit କରିବା ପରିବର୍ତ୍ତେ PR ସୃଷ୍ଟି କରନ୍ତୁ | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | କଷ୍ଟମ୍ commit message | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | କଷ୍ଟମ୍ PR title | -| `working-directory` | `"."` | ଚଲାଇବା ପାଇଁ ଡିରେକ୍ଟୋରୀ | -| `parallel` | `false` | ସମାନ୍ତରାଳ ପ୍ରକ୍ରିୟାକରଣ ସକ୍ଷମ କରନ୍ତୁ | - -[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/ci/github) +[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -ଷ୍ଟାଟିକ୍ ଅନୁବାଦ ଫାଇଲଗୁଡ଼ିକ UI label ପାଇଁ କାମ କରେ, କିନ୍ତୁ ବ୍ୟବହାରକାରୀ-ସୃଷ୍ଟି କଣ୍ଟେଣ୍ଟ ବିଷୟରେ କ'ଣ? ଚାଟ୍ ମେସେଜ୍, ପ୍ରଡକ୍ଟ ବର୍ଣ୍ଣନା, ସପୋର୍ଟ ଟିକେଟ୍ - ଯେଉଁ କଣ୍ଟେଣ୍ଟ build time ରେ ବିଦ୍ୟମାନ ନାହିଁ ତାହା ପୂର୍ବରୁ ଅନୁବାଦ କରାଯାଇପାରିବ ନାହିଁ। ଆପଣ ଅନୁବାଦିତ ନଥିବା ଟେକ୍ସଟ୍ ଦେଖାଇବାକୁ କିମ୍ବା କଷ୍ଟମ୍ ଅନୁବାଦ pipeline ନିର୍ମାଣ କରିବାକୁ ବାଧ୍ୟ ହୁଅନ୍ତି। +ବ୍ୟାକଏଣ୍ଡ କୋଡ଼ରୁ ସିଧାସଳଖ ଆପଣଙ୍କ ସ୍ଥାନୀୟକରଣ ଇଞ୍ଜିନକୁ କଲ କରନ୍ତୁ। ୱେବହୁକ ଡେଲିଭରି ସହିତ ସିଙ୍କ୍ରୋନସ ଏବଂ ଏସିଙ୍କ ସ୍ଥାନୀୟକରଣ, ପ୍ରତି ଲୋକେଲରେ ବିଫଳତା ପୃଥକୀକରଣ, ଏବଂ WebSocket ମାଧ୍ୟମରେ ରିଅଲ-ଟାଇମ ପ୍ରଗତି। -Lingo.dev SDK runtime ରେ କଣ୍ଟେଣ୍ଟ ଅନୁବାଦ କରେ। କୌଣସି ଟେକ୍ସଟ୍, object, କିମ୍ବା HTML ପାସ୍ କରନ୍ତୁ ଏବଂ ଏକ ଲୋକାଲାଇଜ୍ ହୋଇଥିବା ସଂସ୍କରଣ ଫେରାଇ ପାଆନ୍ତୁ। ରିଅଲ୍-ଟାଇମ୍ ଚାଟ୍, ଡାଇନାମିକ୍ ନୋଟିଫିକେସନ୍, କିମ୍ବା deployment ପରେ ଆସୁଥିବା କୌଣସି କଣ୍ଟେଣ୍ଟ ପାଇଁ କାମ କରେ। JavaScript, PHP, Python, ଏବଂ Ruby ପାଇଁ ଉପଲବ୍ଧ। - -**ଇନଷ୍ଟଲେସନ୍:** - -```bash -npm install lingo.dev -``` - -**ବ୍ୟବହାର:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**ଉପଲବ୍ଧ SDK ଗୁଡ଼ିକ:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web apps, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/sdk) +[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React ପାଇଁ Lingo Compiler (ପ୍ରାରମ୍ଭିକ ଆଲଫା) -ପାରମ୍ପରିକ i18n ଅତ୍ୟନ୍ତ ଆକ୍ରମଣାତ୍ମକ। ଆପଣ ପ୍ରତ୍ୟେକ string କୁ `t()` function ରେ wrap କରନ୍ତି, ଅନୁବାଦ କୀ (`home.hero.title.v2`) ତିଆରି କରନ୍ତି, ସମାନ୍ତରାଳ JSON ଫାଇଲ୍ ସଂରକ୍ଷଣ କରନ୍ତି, ଏବଂ ଆପଣଙ୍କ component ଗୁଡ଼ିକୁ localization boilerplate ଦ୍ୱାରା ପରିପୂର୍ଣ୍ଣ ହେଉଥିବା ଦେଖନ୍ତି। ଏହା ଏତେ ଦ୍ୱୟଙ୍କର ଯେ ଦଳଗୁଡ଼ିକ internationalization ବିଳମ୍ବ କରନ୍ତି ଯେପର୍ଯ୍ୟନ୍ତ ଏହା ବଡ଼ ରିଫ୍ୟାକ୍ଟର୍ ଭଲି ନ ହୋଇ। +i18n ର୍ୟାପରଗୁଡ଼ିକ ବିନା ବିଲ୍ଡ-ଟାଇମ React ସ୍ଥାନୀୟକରଣ। ସରଳ ଇଂରାଜୀ ଟେକ୍ସଟ ସହିତ କମ୍ପୋନେଣ୍ଟ ଲେଖନ୍ତୁ – କମ୍ପାଇଲର ଅନୁବାଦଯୋଗ୍ୟ ଷ୍ଟ୍ରିଂଗୁଡ଼ିକୁ ଚିହ୍ନଟ କରେ ଏବଂ ବିଲ୍ଡ ଟାଇମରେ ସ୍ଥାନୀୟକୃତ ଭେରିଏଣ୍ଟ ସୃଷ୍ଟି କରେ। କୌଣସି ଅନୁବାଦ କି, କୌଣସି JSON ଫାଇଲ, କୌଣସି `t()` ଫଙ୍କସନ ନାହିଁ। Next.js (App Router) ଏବଂ Vite + React କୁ ସମର୍ଥନ କରେ। -Lingo.dev Compiler ଆନୁଷ୍ଠାନିକତାକୁ ହଟାଇଥାଏ। ସାଧା ଇଂରାଜୀ ଟେକ୍ସଟ୍ ସହିତ React components ଲେଖନ୍ତୁ। Compiler ବିଲ୍ଡ ସମୟରେ ଅନୁବାଦଯୋଗ୍ୟ strings ଚିହ୍ନଟ କରେ ଏବଂ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୋକାଲାଇଜ୍ଡ variants ସୃଷ୍ଟି କରେ। କୌଣସି keys ନାହିଁ, କୌଣସି JSON ଫାଇଲ୍ ନାହିଁ, କୌଣସି wrapper functions ନାହିଁ - କେବଳ React code ଯାହା ଏକାଧିକ ଭାଷାରେ କାମ କରେ। - -**ଇନଷ୍ଟଲେସନ୍:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**ପ୍ରମାଣୀକରଣ:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**କନଫିଗରେସନ୍ (Vite):** - -```ts -// 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 ସେଟଅପ୍:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**ଭାଷା ସୁଇଚର୍:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**ଡେଭଲପମେଣ୍ଟ:** `npm run dev` (pseudotranslator ବ୍ୟବହାର କରେ, କୌଣସି API call ନାହିଁ) - -**ପ୍ରଡକ୍ସନ୍:** `usePseudotranslator: false` ସେଟ୍ କରନ୍ତୁ, ତାପରେ `next build` - -`.lingo/` ଡିରେକ୍ଟୋରୀକୁ version control ରେ commit କରନ୍ତୁ। - -**ମୁଖ୍ୟ ବୈଶିଷ୍ଟ୍ୟଗୁଡ଼ିକ:** - -- ଶୂନ୍ୟ runtime performance cost -- କୌଣସି translation key କିମ୍ବା JSON ଫାଇଲ୍ ନାହିଁ -- କୌଣସି `t()` function କିମ୍ବା `` wrapper component ନାହିଁ -- JSX ରେ ଅନୁବାଦଯୋଗ୍ୟ ଟେକ୍ସଟ୍ର ସ୍ୱୟଂଚାଳିତ ଚିହ୍ନଟ -- TypeScript ସପୋର୍ଟ -- ଗଣନାରେ ସହିତ ICU MessageFormat -- `data-lingo-override` attribute ମାଧ୍ୟମରେ manual override -- ବିଲ୍ଟ-ଇନ୍ ଅନୁବାଦ ସ୍ପଷ୍ଟ ସମ୍ପାଦନ ସାଧନ - -**ବିଲ୍ଡ modes:** - -- `pseudotranslator`: placeholder translation ସହିତ development mode (API ଖର୍ଚ୍ଚ ନାହିଁ) -- `real`: LLM ବ୍ୟବହାର କରି ପ୍ରକୃତ ଅନୁବାଦ ଉତ୍ପାଦନ କରନ୍ତୁ -- `cache-only`: CI ରୁ pre-generated translation ସହିତ production mode (API call ନାହିଁ) - -**ସପୋର୍ଟେଡ୍ frameworks:** - -- Next.js (React Server Components ସହିତ App Router) -- Vite + React (SPA ଏବଂ SSR) - -ଅତିରିକ୍ତ framework ସପୋର୍ଟ ଯୋଜନା କରାଯାଇଛି। - -[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/compiler) +[ଡକ୍ସ ପଢ଼ନ୍ତୁ →](https://lingo.dev/en/docs/react/compiler) --- @@ -469,20 +142,20 @@ export function LanguageSwitcher() { ଅବଦାନକୁ ସ୍ୱାଗତ। ଦୟାକରି ଏହି ନିର୍ଦ୍ଦେଶାବଳୀ ଅନୁସରଣ କରନ୍ତୁ: -1. **ସମସ୍ୟା:** [ବଗ୍ ରିପୋର୍ଟ କରନ୍ତୁ କିମ୍ବା ଫିଚର୍ ଅନୁରୋଧ କରନ୍ତୁ](https://github.com/lingodotdev/lingo.dev/issues) -2. **ପୁଲ୍ ରିକ୍ୱେଷ୍ଟ:** [ପରିବର୍ତ୍ତନ ସବମିଟ୍ କରନ୍ତୁ](https://github.com/lingodotdev/lingo.dev/pulls) - - ପ୍ରତ୍ୟେକ PR ପାଇଁ changeset ଆବଶ୍ୟକ: `pnpm new` (କିମ୍ବା non-release changes ପାଇଁ `pnpm new:empty`) - - ସବମିଟ୍ କରିବା ପୂର୍ବରୁ test ଉତ୍ତୀର୍ଣ୍ଣ ହେବା ନିଶ୍ଚିତ କରନ୍ତୁ -3. **ଡେଭଲପମେଣ୍ଟ:** ଏହା pnpm + turborepo monorepo - - dependency install କରନ୍ତୁ: `pnpm install` - - test ଚଲାନ୍ତୁ: `pnpm test` - - build କରନ୍ତୁ: `pnpm build` +1. **ଇସୁଗୁଡ଼ିକ:** [ବଗ ରିପୋର୍ଟ କରନ୍ତୁ କିମ୍ବା ଫିଚର ଅନୁରୋଧ କରନ୍ତୁ](https://github.com/lingodotdev/lingo.dev/issues) +2. **ପୁଲ ରିକ୍ୱେଷ୍ଟ:** [ପରିବର୍ତ୍ତନ ଦାଖଲ କରନ୍ତୁ](https://github.com/lingodotdev/lingo.dev/pulls) + - ପ୍ରତ୍ୟେକ PR ପାଇଁ ଏକ ଚେଞ୍ଜସେଟ ଆବଶ୍ୟକ: `pnpm new` (କିମ୍ବା ନନ-ରିଲିଜ ପରିବର୍ତ୍ତନ ପାଇଁ `pnpm new:empty`) + - ଦାଖଲ କରିବା ପୂର୍ବରୁ ନିଶ୍ଚିତ କରନ୍ତୁ ଯେ ଟେଷ୍ଟ ପାସ ହୋଇଛି +3. **ଡେଭଲପମେଣ୍ଟ:** ଏହା ଏକ pnpm + turborepo monorepo + - ଡିପେଣ୍ଡେନ୍ସି ଇନଷ୍ଟଲ କରନ୍ତୁ: `pnpm install` + - ଟେଷ୍ଟ ଚଲାନ୍ତୁ: `pnpm test` + - ବିଲ୍ଡ: `pnpm build` **ସପୋର୍ଟ:** [Discord କମ୍ୟୁନିଟି](https://lingo.dev/go/discord) -## ଷ୍ଟାର୍ ହିଷ୍ଟୋରୀ +## ଷ୍ଟାର ହିଷ୍ଟୋରି -ଯଦି ଆପଣ Lingo.dev କୁ ଉପଯୋଗୀ ମନେ କରନ୍ତି, ଆମକୁ ଏକ ଷ୍ଟାର୍ ଦିଅନ୍ତୁ ଏବଂ 10,000 ଷ୍ଟାର୍ ପହଞ୍ଚିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ! +ଯଦି ଆପଣ Lingo.dev କୁ ଉପଯୋଗୀ ମନେ କରନ୍ତି, ତେବେ ଆମକୁ ଏକ ଷ୍ଟାର ଦିଅନ୍ତୁ ଏବଂ 10,000 ଷ୍ଟାର ପହଞ୍ଚିବାରେ ଆମକୁ ସାହାଯ୍ୟ କରନ୍ତୁ! [ @@ -492,18 +165,11 @@ export function LanguageSwitcher() { ## ସ୍ଥାନୀୟକୃତ ଡକ୍ୟୁମେଣ୍ଟେସନ୍ -**ଉପଲବ୍ଧ ଅନୁବାଦ:** +**ଉପଲବ୍ଧ ଅନୁବାଦଗୁଡ଼ିକ:** [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**ନୂତନ ଭାଷା ଯୋଡ଼ିବା:** - -1. [`i18n.json`](./i18n.json) ରେ [BCP-47 ଫର୍ମାଟ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ବ୍ୟବହାର କରି locale code ଯୋଡ଼ନ୍ତୁ -2. Pull request ସବମିଟ୍ କରନ୍ତୁ - -**BCP-47 locale format:** `language[-Script][-REGION]` +**ନୂଆ ଭାଷା ଯୋଗ କରିବା:** -- `language`: ISO 639-1/2/3 (ସମସ୍ତେଉପରି ଛୋଟ): `en`, `zh`, `bho` -- `Script`: ISO 15924 (title case): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (ବଡ଼): `US`, `CN`, `IN` -- ଉଦାହରଣ: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 ଫର୍ମାଟ୍](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ବ୍ୟବହାର କରି [`i18n.json`](./i18n.json) ରେ ଲୋକେଲ୍ କୋଡ୍ ଯୋଗ କରନ୍ତୁ +2. ଏକ ପୁଲ୍ ରିକ୍ୱେଷ୍ଟ ଦାଖଲ କରନ୍ତୁ diff --git a/readme/pa-IN.md b/readme/pa-IN.md index f7d646df8..5bd1b4100 100644 --- a/readme/pa-IN.md +++ b/readme/pa-IN.md @@ -3,21 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-ਸੰਚਾਲਿਤ ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਲਈ ਓਪਨ-ਸੋਰਸ i18n ਟੂਲਕਿੱਟ + + ਓਪਨ-ਸੋਰਸ ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਇੰਜੀਨੀਅਰਿੰਗ ਟੂਲਜ਼। ਸਥਿਰ, ਉੱਚ-ਗੁਣਵੱਤਾ ਵਾਲੇ ਅਨੁਵਾਦਾਂ ਲਈ + Lingo.dev ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਇੰਜੀਨੀਅਰਿੰਗ ਪਲੇਟਫਾਰਮ ਨਾਲ ਕਨੈਕਟ ਕਰੋ। +


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React ਲਈ Lingo Compiler (ਸ਼ੁਰੂਆਤੀ ਅਲਫ਼ਾ)

@@ -69,51 +74,22 @@ ## ਤੁਰੰਤ ਸ਼ੁਰੂਆਤ -| ਟੂਲ | ਵਰਤੋਂ ਦਾ ਮਾਮਲਾ | ਤੁਰੰਤ ਕਮਾਂਡ | -| ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React ਐਪਸ ਲਈ AI-ਸਹਾਇਤਾ ਪ੍ਰਾਪਤ i18n ਸੈੱਟਅੱਪ | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ਫਾਈਲਾਂ ਦਾ ਅਨੁਵਾਦ | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions ਵਿੱਚ ਆਟੋਮੇਟਿਕ ਅਨੁਵਾਦ ਪਾਈਪਲਾਈਨ | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ਡਾਇਨਾਮਿਕ ਸਮੱਗਰੀ ਲਈ ਰਨਟਾਈਮ ਅਨੁਵਾਦ | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrappers ਤੋਂ ਬਿਨਾਂ ਬਿਲਡ-ਟਾਈਮ React ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ | `withLingo()` plugin | +| ਟੂਲ | ਇਹ ਕੀ ਕਰਦਾ ਹੈ | ਤੇਜ਼ ਕਮਾਂਡ | +| -------------------------------------------------- | ------------------------------------------------------ | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React ਐਪਸ ਲਈ AI-ਸਹਾਇਤਾ ਪ੍ਰਾਪਤ i18n ਸੈਟਅੱਪ | ਪ੍ਰੌਂਪਟ: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ਫ਼ਾਈਲਾਂ ਨੂੰ ਲੋਕਲਾਈਜ਼ ਕਰੋ | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions ਵਿੱਚ ਲਗਾਤਾਰ ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n ਰੈਪਰਾਂ ਤੋਂ ਬਿਨਾਂ ਬਿਲਡ-ਟਾਈਮ React ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ | `withLingo()` ਪਲੱਗਇਨ | ---- - -### Lingo.dev MCP - -React ਐਪਸ ਵਿੱਚ i18n ਸੈੱਟਅੱਪ ਕਰਨਾ ਬਦਨਾਮ ਤੌਰ 'ਤੇ ਗਲਤੀ-ਪ੍ਰਵਣ ਹੈ - ਤਜਰਬੇਕਾਰ ਡਿਵੈਲਪਰਾਂ ਲਈ ਵੀ। AI ਕੋਡਿੰਗ ਸਹਾਇਕ ਇਸਨੂੰ ਹੋਰ ਵੀ ਮਾੜਾ ਬਣਾਉਂਦੇ ਹਨ: ਉਹ ਗੈਰ-ਮੌਜੂਦ APIs ਦੀ ਕਲਪਨਾ ਕਰਦੇ ਹਨ, ਮਿਡਲਵੇਅਰ ਕੌਂਫਿਗਰੇਸ਼ਨਾਂ ਨੂੰ ਭੁੱਲ ਜਾਂਦੇ ਹਨ, ਰਾਊਟਿੰਗ ਨੂੰ ਤੋੜ ਦਿੰਦੇ ਹਨ, ਜਾਂ ਗੁੰਮ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਅੱਧਾ ਹੱਲ ਲਾਗੂ ਕਰਦੇ ਹਨ। ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ i18n ਸੈੱਟਅੱਪ ਲਈ ਕਈ ਫਾਈਲਾਂ (ਰਾਊਟਿੰਗ, ਮਿਡਲਵੇਅਰ, ਕੰਪੋਨੈਂਟਸ, ਕੌਂਫਿਗਰੇਸ਼ਨ) ਵਿੱਚ ਤਾਲਮੇਲ ਵਾਲੀਆਂ ਤਬਦੀਲੀਆਂ ਦੀ ਇੱਕ ਸਟੀਕ ਕ੍ਰਮ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ LLMs ਉਸ ਸੰਦਰਭ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਵਿੱਚ ਸੰਘਰਸ਼ ਕਰਦੇ ਹਨ। - -Lingo.dev MCP ਇਸ ਸਮੱਸਿਆ ਨੂੰ AI ਸਹਾਇਕਾਂ ਨੂੰ ਫਰੇਮਵਰਕ-ਵਿਸ਼ੇਸ਼ i18n ਗਿਆਨ ਤੱਕ ਸੰਰਚਿਤ ਪਹੁੰਚ ਦੇ ਕੇ ਹੱਲ ਕਰਦਾ ਹੈ। ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਦੀ ਬਜਾਏ, ਤੁਹਾਡਾ ਸਹਾਇਕ Next.js, React Router, ਅਤੇ TanStack Start ਲਈ ਪ੍ਰਮਾਣਿਤ ਲਾਗੂਕਰਨ ਪੈਟਰਨਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ। - -**ਸਮਰਥਿਤ IDEs:** +### ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਇੰਜਣ -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +ਇਹ ਟੂਲਜ਼ [ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਇੰਜਣਾਂ](https://lingo.dev) ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹਨ – ਸਟੇਟਫੁੱਲ ਅਨੁਵਾਦ APIs ਜੋ ਤੁਸੀਂ Lingo.dev ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਇੰਜੀਨੀਅਰਿੰਗ ਪਲੇਟਫਾਰਮ ਤੇ ਬਣਾਉਂਦੇ ਹੋ। ਹਰ ਇੰਜਣ ਹਰੇਕ ਬੇਨਤੀ ਵਿੱਚ ਗਲੋਸਰੀਜ਼, ਬ੍ਰਾਂਡ ਵੌਇਸ, ਅਤੇ ਪ੍ਰਤੀ-ਲੋਕੇਲ ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ, [ਸ਼ਬਦਾਵਲੀ ਗਲਤੀਆਂ ਨੂੰ 16.6–44.6% ਘਟਾਉਂਦਾ ਹੈ](https://lingo.dev/research/retrieval-augmented-localization)। ਜਾਂ [ਆਪਣਾ LLM ਲਿਆਓ](#lingodev-cli)। -**ਸਮਰਥਿਤ ਫਰੇਮਵਰਕ:** - -- Next.js (App Router ਅਤੇ Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**ਵਰਤੋਂ:** - -ਆਪਣੇ IDE ਵਿੱਚ MCP ਸਰਵਰ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਤੋਂ ਬਾਅਦ ([ਕੁਇੱਕਸਟਾਰਟ ਗਾਈਡਾਂ ਦੇਖੋ](https://lingo.dev/en/mcp)), ਆਪਣੇ ਸਹਾਇਕ ਨੂੰ ਪ੍ਰੋਂਪਟ ਕਰੋ: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -ਸਹਾਇਕ ਇਹ ਕਰੇਗਾ: +--- -1. ਲੋਕੇਲ-ਅਧਾਰਿਤ ਰਾਊਟਿੰਗ ਕੌਂਫਿਗਰ ਕਰੋ (ਉਦਾਹਰਨਵਾਂ ਵਾਂਗ `/en`, `/es`, `/pt-BR`) -2. ਭਾਸ਼ਾ ਸਵਿੱਚਿੰਗ ਕੰਪੋਨੈਂਟਸ ਸੈੱਟਅੱਪ ਕਰੋ -3. ਆਟੋਮੈਟਿਕ ਲੋਕੇਲ ਡਿਟੈਕਸ਼ਨ ਲਾਗੂ ਕਰੋ -4. ਲੋੜੀਂਦੀਆਂ ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ ਤਿਆਰ ਕਰੋ +### Lingo.dev MCP -**ਨੋਟ:** AI-ਸਹਾਇਤਾ ਪ੍ਰਾਪਤ ਕੋਡ ਜਨਰੇਸ਼ਨ ਗੈਰ-ਨਿਰਧਾਰਕ ਹੈ। ਕਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਿਆਰ ਕੀਤੇ ਕੋਡ ਦੀ ਸਮੀਖਿਆ ਕਰੋ। +React ਐਪਸ ਵਿੱਚ i18n ਸੈਟਅੱਪ ਕਰਨਾ ਗਲਤੀਆਂ ਵਾਲਾ ਹੋ ਸਕਦਾ ਹੈ – AI ਕੋਡਿੰਗ ਸਹਾਇਕ ਵੀ ਗੈਰ-ਮੌਜੂਦ APIs ਬਣਾਉਂਦੇ ਹਨ ਅਤੇ ਰਾਉਟਿੰਗ ਨੂੰ ਤੋੜ ਦਿੰਦੇ ਹਨ। Lingo.dev MCP, AI ਸਹਾਇਕਾਂ ਨੂੰ Next.js, React Router, ਅਤੇ TanStack Start ਲਈ ਫ੍ਰੇਮਵਰਕ-ਵਿਸ਼ੇਸ਼ i18n ਗਿਆਨ ਤੱਕ ਸੰਰਚਿਤ ਪਹੁੰਚ ਦਿੰਦਾ ਹੈ। Claude Code, Cursor, GitHub Copilot Agents, ਅਤੇ Codex ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ। [ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/mcp) @@ -121,115 +97,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -ਅਨੁਵਾਦਾਂ ਨੂੰ ਸਿੰਕ ਵਿੱਚ ਰੱਖਣਾ ਥਕਾਊ ਹੈ। ਤੁਸੀਂ ਇੱਕ ਨਵੀਂ ਸਟਰਿੰਗ ਜੋੜਦੇ ਹੋ, ਇਸਦਾ ਅਨੁਵਾਦ ਕਰਨਾ ਭੁੱਲ ਜਾਂਦੇ ਹੋ, ਅੰਤਰਰਾਸ਼ਟਰੀ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਟੁੱਟਿਆ UI ਭੇਜ ਦਿੰਦੇ ਹੋ। ਜਾਂ ਤੁਸੀਂ ਅਨੁਵਾਦਕਾਂ ਨੂੰ JSON ਫਾਈਲਾਂ ਭੇਜਦੇ ਹੋ, ਦਿਨਾਂ ਦੀ ਉਡੀਕ ਕਰਦੇ ਹੋ, ਫਿਰ ਮੈਨੁਅਲੀ ਉਹਨਾਂ ਦੇ ਕੰਮ ਨੂੰ ਵਾਪਸ ਮਰਜ ਕਰਦੇ ਹੋ। 10+ ਭਾਸ਼ਾਵਾਂ ਤੱਕ ਸਕੇਲ ਕਰਨ ਦਾ ਮਤਲਬ ਹੈ ਸੈਂਕੜੇ ਫਾਈਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਜੋ ਲਗਾਤਾਰ ਸਿੰਕ ਤੋਂ ਬਾਹਰ ਹੋ ਜਾਂਦੀਆਂ ਹਨ। - -Lingo.dev CLI ਇਸਨੂੰ ਆਟੋਮੇਟ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ ਆਪਣੀਆਂ ਅਨੁਵਾਦ ਫਾਈਲਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰੋ, ਇੱਕ ਕਮਾਂਡ ਚਲਾਓ, ਅਤੇ ਹਰ ਲੋਕੇਲ ਅੱਪਡੇਟ ਹੋ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਲਾਕਫਾਈਲ ਟਰੈਕ ਕਰਦੀ ਹੈ ਕਿ ਪਹਿਲਾਂ ਹੀ ਕੀ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ, ਇਸਲਈ ਤੁਸੀਂ ਸਿਰਫ਼ ਨਵੀਂ ਜਾਂ ਬਦਲੀ ਹੋਈ ਸਮੱਗਰੀ ਲਈ ਭੁਗਤਾਨ ਕਰਦੇ ਹੋ। JSON, YAML, CSV, PO ਫਾਈਲਾਂ, ਅਤੇ markdown ਨੂੰ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। - -**ਸੈੱਟਅੱਪ:** +JSON, YAML, markdown, CSV, ਅਤੇ PO ਫ਼ਾਈਲਾਂ ਨੂੰ ਇੱਕ ਕਮਾਂਡ ਵਿੱਚ ਲੋਕਲਾਈਜ਼ ਕਰੋ। ਇੱਕ ਲੌਕਫਾਈਲ ਟਰੈਕ ਕਰਦੀ ਹੈ ਕਿ ਪਹਿਲਾਂ ਹੀ ਕੀ ਲੋਕਲਾਈਜ਼ ਹੋਇਆ ਹੈ – ਸਿਰਫ਼ ਨਵੀਂ ਜਾਂ ਬਦਲੀ ਗਈ ਸਮੱਗਰੀ ਹੀ ਪ੍ਰੋਸੈਸ ਹੁੰਦੀ ਹੈ। Lingo.dev ਤੇ ਤੁਹਾਡੇ ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਇੰਜਣ ਨੂੰ ਡਿਫੌਲਟ ਕਰਦਾ ਹੈ, ਜਾਂ ਆਪਣਾ LLM ਲਿਆਓ (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama)। ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:** - -1. ਕੌਂਫਿਗਰ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਤੋਂ ਅਨੁਵਾਦਯੋਗ ਸਮੱਗਰੀ ਕੱਢੀ ਜਾਂਦੀ ਹੈ -2. ਅਨੁਵਾਦ ਲਈ ਸਮੱਗਰੀ LLM ਪ੍ਰੋਵਾਈਡਰ ਨੂੰ ਭੇਜੀ ਜਾਂਦੀ ਹੈ -3. ਅਨੁਵਾਦ ਹੋਈ ਸਮੱਗਰੀ ਫਾਇਲ ਸਿਸਟਮ ਵਿੱਚ ਵਾਪਸ ਲਿਖੀ ਜਾਂਦੀ ਹੈ -4. `i18n.lock` ਫਾਈਲ ਪੂਰੇ ਹੋਏ ਅਨੁਵਾਦਾਂ ਨੂੰ ਟ੍ਰੈਕ ਕਰਨ ਲਈ ਬਣਾਈ ਜਾਂਦੀ ਹੈ (ਬੇਲੋੜੀ ਪ੍ਰੋਸੈਸਿੰਗ ਤੋਂ ਬਚਾਵ) - -**ਕੌਂਫਿਗਰੇਸ਼ਨ:** - -`init` ਕਮਾਂਡ ਇੱਕ `i18n.json` ਫਾਈਲ ਤਿਆਰ ਕਰਦੀ ਹੈ। ਲੋਕੇਲਜ਼ ਅਤੇ ਬਕੇਟਸ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ: - -```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 ਪ੍ਰੋਵਾਈਡਰ ਲਈ: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**ਸਮਰਥਿਤ LLM ਪ੍ਰੋਵਾਈਡਰ:** - -- Lingo.dev Engine (ਸਿਫਾਰਸ਼ਿਤ) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/cli) +[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -ਅਨੁਵਾਦ ਉਹ ਫੀਚਰ ਹੈ ਜੋ ਹਮੇਸ਼ਾ "ਲਗਭਗ ਪੂਰਾ" ਹੁੰਦਾ ਹੈ। ਇੰਜੀਨੀਅਰ ਲੋਕੇਲਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤੇ ਬਿਨਾਂ ਕੋਡ ਮਰਜ਼ ਕਰ ਦਿੰਦੇ ਹਨ। QA ਸਟੇਜਿੰਗ ਵਿੱਚ ਗੁੰਮ ਅਨੁਵਾਦਾਂ ਨੂੰ ਫੜਦਾ ਹੈ - ਜਾਂ ਇਸ ਤੋਂ ਵੀ ਮਾੜਾ, ਯੂਜ਼ਰ ਉਹਨਾਂ ਨੂੰ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਫੜਦੇ ਹਨ। ਮੂਲ ਕਾਰਨ: ਅਨੁਵਾਦ ਇੱਕ ਮੈਨੁਅਲ ਸਟੈਪ ਹੈ ਜਿਸ ਨੂੰ ਡੈੱਡਲਾਈਨ ਦੇ ਦਬਾਅ ਹੇਠ ਛੱਡਣਾ ਆਸਾਨ ਹੈ। - -Lingo.dev CI/CD ਅਨੁਵਾਦਾਂ ਨੂੰ ਆਟੋਮੈਟਿਕ ਬਣਾਉਂਦਾ ਹੈ। ਹਰ ਪੁਸ਼ ਅਨੁਵਾਦ ਨੂੰ ਟਰਿੱਗਰ ਕਰਦੀ ਹੈ। ਗੁੰਮ ਸਟਰਿੰਗਾਂ ਕੋਡ ਦੇ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਭਰ ਜਾਂਦੀਆਂ ਹਨ। ਕਿਸੇ ਅਨੁਸ਼ਾਸਨ ਦੀ ਲੋੜ ਨਹੀਂ - ਪਾਈਪਲਾਈਨ ਇਸ ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ। - -**ਸਮਰਥਿਤ ਪਲੇਟਫਾਰਮ:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions ਸੈੱਟਅੱਪ:** - -`.github/workflows/translate.yml` ਬਣਾਓ: - -```yaml -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 }} -``` - -**ਸੈੱਟਅੱਪ ਲੋੜਾਂ:** - -1. `LINGODOTDEV_API_KEY` ਨੂੰ ਰਿਪੋਸਿਟਰੀ ਸੀਕਰੇਟਸ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ (Settings > Secrets and variables > Actions) -2. PR ਵਰਕਫਲੋਜ਼ ਲਈ: Settings > Actions > General ਵਿੱਚ "Allow GitHub Actions to create and approve pull requests" ਸਮਰੱਥ ਕਰੋ - -**ਵਰਕਫਲੋ ਵਿਕਲਪ:** - -ਅਨੁਵਾਦਾਂ ਨੂੰ ਸਿੱਧੇ ਕਮਿਟ ਕਰੋ: +ਤੁਹਾਡੀ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਨਿਰੰਤਰ ਸਥਾਨੀਕਰਨ। ਹਰ ਪੁਸ਼ ਸਥਾਨੀਕਰਨ ਸ਼ੁਰੂ ਕਰਦੀ ਹੈ – ਕੋਡ ਪ੍ਰੋਡਕਸ਼ਨ ਵਿੱਚ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਗੁੰਮ ਸਤਰਾਂ ਭਰੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। GitHub Actions, GitLab CI/CD, ਅਤੇ Bitbucket Pipelines ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ। ```yaml uses: lingodotdev/lingo.dev@main @@ -237,242 +118,36 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -ਅਨੁਵਾਦਾਂ ਨਾਲ ਪੁੱਲ ਰਿਕੁਐਸਟਾਂ ਬਣਾਓ: - -```yaml -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` | ਸਮਾਨਾਂਤਰ ਪ੍ਰੋਸੈਸਿੰਗ ਸਮਰੱਥ ਕਰੋ | - -[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/ci/github) +[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -ਸਥਿਰ ਅਨੁਵਾਦ ਫਾਈਲਾਂ UI ਲੇਬਲਾਂ ਲਈ ਕੰਮ ਕਰਦੀਆਂ ਹਨ, ਪਰ ਉਪਭੋਗਤਾ-ਜਨਰੇਟਿਡ ਸਮੱਗਰੀ ਬਾਰੇ ਕੀ? ਚੈਟ ਸੁਨੇਹੇ, ਉਤਪਾਦ ਵੇਰਵੇ, ਸਹਾਇਤਾ ਟਿਕਟਾਂ - ਉਹ ਸਮੱਗਰੀ ਜੋ ਬਿਲਡ ਸਮੇਂ ਮੌਜੂਦ ਨਹੀਂ ਹੁੰਦੀ, ਪਹਿਲਾਂ ਤੋਂ ਅਨੁਵਾਦਿਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਤੁਸੀਂ ਗੈਰ-ਅਨੁਵਾਦਿਤ ਟੈਕਸਟ ਦਿਖਾਉਣ ਜਾਂ ਕਸਟਮ ਅਨੁਵਾਦ ਪਾਈਪਲਾਈਨ ਬਣਾਉਣ ਵਿੱਚ ਫਸ ਜਾਂਦੇ ਹੋ। +ਬੈਕਐਂਡ ਕੋਡ ਤੋਂ ਸਿੱਧੇ ਆਪਣੇ ਸਥਾਨੀਕਰਨ ਇੰਜਣ ਨੂੰ ਕੌਲ ਕਰੋ। ਵੈਬਹੁੱਕ ਡਿਲੀਵਰੀ ਦੇ ਨਾਲ ਸਿੰਕਰੋਨਸ ਅਤੇ ਐਸਿੰਕ ਸਥਾਨੀਕਰਨ, ਹਰ ਲੋਕੇਲ ਲਈ ਅਸਫਲਤਾ ਅਲੱਗ-ਥਲੱਗ, ਅਤੇ WebSocket ਰਾਹੀਂ ਰੀਅਲ-ਟਾਈਮ ਪ੍ਰਗਤੀ। -Lingo.dev SDK ਰਨਟਾਈਮ ਤੇ ਸਮੱਗਰੀ ਦਾ ਅਨੁਵਾਦ ਕਰਦਾ ਹੈ। ਕੋਈ ਵੀ ਟੈਕਸਟ, ਆਬਜੈਕਟ, ਜਾਂ HTML ਪਾਸ ਕਰੋ ਅਤੇ ਸਥਾਨਿਕ ਸੰਸਕਰਣ ਵਾਪਸ ਪ੍ਰਾਪਤ ਕਰੋ। ਰੀਅਲ-ਟਾਈਮ ਚੈਟ, ਗਤੀਸ਼ੀਲ ਸੂਚਨਾਵਾਂ, ਜਾਂ ਕਿਸੇ ਵੀ ਸਮੱਗਰੀ ਲਈ ਕੰਮ ਕਰਦਾ ਹੈ ਜੋ ਡਿਪਲਾਇਮੈਂਟ ਤੋਂ ਬਾਅਦ ਆਉਂਦੀ ਹੈ। JavaScript, PHP, Python, ਅਤੇ Ruby ਲਈ ਉਪਲਬਧ। - -**ਇੰਸਟਾਲੇਸ਼ਨ:** - -```bash -npm install lingo.dev -``` - -**ਵਰਤੋਂ:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**ਉਪਲਬਧ SDKs:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - ਵੈੱਬ ਐਪਸ, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/sdk) +[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React ਲਈ Lingo Compiler (ਸ਼ੁਰੂਆਤੀ ਅਲਫ਼ਾ) -ਪਰੰਪਰागत i18n ਘੁਸ਼ਪੈਠੀਕ ਹੈ। ਤੁਸੀਂ ਹਰ ਸਟ੍ਰਿੰਗ ਨੂੰ `t()` ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਲਪੇਟਦੇ ਹੋ, ਅਨੁਵਾਦ ਕੁੰਜੀਆਂ (`home.hero.title.v2`) ਬਣਾਉਂਦੇ ਹੋ, ਸਮਕਾਲੀ JSON ਫਾਈਲਾਂ ਰੱਖਦੇ ਹੋ, ਅਤੇ ਆਪਣੇ ਕੰਪੋਨੈਂਟਸ ਨੂੰ ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਬੋਇਲਰਪਲੇਟ ਨਾਲ ਵਧਦਾ ਹੋਇਆ ਵੇਖਦੇ ਹੋ। ਇਹ ਪੂਰੀ ਪ੍ਰਕਿਰਿਆ ਇੰਨੀ ਥਕਾਵਟੀ ਹੈ ਕਿ ਟੀਮਾਂ ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਨੂੰ ਉਸ ਸਮੇਂ ਤੱਕ ਮੂਲ ਰੂਪ ਤੌਰ ਤੇ ਟਾਲਦੀਆਂ ਹਨ ਜਦ ਤੱਕ ਇਹ ਇੱਕ ਵਿਅਪਕ ਰੀਫੈਕਟਰ ਨਾ ਬਣ ਜਾਵੇ। +i18n ਰੈਪਰਾਂ ਤੋਂ ਬਿਨਾਂ ਬਿਲਡ-ਟਾਈਮ React ਸਥਾਨੀਕਰਨ। ਸਾਦੇ ਅੰਗਰੇਜ਼ੀ ਟੈਕਸਟ ਨਾਲ ਕੰਪੋਨੈਂਟਸ ਲਿਖੋ – ਕੰਪਾਈਲਰ ਅਨੁਵਾਦਯੋਗ ਸਤਰਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ ਅਤੇ ਬਿਲਡ ਟਾਈਮ ਤੇ ਸਥਾਨੀਕ੍ਰਿਤ ਸੰਸਕਰਣ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਕੋਈ ਅਨੁਵਾਦ ਕੀਆਂ ਨਹੀਂ, ਕੋਈ JSON ਫਾਈਲਾਂ ਨਹੀਂ, ਕੋਈ `t()` ਫੰਕਸ਼ਨ ਨਹੀਂ। Next.js (App Router) ਅਤੇ Vite + React ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। -Lingo.dev Compiler ਰਸਮੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ। ਸਾਦੇ ਅੰਗਰੇਜ਼ੀ ਟੈਕਸਟ ਨਾਲ React ਕੰਪੋਨੈਂਟਸ ਲਿਖੋ। Compiler ਬਿਲਡ ਟਾਈਮ 'ਤੇ ਅਨੁਵਾਦਯੋਗ ਸਟ੍ਰਿੰਗਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ ਅਤੇ ਸਥਾਨਿਕ ਰੂਪਾਂ ਨੂੰ ਆਪਣੇ-ਆਪ ਜਨਰੇਟ ਕਰਦਾ ਹੈ। ਕੋਈ keys ਨਹੀਂ, ਕੋਈ JSON ਫਾਈਲਾਂ ਨਹੀਂ, ਕੋਈ wrapper functions ਨਹੀਂ - ਸਿਰਫ਼ React ਕੋਡ ਜੋ ਕਈ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ। - -**ਇੰਸਟਾਲੇਸ਼ਨ:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**ਪ੍ਰਮਾਣਿਕਤਾ:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**ਸੰਰਚਨਾ (Vite):** - -```ts -// 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 ਸੈੱਟਅੱਪ:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**ਭਾਸ਼ਾ ਸਵਿੱਚਰ:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**ਡਿਵੈਲਪਮੈਂਟ:** `npm run dev` (pseudotranslator ਵਰਤਦਾ ਹੈ, ਕੋਈ API ਕਾਲਾਂ ਨਹੀਂ) - -**ਪ੍ਰੋਡਕਸ਼ਨ:** `usePseudotranslator: false` ਸੈੱਟ ਕਰੋ, ਫਿਰ `next build` - -`.lingo/` ਡਾਇਰੈਕਟਰੀ ਨੂੰ version control ਵਿੱਚ commit ਕਰੋ। - -**ਮੁੱਖ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ:** - -- ਜ਼ੀਰੋ ਰਨਟਾਈਮ ਪਰਫਾਰਮੈਂਸ ਲਾਗਤ -- ਕੋਈ ਅਨੁਵਾਦ ਕੁੰਜੀਆਂ ਜਾਂ JSON ਫਾਈਲਾਂ ਨਹੀਂ -- ਕੋਈ `t()` ਫੰਕਸ਼ਨ ਜਾਂ `` ਵ੍ਰੈਪਰ ਕੰਪੋਨैंਟ ਨਹੀਂ -- JSX ਵਿੱਚ ਅਨੁਵਾਦਯੋਗ ਟੈਕਸਟ ਦੀ ਆਟੋਮੈਟਿਕ ਪਛਾਣ -- TypeScript ਸਹਾਇਤਾ -- ਬਹੁਵਚਨਾਂ ਲਈ ICU MessageFormat -- `data-lingo-override` attribute ਰਾਹੀਂ ਮੈਨੁਅਲ ਓਵਰਰਾਈਡ -- ਇਨੇਬਲਡ translation editor widget - -**ਬਿਲਡ ਮੋਡਸ:** - -- `pseudotranslator`: placeholder translations ਨਾਲ ਡਿਵੈਲਪਮੈਂਟ ਮੋਡ (ਕੋਈ API ਖਰਚ ਨਹੀਂ) -- `real`: LLMs ਦੇ ਨਾਲ ਅਸਲ ਅਨੁਵਾਦ ਜਨਰੇਟ ਕਰੋ -- `cache-only`: CI ਤੋਂ ਪਹਿਲਾਂ ਤੋਂ ਉਤਪੰਨ ਕੀਤੀਆਂ ਅਨੁਵਾਦਾਂ ਨਾਲ ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ (ਕੋਈ API ਕਾਲਾਂ ਨਹੀਂ) - -**ਸਮਰਥਿਤ ਫਰੇਮਵਰਕਸ:** - -- Next.js (React Server Components ਨਾਲ App Router) -- Vite + React (SPA ਅਤੇ SSR) - -ਵਾਧੂ ਫਰੇਮਵਰਕ ਸਹਾਇਤਾ ਯੋਜਨਾਬੱਧ ਹੈ। - -[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/compiler) +[ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ →](https://lingo.dev/en/docs/react/compiler) --- -## ਯੋਗਦਾਨ +## ਯੋਗਦਾਨ ਪਾਓ -ਯੋਗਦਾਨ ਦਾ ਸਵਾਗਤ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਹਨਾਂ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ਾਂ ਦਾ ਪਾਲਣ ਕਰੋ: +ਯੋਗਦਾਨ ਦਾ ਸਵਾਗਤ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਹਨਾਂ ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ: -1. **ਮੁੱਦੇ:** [ਬੱਗ ਰਿਪੋਰਟ ਕਰੋ ਜਾਂ ਫੀਚਰ ਦੀ ਬੇਨਤੀ ਕਰੋ](https://github.com/lingodotdev/lingo.dev/issues) -2. **ਪੁੱਲ ਰਿਕੁਐਸਟਸ:** [ਤਬਦੀਲੀਆਂ ਸਬਮਿਟ ਕਰੋ](https://github.com/lingodotdev/lingo.dev/pulls) - - ਹਰੇਕ PR ਲਈ ਇੱਕ changeset ਦੀ ਲੋੜ ਹੈ: `pnpm new` (ਜਾਂ non-release ਤਬਦੀਲੀਆਂ ਲਈ `pnpm new:empty`) - - ਸਬਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਟੈਸਟ ਪਾਸ ਹੋਣ ਯਕੀਨੀ ਬਣਾਓ -3. **ਡਿਵੈਲਪਮੈਂਟ:** ਇਹ pnpm + turborepo ਮੋਨੋਰੇਪੋ ਹੈ - - ਡਿਪੈਂਡੈਂਸੀਜ਼ ਇੰਸਟਾਲ ਕਰੋ: `pnpm install` +1. **ਮੁੱਦੇ:** [ਬੱਗਾਂ ਦੀ ਰਿਪੋਰਟ ਕਰੋ ਜਾਂ ਫੀਚਰ ਬੇਨਤੀ ਕਰੋ](https://github.com/lingodotdev/lingo.dev/issues) +2. **ਪੁੱਲ ਰੀਕੁਐਸਟਸ:** [ਤਬਦੀਲੀਆਂ ਜਮ੍ਹਾਂ ਕਰੋ](https://github.com/lingodotdev/lingo.dev/pulls) + - ਹਰ PR ਲਈ ਚੇਂਜਸੈਟ ਜ਼ਰੂਰੀ ਹੈ: `pnpm new` (ਜਾਂ ਗੈਰ-ਰਿਲੀਜ਼ ਤਬਦੀਲੀਆਂ ਲਈ `pnpm new:empty`) + - ਜਮ੍ਹਾਂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਟੈਸਟ ਪਾਸ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ +3. **ਵਿਕਾਸ:** ਇਹ ਇੱਕ pnpm + turborepo monorepo ਹੈ + - ਨਿਰਭਰਤਾਵਾਂ ਸਥਾਪਤ ਕਰੋ: `pnpm install` - ਟੈਸਟ ਚਲਾਓ: `pnpm test` - ਬਿਲਡ: `pnpm build` @@ -480,7 +155,7 @@ export function LanguageSwitcher() { ## ਸਟਾਰ ਇਤਿਹਾਸ -ਜੇਕਰ ਤੁਹਾਨੂੰ Lingo.dev ਉਪਯੋਗੀ ਲੱਗਦਾ ਹੈ, ਤਾਂ ਸਾਨੂੰ ਇੱਕ ਸਟਾਰ ਦਿਓ ਅਤੇ 10,000 ਸਟਾਰ ਤੱਕ ਪਹੁੰਚਣ ਵਿੱਚ ਸਾਡੀ ਮਦਦ ਕਰੋ! +ਜੇ ਤੁਹਾਨੂੰ Lingo.dev ਉਪਯੋਗੀ ਲੱਗਦਾ ਹੈ, ਤਾਂ ਸਾਨੂੰ ਸਟਾਰ ਦਿਓ ਅਤੇ 10,000 ਸਟਾਰ ਤੱਕ ਪਹੁੰਚਣ ਵਿੱਚ ਸਾਡੀ ਮਦਦ ਕਰੋ! [ @@ -488,7 +163,7 @@ export function LanguageSwitcher() { ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## ਸਥਾਨਿਕ ਦਸਤਾਵੇਜ਼ੀਕਰਨ +## ਸਥਾਨਿਕ ਦਸਤਾਵੇਜ਼ **ਉਪਲਬਧ ਅਨੁਵਾਦ:** @@ -496,12 +171,5 @@ export function LanguageSwitcher() { **ਨਵੀਂ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰਨਾ:** -1. [`i18n.json`](./i18n.json) ਵਿੱਚ [BCP-47 ਫਾਰਮੈਟ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਲੋਕੇਲ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ -2. ਇੱਕ ਪੁੱਲ ਰੀਕੁਐਸਟ ਸਬਮਿਟ ਕਰੋ - -**BCP-47 ਲੋਕੇਲ ਫਾਰਮੈਟ:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (ਛੋਟੇ ਅੱਖਰ): `en`, `zh`, `bho` -- `Script`: ISO 15924 (ਨਾਵਾਂ ਕੇਸ): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (ਵੱਡੇ ਅੱਖਰ): `US`, `CN`, `IN` -- ਉਦਾਹਰਨਾਂ: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 ਫਾਰਮੈਟ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ਵਰਤਦੇ ਹੋਏ [`i18n.json`](./i18n.json) ਵਿੱਚ ਲੋਕੇਲ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ +2. ਪੁੱਲ ਰਿਕਵੈਸਟ ਜਮ੍ਹਾਂ ਕਰੋ diff --git a/readme/pl.md b/readme/pl.md index 8d09a3c28..f27363fd9 100644 --- a/readme/pl.md +++ b/readme/pl.md @@ -3,23 +3,28 @@ Lingo.dev

- Lingo.dev – Otwarty toolkit i18n do lokalizacji wspieranej przez LLM + Narzędzia inżynierii lokalizacji o otwartym kodzie źródłowym. Połącz się z + platformą Lingo.dev, aby uzyskać spójne tłumaczenia najwyższej jakości.


- MCPCLI • - CI/CDSDK • - Kompilator + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + + Lingo Compiler dla React (Wczesna wersja alfa) +

@@ -71,51 +76,22 @@ ## Szybki start -| Narzędzie | Zastosowanie | Szybka komenda | -| ------------------------------------ | --------------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | Asystowane przez AI wdrożenie i18n dla aplikacji React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Tłumaczenie plików JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Automatyczny pipeline tłumaczeń w GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Tłumaczenie w czasie rzeczywistym dla dynamicznych treści | `npm install lingo.dev` | -| [**Kompilator**](#lingodev-compiler) | Lokalizacja React na etapie budowania bez wrapperów i18n | `withLingo()` plugin | - ---- - -### Lingo.dev MCP - -Konfigurowanie i18n w aplikacjach React jest notorycznie podatne na błędy – nawet dla doświadczonych developerów. Asystenci AI tylko pogarszają sprawę: "halucynują" nieistniejące API, pomijają konfiguracje middleware, psują routing lub wdrażają połowiczne rozwiązania, po czym gubią kontekst. Problem polega na tym, że wdrożenie i18n wymaga precyzyjnej sekwencji skoordynowanych zmian w wielu plikach (routing, middleware, komponenty, konfiguracja), a LLM-y mają trudność z utrzymaniem takiego kontekstu. +| Narzędzie | Do czego służy | Szybkie polecenie | +| -------------------------------------------------- | -------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Konfiguracja i18n dla aplikacji React z asystą AI | Prompt: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | Lokalizacja plików JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | Ciągła lokalizacja w GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler dla React**](#lingodev-compiler) | Lokalizacja React w czasie kompilacji bez wrapperów i18n | `withLingo()` wtyczka | -Lingo.dev MCP rozwiązuje ten problem, zapewniając asystentom AI ustrukturyzowany dostęp do wiedzy o i18n specyficznej dla frameworków. Zamiast zgadywać, Twój asystent podąża za zweryfikowanymi wzorcami implementacji dla Next.js, React Router i TanStack Start. +### Silniki lokalizacji -**Obsługiwane IDE:** +Te narzędzia łączą się z [silnikami lokalizacji](https://lingo.dev) – stanowymi API tłumaczeń, które tworzysz na platformie Lingo.dev. Każdy silnik przechowuje glosariusze, ton marki i instrukcje dla poszczególnych lokalizacji w każdym żądaniu, [redukując błędy terminologiczne o 16,6–44,6%](https://lingo.dev/research/retrieval-augmented-localization). Możesz też [użyć własnego LLM](#lingodev-cli). -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) - -**Obsługiwane frameworki:** - -- Next.js (App Router i Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Użycie:** - -Po skonfigurowaniu serwera MCP w swoim IDE ([zobacz przewodniki szybkiego startu](https://lingo.dev/en/mcp)), poproś asystenta: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -Asystent wykona następujące kroki: +--- -1. Skonfigurować routing oparty na lokalizacji (np. `/en`, `/es`, `/pt-BR`) -2. Włączyć komponenty do przełączania języka -3. Zaimplementować automatyczne wykrywanie lokalizacji -4. Wygenerować niezbędne pliki konfiguracyjne +### Lingo.dev MCP -**Uwaga:** Generowanie kodu przez AI jest niedeterministyczne. Przejrzyj wygenerowany kod przed zatwierdzeniem. +Konfiguracja i18n w aplikacjach React jest podatna na błędy – nawet asystenci AI generują nieistniejące API i psują routing. Lingo.dev MCP zapewnia asystentom AI ustrukturyzowany dostęp do wiedzy o i18n dla Next.js, React Router i TanStack Start. Działa z Claude Code, Cursor, GitHub Copilot Agents i Codex. [Przeczytaj dokumentację →](https://lingo.dev/en/mcp) @@ -123,115 +99,20 @@ Asystent wykona następujące kroki: ### Lingo.dev CLI -Utrzymywanie tłumaczeń w synchronizacji jest żmudne. Dodajesz nowy string, zapominasz go przetłumaczyć, a do użytkowników międzynarodowych trafia uszkodzony interfejs. Albo wysyłasz pliki JSON tłumaczom, czekasz kilka dni, a potem ręcznie scalasz ich pracę. Skalowanie do 10+ języków oznacza zarządzanie setkami plików, które stale się rozjeżdżają. - -Lingo.dev CLI automatyzuje ten proces. Wskaż pliki tłumaczeń, uruchom jedno polecenie i każda lokalizacja zostanie zaktualizowana. Plik lockfile śledzi, co już zostało przetłumaczone, więc płacisz tylko za nowe lub zmienione treści. Obsługuje pliki JSON, YAML, CSV, PO oraz markdown. - -**Konfiguracja:** +Lokalizuj pliki JSON, YAML, markdown, CSV i PO jednym poleceniem. Lockfile śledzi, co zostało już przetłumaczone – przetwarzana jest tylko nowa lub zmieniona treść. Domyślnie łączy się z Twoim silnikiem lokalizacji na Lingo.dev, możesz też użyć własnego LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Jak to działa:** - -1. Ekstrahuje treści do tłumaczenia ze skonfigurowanych plików -2. Wysyła je do dostawcy LLM w celu tłumaczenia -3. Zapisuje przetłumaczoną zawartość do systemu plików -4. Tworzy plik `i18n.lock` do śledzenia ukończonych tłumaczeń (eliminuje zbędne przetwarzanie) - -**Konfiguracja:** - -Polecenie `init` generuje plik `i18n.json`. Skonfiguruj lokalizacje i buckety: - -```json -{ - "$schema": "https://lingo.dev/schema/i18n.json", - "version": "1.10", - "locale": { - "source": "en", - "targets": ["es", "fr", "de"] - }, - "buckets": { - "json": { - "include": ["locales/[locale].json"] - } - } -} -``` - -Pole `provider` jest opcjonalne (domyślnie silnik Lingo.dev). Dla innych dostawców LLM: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Obsługiwani dostawcy LLM:** - -- Lingo.dev Engine (zalecane) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Przeczytaj dokumentację →](https://lingo.dev/en/cli) +[Przeczytaj dokumentację →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Tłumaczenia to funkcja, która zawsze jest "prawie gotowa". Inżynierowie scalają kod bez aktualizacji lokalizacji. QA wykrywa brakujące tłumaczenia na etapie stagingu – albo, co gorsza, użytkownicy zauważają je w produkcji. Główna przyczyna: tłumaczenie to ręczny krok, który łatwo pominąć pod presją czasu. - -Lingo.dev CI/CD automatyzuje tłumaczenia. Każdy push uruchamia proces tłumaczenia. Brakujące ciągi są uzupełniane zanim kod trafi na produkcję. Nie wymaga dyscypliny – pipeline zajmuje się tym automatycznie. - -**Obsługiwane platformy:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**Konfiguracja GitHub Actions:** - -Utwórz plik `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Wymagania wstępne:** - -1. Dodaj `LINGODOTDEV_API_KEY` do sekcji secrets repozytorium (Ustawienia > Secrets and variables > Actions) -2. Dla workflow PR: Włącz "Zezwól GitHub Actions na tworzenie i zatwierdzanie pull requestów" w Ustawienia > Actions > General - -**Opcje workflow:** - -Zatwierdzaj tłumaczenia bezpośrednio: +Ciągła lokalizacja w Twoim pipeline. Każde wysłanie kodu uruchamia lokalizację – brakujące ciągi są uzupełniane, zanim kod trafi do produkcji. Wspiera GitHub Actions, GitLab CI/CD i Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,250 +120,44 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Twórz pull requesty z tłumaczeniami: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Dostępne wejścia:** - -| Wejście | Wartość domyślna | Opis | -| -------------------- | ---------------------------------------------- | --------------------------------------------- | -| `api-key` | (wymagane) | Klucz API Lingo.dev | -| `pull-request` | `false` | Tworzy PR zamiast bezpośredniego commitowania | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Niestandardowa wiadomość commita | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Niestandardowy tytuł PR | -| `working-directory` | `"."` | Katalog uruchomienia | -| `parallel` | `false` | Włącz przetwarzanie równoległe | - -[Przeczytaj dokumentację →](https://lingo.dev/en/ci/github) +[Przeczytaj dokumentację →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK - -Statyczne pliki tłumaczeń sprawdzają się dla etykiet UI, ale co z treściami generowanymi przez użytkowników? Wiadomości na czacie, opisy produktów, zgłoszenia do supportu – treści, które nie istnieją w momencie budowania aplikacji, nie mogą być przetłumaczone z wyprzedzeniem. Pozostaje wyświetlanie nieprzetłumaczonego tekstu lub budowa własnego pipeline'u tłumaczeń. - -Lingo.dev SDK tłumaczy treści w czasie rzeczywistym. Przekaż dowolny tekst, obiekt lub HTML i otrzymaj zlokalizowaną wersję. Działa dla czatów na żywo, dynamicznych powiadomień czy dowolnych treści pojawiających się po wdrożeniu. Dostępny dla JavaScript, PHP, Pythona i Ruby. - -**Instalacja:** - -```bash -npm install lingo.dev -``` - -**Użycie:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**Dostępne SDK:** +### Lingo.dev API -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) – aplikacje webowe, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) – PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) – Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) – Rails +Wywołuj swój silnik lokalizacyjny bezpośrednio z kodu backendu. Synchroniczna i asynchroniczna lokalizacja z dostarczaniem przez webhook, izolacja błędów dla poszczególnych lokalizacji oraz postęp w czasie rzeczywistym przez WebSocket. -[Przeczytaj dokumentację →](https://lingo.dev/en/sdk) +[Przeczytaj dokumentację →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler - -Tradycyjne i18n jest inwazyjne. Każdy łańcuch znaków opakowujesz w funkcje `t()`, wymyślasz klucze tłumaczeń (`home.hero.title.v2`), utrzymujesz równoległe pliki JSON i obserwujesz, jak komponenty rozrastają się przez boilerplate lokalizacyjny. To tak uciążliwe, że zespoły odwlekają internacjonalizację aż stanie się ogromnym refaktoringiem. - -Kompilator Lingo.dev eliminuje zbędną złożoność. Pisz komponenty React z tekstem w prostym angielskim. Kompilator wykrywa teksty do tłumaczenia podczas budowania i automatycznie generuje ich zlokalizowane warianty. Bez kluczy, plików JSON, funkcji wrapperów – po prostu kod React, który działa w wielu językach. - -**Instalacja:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Uwierzytelnianie:** - -```bash -# 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 -``` - -**Konfiguracja (Next.js):** +### Lingo Compiler dla React (Wczesna alpha) -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; +Lokalizacja React w czasie budowania bez wrapperów i18n. Pisz komponenty z czystym angielskim tekstem – kompilator wykrywa ciągi do przetłumaczenia i generuje zlokalizowane warianty podczas budowania. Bez kluczy tłumaczeń, bez plików JSON, bez funkcji `t()`. Wspiera Next.js (App Router) oraz Vite + React. -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Konfiguracja (Vite):** - -```ts -// 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(), - ], -}); -``` - -**Konfiguracja providera:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Przełącznik języka:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Development:** `npm run dev` (używa pseudotranslatora, brak wywołań API) - -**Production:** Ustaw `usePseudotranslator: false`, następnie `next build` - -Zacommituj katalog `.lingo/` do kontroli wersji. - -**Kluczowe funkcje:** - -- Brak kosztu wydajności w czasie wykonywania -- Bez kluczy tłumaczeń ani plików JSON -- Bez funkcji `t()` lub wrapperów `` -- Automatyczne wykrywanie tłumaczalnych tekstów w JSX -- Wsparcie TypeScript -- ICU MessageFormat do obsługi liczby mnogiej -- Ręczne nadpisywanie przez atrybut `data-lingo-override` -- Wbudowany edytor tłumaczeń - -**Tryby budowania:** - -- `pseudotranslator`: Tryb deweloperski z tłumaczeniami zastępczymi (brak kosztów API) -- `real`: Wygeneruj rzeczywiste tłumaczenia za pomocą LLM -- `cache-only`: Tryb produkcyjny z użyciem wcześniej wygenerowanych tłumaczeń z CI (brak wywołań API) - -**Obsługiwane frameworki:** - -- Next.js (App Router z React Server Components) -- Vite + React (SPA i SSR) - -Planowane wsparcie dla kolejnych frameworków. - -[Przeczytaj dokumentację →](https://lingo.dev/en/compiler) +[Przeczytaj dokumentację →](https://lingo.dev/en/docs/react/compiler) --- -## Współtworzenie +## Wkład w projekt -Zapraszamy do współpracy. Prosimy o przestrzeganie poniższych wytycznych: +Wkład w projekt jest mile widziany. Prosimy o przestrzeganie następujących wytycznych: -1. **Zgłoszenia:** [Zgłoś błędy lub poproś o nowe funkcjonalności](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Requesty:** [Prześlij zmiany](https://github.com/lingodotdev/lingo.dev/pulls) - - Każdy PR musi mieć changeset: `pnpm new` (albo `pnpm new:empty` dla zmian niewydaniowych) - - Przed wysłaniem upewnij się, że testy przechodzą -3. **Development:** To monorepo pnpm + turborepo - - Instalacja zależności: `pnpm install` - - Uruchamianie testów: `pnpm test` - - Budowanie: `pnpm build` +1. **Zgłoszenia:** [Zgłaszaj błędy lub proponuj funkcje](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Requesty:** [Przesyłaj zmiany](https://github.com/lingodotdev/lingo.dev/pulls) + - Każdy PR wymaga zestawu zmian: `pnpm new` (lub `pnpm new:empty` dla zmian nie objętych wydaniem) + - Upewnij się, że testy przechodzą przed przesłaniem +3. **Rozwój:** To jest monorepo pnpm + turborepo + - Zainstaluj zależności: `pnpm install` + - Uruchom testy: `pnpm test` + - Zbuduj: `pnpm build` **Wsparcie:** [Społeczność Discord](https://lingo.dev/go/discord) ## Historia gwiazdek -Jeśli Lingo.dev jest dla Ciebie przydatne, daj nam gwiazdkę i pomóż osiągnąć 10 000 gwiazdek! +Jeśli uważasz Lingo.dev za przydatne, daj nam gwiazdkę i pomóż nam osiągnąć 10 000 gwiazdek! [ @@ -500,10 +175,3 @@ Jeśli Lingo.dev jest dla Ciebie przydatne, daj nam gwiazdkę i pomóż osiągn 1. Dodaj kod lokalizacji do [`i18n.json`](./i18n.json) używając [formatu BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) 2. Prześlij pull request - -**Format lokalizacji BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (małe litery): `en`, `zh`, `bho` -- `Script`: ISO 15924 (wielka litera na początku): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (wielkie litery): `US`, `CN`, `IN` -- Przykłady: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/pt-BR.md b/readme/pt-BR.md index 4559ec887..e991d8955 100644 --- a/readme/pt-BR.md +++ b/readme/pt-BR.md @@ -3,24 +3,27 @@ Lingo.dev

- Lingo.dev - Kit de ferramentas i18n de código aberto para localização com - LLM + Ferramentas open-source de engenharia de localização. Conecte-se à + plataforma de engenharia de localização Lingo.dev para traduções + consistentes e de qualidade.


- MCPCLI • - CI/CDSDK • - Compiler + API Lingo • + Lingo React MCP • + CLI Lingo • + Ação GitHub Lingo • + Compilador Lingo para React (Alfa inicial)

@@ -72,167 +75,43 @@ ## Início rápido -| Ferramenta | Caso de uso | Comando rápido | -| ---------------------------------- | ----------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | Configuração de i18n assistida por IA para apps React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Traduz arquivos JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Pipeline de tradução automatizado no GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Tradução dinâmica em tempo de execução | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | Localização React em tempo de build sem wrappers i18n | Plugin `withLingo()` | +| Ferramenta | O que faz | Comando Rápido | +| ----------------------------------------------------- | ----------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Configuração de i18n assistida por IA para apps React | Prompt: `Set up i18n` | +| [**CLI Lingo**](#lingodev-cli) | Localiza arquivos JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**Ação GitHub Lingo**](#lingodev-cicd) | Localização contínua no GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Compilador Lingo para React**](#lingodev-compiler) | Localização React em tempo de build sem wrappers i18n | Plugin `withLingo()` | ---- - -### Lingo.dev MCP - -Configurar i18n em aplicações React é notoriamente propenso a erros - mesmo para desenvolvedores experientes. Assistentes de IA para codificação pioram a situação: eles alucinam APIs inexistentes, esquecem configurações de middleware, quebram o roteamento ou implementam metade de uma solução antes de se perderem. O problema é que a configuração de i18n requer uma sequência precisa de mudanças coordenadas em múltiplos arquivos (roteamento, middleware, componentes, configuração), e os LLMs têm dificuldade em manter esse contexto. - -O Lingo.dev MCP resolve isso fornecendo aos assistentes de IA acesso estruturado ao conhecimento de i18n específico de cada framework. Em vez de adivinhar, seu assistente segue padrões de implementação verificados para Next.js, React Router e TanStack Start. - -**IDEs suportadas:** +### Motores de localização -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +Essas ferramentas conectam-se a [motores de localização](https://lingo.dev) – APIs de tradução com estado que você cria na plataforma de engenharia de localização Lingo.dev. Cada motor mantém glossários, voz de marca e instruções por idioma em cada requisição, [reduzindo erros de terminologia em 16,6–44,6%](https://lingo.dev/research/retrieval-augmented-localization). Ou [traga seu próprio LLM](#lingodev-cli). -**Frameworks suportados:** - -- Next.js (App Router e Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Uso:** - -Após configurar o servidor MCP na sua IDE ([veja os guias de início rápido](https://lingo.dev/en/mcp)), solicite ao seu assistente: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -O assistente irá: +--- -1. Configurar roteamento baseado em localidade (por exemplo, `/en`, `/es`, `/pt-BR`) -2. Configurar componentes de troca de idioma -3. Implementar detecção automática de localidade -4. Gerar arquivos de configuração necessários +### Lingo.dev MCP -**Observação:** a geração de código assistida por IA é não-determinística. Revise o código gerado antes de fazer commit. +Configurar i18n em apps React é suscetível a erros – até assistentes de IA alucinam APIs inexistentes e quebram roteamento. O Lingo.dev MCP dá aos assistentes de IA acesso estruturado ao conhecimento de i18n específico para Next.js, React Router e TanStack Start. Funciona com Claude Code, Cursor, GitHub Copilot Agents e Codex. [Leia a documentação →](https://lingo.dev/en/mcp) --- -### Lingo.dev CLI +### CLI Lingo.dev -Manter traduções sincronizadas é tedioso. Você adiciona uma nova string, esquece de traduzi-la e envia uma interface quebrada para usuários internacionais. Ou você envia arquivos JSON para tradutores, espera dias e depois mescla manualmente o trabalho deles de volta. Escalar para mais de 10 idiomas significa gerenciar centenas de arquivos que constantemente ficam dessincronizados. - -O Lingo.dev CLI automatiza isso. Aponte-o para seus arquivos de tradução, execute um comando e todos os locales são atualizados. Um arquivo de bloqueio rastreia o que já foi traduzido, então você paga apenas por conteúdo novo ou alterado. Suporta arquivos JSON, YAML, CSV, PO e markdown. - -**Configuração:** +Localize arquivos JSON, YAML, markdown, CSV e PO em um comando. Um arquivo de bloqueio rastreia o que já foi localizado – apenas conteúdo novo ou alterado é processado. Usa por padrão seu motor de localização no Lingo.dev, ou traga seu próprio LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Como funciona:** - -1. Extrai conteúdo traduzível dos arquivos configurados -2. Envia o conteúdo para o provedor LLM para tradução -3. Escreve o conteúdo traduzido de volta ao sistema de arquivos -4. Cria o arquivo `i18n.lock` para rastrear traduções concluídas (evita processamento redundante) - -**Configuração:** - -O comando `init` gera um arquivo `i18n.json`. Configure os locales e buckets: - -```json -{ - "$schema": "https://lingo.dev/schema/i18n.json", - "version": "1.10", - "locale": { - "source": "en", - "targets": ["es", "fr", "de"] - }, - "buckets": { - "json": { - "include": ["locales/[locale].json"] - } - } -} -``` - -O campo `provider` é opcional (padrão: Lingo.dev Engine). Para provedores LLM personalizados: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Provedores LLM suportados:** - -- Lingo.dev Engine (recomendado) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Leia a documentação →](https://lingo.dev/en/cli) +[Leia a documentação →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Traduções são a funcionalidade que está sempre "quase pronta". Engenheiros fazem merge de código sem atualizar os locales. O QA detecta traduções faltando em staging - ou pior, os usuários detectam em produção. A causa raiz: tradução é uma etapa manual que é fácil de pular sob pressão de prazo. - -O Lingo.dev CI/CD torna as traduções automáticas. Cada push aciona a tradução. Strings faltando são preenchidas antes do código chegar à produção. Nenhuma disciplina necessária - o pipeline cuida disso. - -**Plataformas suportadas:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**Configuração do GitHub Actions:** - -Crie `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Requisitos de configuração:** - -1. Adicione `LINGODOTDEV_API_KEY` aos segredos do repositório (Settings > Secrets and variables > Actions) -2. Para workflows de PR: Habilite "Allow GitHub Actions to create and approve pull requests" em Settings > Actions > General - -**Opções de workflow:** - -Fazer commit das traduções diretamente: +Localização contínua no seu pipeline. Cada push aciona a localização – strings ausentes são preenchidas antes do código chegar à produção. Compatível com GitHub Actions, GitLab CI/CD e Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,229 +119,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Crie pull requests com traduções: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Inputs disponíveis:** - -| Input | Padrão | Descrição | -| -------------------- | ---------------------------------------------- | -------------------------------------- | -| `api-key` | (obrigatório) | Chave de API do Lingo.dev | -| `pull-request` | `false` | Cria PR em vez de commitar diretamente | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Mensagem de commit personalizada | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Título personalizado de PR | -| `working-directory` | `"."` | Diretório para execução | -| `parallel` | `false` | Habilitar processamento paralelo | - -[Leia a documentação →](https://lingo.dev/en/ci/github) +[Leia a documentação →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### API Lingo.dev -Arquivos de tradução estáticos funcionam para labels de UI, mas e quanto ao conteúdo gerado por usuários? Mensagens de chat, descrições de produtos, tickets de suporte - conteúdo que não existe em tempo de build não pode ser pré-traduzido. Você fica preso mostrando texto não traduzido ou construindo um pipeline de tradução personalizado. +Chame seu mecanismo de localização diretamente do código backend. Localização síncrona e assíncrona com entrega via webhook, isolamento de falhas por locale e progresso em tempo real via WebSocket. -O Lingo.dev SDK traduz conteúdo em tempo de execução. Passe qualquer texto, objeto ou HTML e receba de volta uma versão localizada. Funciona para chat em tempo real, notificações dinâmicas ou qualquer conteúdo que chega após o deploy. Disponível para JavaScript, PHP, Python e Ruby. - -**Instalação:** - -```bash -npm install lingo.dev -``` - -**Uso:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**SDKs disponíveis:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Aplicativos web, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[Leia a documentação →](https://lingo.dev/en/sdk) +[Leia a documentação →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### Lingo Compiler para React (Alfa inicial) -A i18n tradicional é invasiva. Você envolve cada string em funções `t()`, inventa chaves de tradução (`home.hero.title.v2`), mantém arquivos JSON paralelos e observa seus componentes ficarem inchados com boilerplate de localização. É tão trabalhoso que as equipes adiam a internacionalização até que se torne uma grande refatoração. +Localização React em tempo de build sem wrappers i18n. Escreva componentes com texto em inglês simples – o compilador detecta strings traduzíveis e gera variantes localizadas em tempo de build. Sem chaves de tradução, sem arquivos JSON, sem funções `t()`. Compatível com Next.js (App Router) e Vite + React. -O Lingo.dev Compiler elimina a cerimônia. Escreva componentes React com texto em inglês simples. O compilador detecta strings traduzíveis em tempo de build e gera variantes localizadas automaticamente. Sem chaves, sem arquivos JSON, sem funções wrapper - apenas código React que funciona em vários idiomas. - -**Instalação:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Autenticação:** - -```bash -# 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 -``` - -**Configuração (Next.js):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Configuração (Vite):** - -```ts -// 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(), - ], -}); -``` - -**Configuração do provider:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Seletor de idioma:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Desenvolvimento:** `npm run dev` (usa pseudotranslator, sem chamadas de API) - -**Produção:** Defina `usePseudotranslator: false`, depois `next build` - -Faça commit do diretório `.lingo/` no controle de versão. - -**Recursos principais:** - -- Custo de performance zero em tempo de execução -- Sem chaves de tradução ou arquivos JSON -- Sem funções `t()` ou componentes wrapper `` -- Detecção automática de texto traduzível em JSX -- Suporte a TypeScript -- ICU MessageFormat para plurais -- Sobrescritas manuais por atributo `data-lingo-override` -- Widget integrado de edição de tradução - -**Modos de build:** - -- `pseudotranslator`: Modo de desenvolvimento com traduções placeholder (sem custos de API) -- `real`: Gera traduções reais usando LLMs -- `cache-only`: Modo de produção utilizando traduções pré-geradas do CI (sem chamadas de API) - -**Frameworks suportados:** - -- Next.js (App Router com React Server Components) -- Vite + React (SPA e SSR) - -Suporte a frameworks adicionais planejado. - -[Leia a documentação →](https://lingo.dev/en/compiler) +[Leia a documentação →](https://lingo.dev/en/docs/react/compiler) --- @@ -470,10 +143,10 @@ Suporte a frameworks adicionais planejado. Contribuições são bem-vindas. Siga estas diretrizes: -1. **Issues:** [Reporte bugs ou solicite recursos](https://github.com/lingodotdev/lingo.dev/issues) +1. **Issues:** [Reporte bugs ou solicite funcionalidades](https://github.com/lingodotdev/lingo.dev/issues) 2. **Pull Requests:** [Envie alterações](https://github.com/lingodotdev/lingo.dev/pulls) - Todo PR requer um changeset: `pnpm new` (ou `pnpm new:empty` para mudanças que não geram release) - - Certifique-se de executar os testes antes de enviar + - Garanta que os testes passem antes de enviar 3. **Desenvolvimento:** Este é um monorepo pnpm + turborepo - Instale as dependências: `pnpm install` - Execute os testes: `pnpm test` @@ -481,17 +154,17 @@ Contribuições são bem-vindas. Siga estas diretrizes: **Suporte:** [Comunidade no Discord](https://lingo.dev/go/discord) -## Histórico de estrelas +## Histórico de Estrelas Se você acha o Lingo.dev útil, nos dê uma estrela e nos ajude a alcançar 10.000 estrelas! [ -![Gráfico do histórico de estrelas](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Gráfico do Histórico de Estrelas](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## Documentação localizada +## Documentação Localizada **Traduções disponíveis:** @@ -501,10 +174,3 @@ Se você acha o Lingo.dev útil, nos dê uma estrela e nos ajude a alcançar 10. 1. Adicione o código do locale em [`i18n.json`](./i18n.json) usando o [formato BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) 2. Envie um pull request - -**Formato BCP-47 de locale:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (minúsculas): `en`, `zh`, `bho` -- `Script`: ISO 15924 (primeira letra maiúscula): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (maiúsculas): `US`, `CN`, `IN` -- Exemplos: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/ru.md b/readme/ru.md index 17956fcca..f023eb1a1 100644 --- a/readme/ru.md +++ b/readme/ru.md @@ -3,23 +3,29 @@ Lingo.dev

- Lingo.dev — open-source i18n toolkit для локализации на базе LLM + Инструменты локализационной инженерии с открытым исходным кодом. + Подключайтесь к платформе локализационной инженерии Lingo.dev для стабильных + и качественных переводов.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + + Lingo Compiler для React (Ранняя альфа-версия) +

@@ -71,51 +77,22 @@ ## Быстрый старт -| Инструмент | Сценарий использования | Быстрая команда | -| ---------------------------------- | -------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | AI-помощь при настройке i18n для React-приложений | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Перевод JSON, YAML, markdown, CSV, PO файлов | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Автоматизация перевода через GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Перевод на лету для динамического контента | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | Локализация React на этапе сборки без i18n-обёрток | `withLingo()` plugin | - ---- - -### Lingo.dev MCP - -Настроить i18n в React-приложениях — это всегда куча граблей, даже для опытных разработчиков. AI-ассистенты только усугубляют: придумывают несуществующие API, забывают про middleware, ломают роутинг или делают всё наполовину и теряются. Проблема в том, что настройка i18n требует чёткой последовательности изменений в разных файлах (роутинг, middleware, компоненты, конфиги), а LLM-ам сложно держать весь контекст. +| Инструмент | Что делает | Быстрая команда | +| -------------------------------------------------- | -------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Настройка i18n для React-приложений с помощью ИИ | Запрос: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | Локализация JSON, YAML, markdown, CSV, PO-файлов | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | Непрерывная локализация в GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler для React**](#lingodev-compiler) | Локализация React на этапе сборки без i18n-обёрток | Плагин `withLingo()` | -Lingo.dev MCP решает это, давая AI-ассистентам структурированный доступ к знаниям по i18n для конкретных фреймворков. Вместо догадок ассистент использует проверенные схемы для Next.js, React Router и TanStack Start. +### Движки локализации -**Поддерживаемые IDE:** +Эти инструменты подключаются к [движкам локализации](https://lingo.dev) – API перевода с сохранением состояния, которые вы создаёте на платформе локализационной инженерии Lingo.dev. Каждый движок сохраняет глоссарии, голос бренда и инструкции для каждой локали при каждом запросе, [сокращая терминологические ошибки на 16,6–44,6%](https://lingo.dev/research/retrieval-augmented-localization). Или [используйте собственную LLM](#lingodev-cli). -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) - -**Поддерживаемые фреймворки:** - -- Next.js (App Router и Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Использование:** - -После настройки MCP-сервера в своей IDE ([см. быстрый старт](https://lingo.dev/en/mcp)), просто попросите ассистента: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -Ассистент сделает следующее: +--- -1. Настроить роутинг по локалям (например, `/en`, `/es`, `/pt-BR`) -2. Добавить компоненты для переключения языка -3. Реализовать автоматическое определение локали -4. Сгенерировать необходимые конфигурационные файлы +### Lingo.dev MCP -**Важно:** Генерация кода с помощью AI непредсказуема. Проверьте код перед коммитом. +Настройка i18n в React-приложениях — процесс, подверженный ошибкам: даже ИИ-ассистенты генерируют несуществующие API и ломают маршрутизацию. Lingo.dev MCP предоставляет ИИ-ассистентам структурированный доступ к специфическим для фреймворков знаниям по i18n для Next.js, React Router и TanStack Start. Работает с Claude Code, Cursor, GitHub Copilot Agents и Codex. [Читать документацию →](https://lingo.dev/en/mcp) @@ -123,115 +100,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -Держать переводы в актуальном состоянии — это боль. Добавил новую строку, забыл перевести — и вот уже сломанный интерфейс для пользователей из других стран. Или отправил JSON-файлы переводчикам, ждал несколько дней, потом вручную сливал их работу. А если языков больше 10, то это уже сотни файлов, которые постоянно расходятся. - -Lingo.dev CLI всё автоматизирует. Просто укажи папку с переводами, запусти одну команду — и все локали обновятся. Lockfile отслеживает, что уже переведено, так что платишь только за новое или изменённое. Поддерживаются JSON, YAML, CSV, PO и markdown-файлы. - -**Установка:** +Локализуйте JSON, YAML, markdown, CSV и PO-файлы одной командой. Файл блокировки отслеживает уже локализованный контент — обрабатывается только новое или изменённое содержимое. По умолчанию использует ваш движок локализации на Lingo.dev, либо подключите собственную LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Как это работает:** - -1. Извлекает переводимый контент из настроенных файлов -2. Отправляет его провайдеру LLM для перевода -3. Записывает переведённый контент обратно в файловую систему -4. Создаёт файл `i18n.lock` для отслеживания завершённых переводов (предотвращает избыточную обработку) - -**Конфигурация:** - -Команда `init` генерирует файл `i18n.json`. Настройте локали и бакеты: - -```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-провайдеров: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Поддерживаемые LLM-провайдеры:** - -- Lingo.dev Engine (рекомендуется) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Читать документацию →](https://lingo.dev/en/cli) +[Читать документацию →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Переводы — это фича, которая всегда "почти готова". Разработчики сливают код, не обновляя локали. QA находит пропущенные переводы на стейджинге — или, что хуже, пользователи ловят их в проде. Корень проблемы: перевод — ручной этап, который легко пропустить под дедлайном. - -Lingo.dev CI/CD автоматизирует переводы. Каждый пуш запускает перевод. Пропущенные строки заполняются до попадания кода в прод. Не нужно напрягаться — пайплайн всё сделает. - -**Поддерживаемые платформы:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**Настройка GitHub Actions:** - -Создайте `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Требования к установке:** - -1. Добавьте `LINGODOTDEV_API_KEY` в секреты репозитория (Settings > Secrets and variables > Actions) -2. Для PR-воркфлоу: включите "Allow GitHub Actions to create and approve pull requests" в Settings > Actions > General - -**Опции воркфлоу:** - -Коммитить переводы напрямую: +Непрерывная локализация в вашем конвейере. Каждый пуш запускает локализацию – недостающие строки заполняются до того, как код попадёт в продакшн. Поддерживает GitHub Actions, GitLab CI/CD и Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,254 +121,48 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Создавайте pull request'ы с переводами: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Доступные параметры:** - -| Параметр | По умолчанию | Описание | -| -------------------- | ---------------------------------------------- | ----------------------------------- | -| `api-key` | (обязательный) | API-ключ Lingo.dev | -| `pull-request` | `false` | Создавать PR вместо прямого коммита | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Свой текст коммита | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Свой заголовок PR | -| `working-directory` | `"."` | Директория для запуска | -| `parallel` | `false` | Включить параллельную обработку | - -[Читать документацию →](https://lingo.dev/en/ci/github) +[Читать документацию →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK - -Статические файлы переводов подходят для UI-меток, но что делать с пользовательским контентом? Чаты, описания товаров, обращения в поддержку — всё это появляется уже после сборки и не может быть переведено заранее. В итоге вы показываете текст без перевода или строите свою сложную систему локализации. - -Lingo.dev SDK переводит контент на лету. Передайте любой текст, объект или HTML — и получите локализованную версию. Работает для чатов в реальном времени, динамических уведомлений и любого контента, который появляется после деплоя. Доступно для JavaScript, PHP, Python и Ruby. - -**Установка:** - -```bash -npm install lingo.dev -``` - -**Использование:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**Доступные SDK:** +### Lingo.dev API -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) — веб-приложения, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) — PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) — Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) — Rails +Вызывайте движок локализации напрямую из бэкенд-кода. Синхронная и асинхронная локализация с доставкой через вебхуки, изоляция ошибок для каждой локали и отслеживание прогресса в реальном времени через WebSocket. -[Читать документацию →](https://lingo.dev/en/sdk) +[Читать документацию →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler - -Классический i18n — это вмешательство везде. Каждую строку нужно оборачивать в функции `t()`, придумывать ключи переводов (`home.hero.title.v2`), держать параллельные JSON-файлы и наблюдать как компоненты обрастают локализационным шлаком. Это настолько муторно, что команды тянут с интернационализацией до огромного рефакторинга. - -Компилятор Lingo.dev убирает всю рутину. Пиши React-компоненты с обычным английским текстом — компилятор сам находит переводимые строки на этапе сборки и автоматически генерирует локализованные версии. Никаких ключей, JSON-файлов или обёрток — только React-код, который сразу работает на нескольких языках. - -**Установка:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Аутентификация:** - -```bash -# 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):** +### Lingo Compiler для React (Ранняя альфа) -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; +Локализация React на этапе сборки без обёрток i18n. Пишите компоненты с обычным английским текстом – компилятор обнаруживает переводимые строки и генерирует локализованные варианты на этапе сборки. Никаких ключей переводов, никаких JSON-файлов, никаких функций `t()`. Поддерживает Next.js (App Router) и Vite + React. -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Конфигурация (Vite):** - -```ts -// 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(), - ], -}); -``` - -**Настройка провайдера:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Переключатель языка:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Разработка:** `npm run dev` (используется псевдопереводчик, без вызова API) - -**Продакшн:** Установите `usePseudotranslator: false`, затем `next build` - -Добавьте директорию `.lingo/` в систему контроля версий. - -**Ключевые возможности:** - -- Нулевая нагрузка на производительность рантайма -- Нет ключей переводов и JSON-файлов -- Нет функций `t()` или компонентов-обёрток `` -- Автоматическое определение переводимых строк в JSX -- Поддержка TypeScript -- ICU MessageFormat для плюрализации -- Ручные правки через атрибут `data-lingo-override` -- Встроенный редактор переводов - -**Режимы сборки:** - -- `pseudotranslator`: режим разработки с тестовыми переводами (без затрат на API) -- `real`: генерация реальных переводов с использованием LLM -- `cache-only`: продакшн-режим с использованием заранее сгенерированных переводов из CI (без запросов к API) - -**Поддерживаемые фреймворки:** - -- Next.js (App Router с React Server Components) -- Vite + React (SPA и SSR) - -Планируется поддержка других фреймворков. - -[Читать документацию →](https://lingo.dev/en/compiler) +[Читать документацию →](https://lingo.dev/en/docs/react/compiler) --- -## Вклад в проект +## Участие в проекте -Будем рады вашим вкладом! Пожалуйста, следуйте этим рекомендациям: +Приветствуются любые вклады. Пожалуйста, следуйте этим рекомендациям: -1. **Issues:** [Сообщить о баге или предложить фичу](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Requests:** [Отправить изменения](https://github.com/lingodotdev/lingo.dev/pulls) - - Каждый PR требует changeset: `pnpm new` (или `pnpm new:empty` для нерелизных изменений) - - До отправки убедитесь, что все тесты проходят -3. **Разработка:** Это монорепозиторий pnpm + turborepo - - Установить зависимости: `pnpm install` - - Запустить тесты: `pnpm test` - - Собрать: `pnpm build` +1. **Проблемы:** [Сообщайте об ошибках или запрашивайте функции](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Request'ы:** [Отправляйте изменения](https://github.com/lingodotdev/lingo.dev/pulls) + - Каждый PR требует changeset: `pnpm new` (или `pnpm new:empty` для изменений без релиза) + - Убедитесь, что тесты проходят перед отправкой +3. **Разработка:** Это монорепозиторий на pnpm + turborepo + - Установите зависимости: `pnpm install` + - Запустите тесты: `pnpm test` + - Сборка: `pnpm build` **Поддержка:** [Сообщество в Discord](https://lingo.dev/go/discord) ## История звёзд -Если Lingo.dev оказался полезен, поставьте нам звезду и помогите достичь 10 000 звёзд! +Если Lingo.dev полезен для вас, поставьте нам звезду и помогите достичь 10 000 звёзд! [ -![График истории звёзд](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Диаграмма истории звёзд](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -496,14 +172,7 @@ export function LanguageSwitcher() { [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**Добавить новый язык:** - -1. Добавьте код локали в [`i18n.json`](./i18n.json) в формате [BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) -2. Оформите pull request - -**Формат BCP-47 для локалей:** `language[-Script][-REGION]` +**Добавление нового языка:** -- `language`: ISO 639-1/2/3 (маленькие): `en`, `zh`, `bho` -- `Script`: ISO 15924 (с заглавной): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (заглавные): `US`, `CN`, `IN` -- Примеры: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. Добавьте код локали в [`i18n.json`](./i18n.json), используя [формат BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +2. Отправьте pull request diff --git a/readme/si-LK.md b/readme/si-LK.md index 7620d386e..ce2d14640 100644 --- a/readme/si-LK.md +++ b/readme/si-LK.md @@ -3,24 +3,26 @@ Lingo.dev

- Lingo.dev - LLM බලගන්වන ප්‍රාදේශීයකරණය සඳහා විවෘත මූලාශ්‍ර i18n මෙවලම් - කට්ටලය + විවෘත-මූලාශ්‍ර ප්‍රාදේශීයකරණ ඉංජිනේරු මෙවලම්. ස්ථාවර, ගුණාත්මක පරිවර්තන සඳහා + Lingo.dev ප්‍රාදේශීයකරණ ඉංජිනේරු වේදිකාවට සම්බන්ධ වන්න.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React සඳහා Lingo Compiler (මූලික ඇල්ෆා)

@@ -72,51 +74,22 @@ ## ඉක්මන් ආරම්භය -| මෙවලම | භාවිත අවස්ථාව | ඉක්මන් විධානය | -| ---------------------------------- | ----------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React යෙදුම් සඳහා AI-සහාය i18n සැකසුම | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ගොනු පරිවර්තනය කරන්න | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions හි ස්වයංක්‍රීය පරිවර්තන pipeline | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | ගතික අන්තර්ගතය සඳහා runtime පරිවර්තනය | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrappers නොමැතිව build-time React ප්‍රාදේශීයකරණය | `withLingo()` plugin | +| මෙවලම | එය කරන දේ | ඉක්මන් විධානය | +| -------------------------------------------------- | ------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React යෙදුම් සඳහා AI-සහාය i18n පිහිටුවීම | විමසුම: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ගොනු ප්‍රාදේශීයකරණය කරන්න | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions හි අඛණ්ඩ ප්‍රාදේශීයකරණය | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n එතීම් රහිතව සාදන-කාල React ප්‍රාදේශීයකරණය | `withLingo()` plugin | ---- - -### Lingo.dev MCP - -React යෙදුම් වල i18n පිහිටුවීම දන්නා ලෙස දෝෂ සහිත වේ - පළපුරුදු සංවර්ධකයින්ට පවා. AI කේතන සහායකයින් එය වඩාත් නරක කරයි: ඔවුන් නොපවතින 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) +මෙම මෙවලම් [ප්‍රාදේශීයකරණ එන්ජින්](https://lingo.dev) වෙත සම්බන්ධ වේ – ඔබ Lingo.dev ප්‍රාදේශීයකරණ ඉංජිනේරු වේදිකාවේ නිර්මාණය කරන ස්ථාවර පරිවර්තන API. සෑම එන්ජිමක්ම සෑම ඉල්ලීමක්ම හරහා වාක්‍ය මාලා, සන්නාම හඬ සහ ප්‍රාදේශිකයට අනුව උපදෙස් රඳවා තබයි, [පාරිභාෂික දෝෂ 16.6–44.6% අඩු කරයි](https://lingo.dev/research/retrieval-augmented-localization). හෝ [ඔබේම LLM ගෙන එන්න](#lingodev-cli). -**සහාය දක්වන frameworks:** - -- Next.js (App Router සහ Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**භාවිතය:** - -ඔබේ IDE හි MCP server වින්‍යාස කිරීමෙන් පසු ([quickstart මාර්ගෝපදේශ බලන්න](https://lingo.dev/en/mcp)), ඔබේ සහායකට prompt කරන්න: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -සහායක: +--- -1. Locale-පාදක routing වින්‍යාස කරයි (උදා., `/en`, `/es`, `/pt-BR`) -2. භාෂා මාරු components පිහිටුවයි -3. ස්වයංක්‍රීය locale හඳුනාගැනීම ක්‍රියාත්මක කරයි -4. අවශ්‍ය වින්‍යාස ගොනු ජනනය කරයි +### Lingo.dev MCP -**සටහන:** AI-සහාය කේත ජනනය අ-නිර්ණායක වේ. commit කිරීමට පෙර ජනනය කළ කේතය සමාලෝචනය කරන්න. +React යෙදුම්වල i18n පිහිටුවීම දෝෂ සහිත ය – AI කේතීකරණ සහායකයින් පවා නොපවතින API මායාවන් දකිති සහ මාර්ගගත කිරීම කඩයි. Lingo.dev MCP මඟින් AI සහායකයන්ට Next.js, React Router, සහ TanStack Start සඳහා රාමු-විශේෂිත i18n දැනුමට ව්‍යුහගත ප්‍රවේශය ලබා දෙයි. Claude Code, Cursor, GitHub Copilot Agents, සහ Codex සමඟ ක්‍රියා කරයි. [ලේඛන කියවන්න →](https://lingo.dev/en/mcp) @@ -124,115 +97,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -පරිවර්තන සමමුහුර්තව තබා ගැනීම කම්මැලි කාර්යයකි. ඔබ නව string එකක් එකතු කරයි, එය පරිවර්තනය කිරීමට අමතක කරයි, ජාත්‍යන්තර පරිශීලකයින්ට බිඳුණු UI ship කරයි. නැතහොත් ඔබ පරිවර්තකයින්ට JSON ගොනු යවයි, දින ගණනක් බලා සිටියි, පසුව ඔවුන්ගේ වැඩ අතින් නැවත ඒකාබද්ධ කරයි. භාෂා 10+ දක්වා පරිමාණය කිරීම යනු නිරන්තරයෙන් සමමුහුර්තයෙන් ඉවත් වන ගොනු සිය ගණනක් කළමනාකරණය කිරීමයි. - -Lingo.dev CLI මෙය ස්වයංක්‍රීය කරයි. ඔබේ පරිවර්තන ගොනු වෙත එය යොමු කරන්න, එක් විධානයක් ධාවනය කරන්න, සහ සෑම locale එකක්ම යාවත්කාලීන වේ. Lockfile එකක් දැනටමත් පරිවර්තනය කර ඇති දේ ලුහුබඳී, එබැවින් ඔබ නව හෝ වෙනස් කළ අන්තර්ගතය සඳහා පමණක් ගෙවයි. JSON, YAML, CSV, PO ගොනු සහ markdown සඳහා සහාය දක්වයි. - -**ස්ථාපනය:** +එක් විධානයකින් JSON, YAML, markdown, CSV, සහ PO ගොනු ප්‍රාදේශීයකරණය කරන්න. අගුළු ගොනුවක් දැනටමත් ප්‍රාදේශීයකරණය කළ දේ නිරීක්ෂණය කරයි – නව හෝ වෙනස් කළ අන්තර්ගතය පමණක් සැකසෙයි. Lingo.dev හි ඔබේ ප්‍රාදේශීයකරණ එන්ජිමට පෙරනිමියෙන් පවතී, නැතහොත් ඔබේම LLM ගෙන එන්න (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**එය ක්‍රියා කරන ආකාරය:** - -1. වින්‍යාසගත ගොනු වලින් පරිවර්තනය කළ හැකි අන්තර්ගතය උකහා ගනී -2. පරිවර්තනය සඳහා අන්තර්ගතය LLM සපයන්නා වෙත යවයි -3. පරිවර්තනය කළ අන්තර්ගතය ගොනු පද්ධතියට නැවත ලියයි -4. සම්පූර්ණ කළ පරිවර්තන නිරීක්ෂණය කිරීමට `i18n.lock` ගොනුව නිර්මාණය කරයි (අතිරික්ත සැකසීම වළක්වයි) - -**වින්‍යාසය:** - -`init` විධානය `i18n.json` ගොනුවක් ජනනය කරයි. locales සහ buckets වින්‍යාස කරන්න: - -```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 සපයන්නන් සඳහා: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**සහාය දක්වන LLM සපයන්නන්:** - -- Lingo.dev Engine (නිර්දේශිතයි) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ලේඛන කියවන්න →](https://lingo.dev/en/cli) +[ලේඛන කියවන්න →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -පරිවර්තන යනු සැමවිටම "පාහේ සම්පූර්ණ" වූ විශේෂාංගයයි. ඉංජිනේරුවන් locales යාවත්කාලීන නොකර කේතය ඒකාබද්ධ කරයි. QA විසින් staging හි අතුරුදහන් පරිවර්තන හඳුනාගනී - නැතහොත් වඩාත් නරකයි, පරිශීලකයින් production හි ඒවා හඳුනාගනී. මූල හේතුව: පරිවර්තනය යනු කාල සීමා පීඩනය යටතේ මඟ හැරීමට පහසු අතින් සිදු කරන පියවරකි. - -Lingo.dev CI/CD පරිවර්තන ස්වයංක්‍රීය කරයි. සෑම push එකකම පරිවර්තනය ක්‍රියාත්මක වේ. අතුරුදහන් strings කේතය production වෙත ළඟා වීමට පෙර පුරවනු ලැබේ. විනය අවශ්‍ය නැත - pipeline එය හසුරුවයි. - -**සහාය දක්වන වේදිකා:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions ස්ථාපනය:** - -`.github/workflows/translate.yml` නිර්මාණය කරන්න: - -```yaml -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 }} -``` - -**ස්ථාපන අවශ්‍යතා:** - -1. repository secrets වෙත `LINGODOTDEV_API_KEY` එක් කරන්න (Settings > Secrets and variables > Actions) -2. PR workflows සඳහා: Settings > Actions > General හි "Allow GitHub Actions to create and approve pull requests" සබල කරන්න - -**Workflow විකල්ප:** - -පරිවර්තන සෘජුවම commit කරන්න: +ඔබේ pipeline එකේ අඛණ්ඩ ස්ථානීයකරණය. සෑම push එකකම ස්ථානීයකරණය ක්‍රියාත්මක වේ – අතුරුදහන් වූ strings කේතය නිෂ්පාදනයට ළඟා වීමට පෙර පුරවනු ලැබේ. GitHub Actions, GitLab CI/CD සහ Bitbucket Pipelines සඳහා සහාය දක්වයි. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,242 +118,36 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -පරිවර්තන සමඟ pull requests සාදන්න: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**ලබා ගත හැකි inputs:** - -| Input | පෙරනිමි | විස්තරය | -| -------------------- | ---------------------------------------------- | ------------------------------------ | -| `api-key` | (අවශ්‍යයි) | Lingo.dev API යතුර | -| `pull-request` | `false` | සෘජුවම commit කිරීම වෙනුවට PR සාදන්න | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | අභිරුචි commit පණිවිඩය | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | අභිරුචි PR මාතෘකාව | -| `working-directory` | `"."` | ධාවනය කිරීමට directory එක | -| `parallel` | `false` | සමාන්තර සැකසීම සක්‍රීය කරන්න | - -[ලේඛන කියවන්න →](https://lingo.dev/en/ci/github) +[ලේඛන කියවන්න →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -UI labels සඳහා ස්ථිතික පරිවර්තන ගොනු ක්‍රියා කරයි, නමුත් පරිශීලක-ජනනය කළ අන්තර්ගතය ගැන කුමක් කිව හැකිද? චැට් පණිවිඩ, නිෂ්පාදන විස්තර, සහාය ටිකට් - build time එකේදී නොපවතින අන්තර්ගතය පෙර-පරිවර්තනය කළ නොහැක. ඔබට පරිවර්තනය නොකළ පෙළ පෙන්වීමට හෝ අභිරුචි පරිවර්තන pipeline එකක් ගොඩනැගීමට සිදුවේ. +backend කේතයෙන් සෘජුවම ඔබේ ස්ථානීයකරණ engine එක ඇමතුම් කරන්න. webhook බෙදාහැරීම සමඟ සමමුහූර්ත සහ අසමමුහූර්ත ස්ථානීයකරණය, locale එකකට වෙන්ව අසාර්ථකත්ව හුදකලා කිරීම සහ WebSocket හරහා තත්‍ය කාලීන ප්‍රගතිය. -Lingo.dev SDK runtime එකේදී අන්තර්ගතය පරිවර්තනය කරයි. ඕනෑම පෙළක්, වස්තුවක් හෝ HTML එකක් යවන්න සහ දේශීයකරණය කළ අනුවාදයක් ආපසු ලබා ගන්න. තත්‍ය-කාලීන චැට්, ගතික දැනුම්දීම් හෝ deployment එකෙන් පසු පැමිණෙන ඕනෑම අන්තර්ගතයක් සඳහා ක්‍රියා කරයි. JavaScript, PHP, Python සහ Ruby සඳහා ලබා ගත හැක. - -**ස්ථාපනය:** - -```bash -npm install lingo.dev -``` - -**භාවිතය:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**ලබා ගත හැකි SDKs:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web apps, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ලේඛන කියවන්න →](https://lingo.dev/en/sdk) +[ලේඛන කියවන්න →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React සඳහා Lingo Compiler (මුල් අදියර alpha) -සාම්ප්‍රදායික i18n ආක්‍රමණශීලී වේ. ඔබ සෑම string එකක්ම `t()` ශ්‍රිත වලින් ඔතා, පරිවර්තන යතුරු නිර්මාණය කරයි (`home.hero.title.v2`), සමාන්තර JSON ගොනු නඩත්තු කරයි, හා ඔබේ සංරචක ප්‍රාදේශීයකරණය boilerplate සමඟ විශාල වීමට නිරීක්ෂණය කරයි. මෙය එතරම් කම්මැලිද යත් කණ්ඩායම් ජාත්‍යන්තරකරණය විශාල refactor එකක් බවට පත්වන තෙක් ප්‍රමාද කරයි. +i18n wrappers නොමැතිව build-time React ස්ථානීයකරණය. සරල ඉංග්‍රීසි පාඨය සමඟ components ලියන්න – compiler විසින් පරිවර්තනය කළ හැකි strings හඳුනාගෙන build කාලයේ දී ස්ථානීයකරණය කළ variants උත්පාදනය කරයි. පරිවර්තන යතුරු නැත, JSON ගොනු නැත, `t()` functions නැත. Next.js (App Router) සහ Vite + React සඳහා සහාය දක්වයි. -Lingo.dev Compiler උත්සවය ඉවත් කරයි. සරල ඉංග්‍රීසි පාඨයෙන් React සංරචක ලියන්න. සම්පාදකය ගොඩනැගීමේ කාලයේදී පරිවර්තනය කළ හැකි තන්තු හඳුනාගෙන ස්වයංක්‍රීයව දේශීයකරණය කළ ප්‍රභේද ජනනය කරයි. යතුරු නැත, JSON ගොනු නැත, ආවරණ ශ්‍රිත නැත - බහු භාෂාවලින් ක්‍රියා කරන React කේතය පමණි. - -**ස්ථාපනය:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**සත්‍යාපනය:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**වින්‍යාසය (Vite):** - -```ts -// 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(), - ], -}); -``` - -**සපයන්නා සැකසීම:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**භාෂා මාරුකරු:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**සංවර්ධනය:** `npm run dev` (ව්‍යාජ පරිවර්තකය භාවිතා කරයි, API ඇමතුම් නැත) - -**නිෂ්පාදනය:** `usePseudotranslator: false` සකසන්න, පසුව `next build` - -`.lingo/` නාමාවලිය version control වෙත commit කරන්න. - -**ප්‍රධාන විශේෂාංග:** - -- ධාවන කාල කාර්ය සාධන පිරිවැය ශුන්‍යයි -- පරිවර්තන යතුරු හෝ JSON ගොනු නැත -- `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) - -අතිරේක රාමු සහාය සැලසුම් කර ඇත. - -[ලේඛන කියවන්න →](https://lingo.dev/en/compiler) +[ලේඛන කියවන්න →](https://lingo.dev/en/docs/react/compiler) --- ## දායකත්වය -දායකත්වයන් සාදරයෙන් පිළිගනිමු. කරුණාකර මෙම මාර්ගෝපදේශ අනුගමනය කරන්න: +දායකත්වය සාදරයෙන් පිළිගනිමු. කරුණාකර මෙම මාර්ගෝපදේශ අනුගමනය කරන්න: 1. **ගැටළු:** [දෝෂ වාර්තා කරන්න හෝ විශේෂාංග ඉල්ලන්න](https://github.com/lingodotdev/lingo.dev/issues) 2. **Pull Requests:** [වෙනස්කම් ඉදිරිපත් කරන්න](https://github.com/lingodotdev/lingo.dev/pulls) - - සෑම PR එකකටම changeset එකක් අවශ්‍යයි: `pnpm new` (හෝ නිකුතුවට අදාළ නොවන වෙනස්කම් සඳහා `pnpm new:empty`) + - සෑම PR එකක්ම changeset එකක් අවශ්‍ය වේ: `pnpm new` (හෝ නිකුත් නොවන වෙනස්කම් සඳහා `pnpm new:empty`) - ඉදිරිපත් කිරීමට පෙර පරීක්ෂණ සාර්ථක වන බව සහතික කරන්න 3. **සංවර්ධනය:** මෙය pnpm + turborepo monorepo එකකි - - dependencies ස්ථාපනය කරන්න: `pnpm install` + - යැපුම් ස්ථාපනය කරන්න: `pnpm install` - පරීක්ෂණ ධාවනය කරන්න: `pnpm test` - Build කරන්න: `pnpm build` @@ -483,28 +155,21 @@ export function LanguageSwitcher() { ## තරු ඉතිහාසය -Lingo.dev ප්‍රයෝජනවත් නම්, අපට තරුවක් ලබා දී තරු 10,000ක් කරා ළඟා වීමට අපට උදව් කරන්න! +ඔබට Lingo.dev ප්‍රයෝජනවත් නම්, අපට තරුවක් දී තරු 10,000 ක් ලඟා කර ගැනීමට අපට උදව් කරන්න! [ -![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![තරු ඉතිහාස සටහන](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## දේශීයකරණය කළ ප්‍රලේඛනය +## ප්‍රාදේශීයකරණය කළ ලේඛන **ලබා ගත හැකි පරිවර්තන:** [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) -**නව භාෂාවක් එකතු කිරීම:** +**නව භාෂාවක් එක් කිරීම:** -1. [BCP-47 ආකෘතිය](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) භාවිතයෙන් [`i18n.json`](./i18n.json) වෙත locale කේතය එකතු කරන්න +1. [BCP-47 ආකෘතිය](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) භාවිතයෙන් [`i18n.json`](./i18n.json) වෙත ප්‍රාදේශීය කේතය එක් කරන්න 2. Pull request එකක් ඉදිරිපත් කරන්න - -**BCP-47 locale ආකෘතිය:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (lowercase): `en`, `zh`, `bho` -- `Script`: ISO 15924 (title case): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (uppercase): `US`, `CN`, `IN` -- උදාහරණ: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/ta-IN.md b/readme/ta-IN.md index 89237d774..dc5f39b60 100644 --- a/readme/ta-IN.md +++ b/readme/ta-IN.md @@ -3,24 +3,27 @@ Lingo.dev

- Lingo.dev - LLM-இயக்கப்படும் உள்ளூர்மயமாக்கலுக்கான திறந்த மூல i18n - கருவித்தொகுப்பு + திறந்த மூல உள்ளூர்மயமாக்கல் பொறியியல் கருவிகள். நிலையான, தரமான + மொழிபெயர்ப்புகளுக்காக Lingo.dev உள்ளூர்மயமாக்கல் பொறியியல் தளத்துடன் + இணைக்கவும்.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React-க்கான Lingo Compiler (ஆரம்ப ஆல்ஃபா)

@@ -72,51 +75,22 @@ ## விரைவு தொடக்கம் -| கருவி | பயன்பாட்டு நிகழ்வு | விரைவு கட்டளை | -| ---------------------------------- | -------------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React பயன்பாடுகளுக்கான AI-உதவி i18n அமைப்பு | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO கோப்புகளை மொழிபெயர்க்கவும் | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions இல் தானியங்கு மொழிபெயர்ப்பு pipeline | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | டைனமிக் உள்ளடக்கத்திற்கான runtime மொழிபெயர்ப்பு | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrappers இல்லாமல் build-time React உள்ளூர்மயமாக்கல் | `withLingo()` plugin | +| கருவி | இது என்ன செய்கிறது | விரைவு கட்டளை | +| -------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React பயன்பாடுகளுக்கான AI உதவியுடன் கூடிய i18n அமைவு | Prompt: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO கோப்புகளை உள்ளூர்மயமாக்கவும் | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions இல் தொடர்ச்சியான உள்ளூர்மயமாக்கல் | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n wrappers இல்லாமல் build-time React உள்ளூர்மயமாக்கல் | `withLingo()` plugin | ---- - -### Lingo.dev MCP - -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) +இந்தக் கருவிகள் [உள்ளூர்மயமாக்கல் இயந்திரங்களுடன்](https://lingo.dev) இணைகின்றன – Lingo.dev உள்ளூர்மயமாக்கல் பொறியியல் தளத்தில் நீங்கள் உருவாக்கும் நிலையான மொழிபெயர்ப்பு APIகள். ஒவ்வொரு இயந்திரமும் சொற்களஞ்சியங்கள், பிராண்ட் குரல், மற்றும் ஒவ்வொரு கோரிக்கையிலும் மொழி வாரியான வழிமுறைகளைத் தக்கவைத்துக்கொள்கிறது, [சொற்பிழைகளை 16.6–44.6% குறைக்கிறது](https://lingo.dev/research/retrieval-augmented-localization). அல்லது [உங்கள் சொந்த LLM ஐக் கொண்டுவாருங்கள்](#lingodev-cli). -**ஆதரிக்கப்படும் frameworks:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**பயன்பாடு:** - -உங்கள் IDE-யில் MCP server-ஐ கட்டமைத்த பிறகு ([quickstart வழிகாட்டிகளைப் பார்க்கவும்](https://lingo.dev/en/mcp)), உங்கள் உதவியாளரிடம் கேளுங்கள்: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -உதவியாளர் செய்யும்: +--- -1. Locale-அடிப்படையிலான routing-ஐ கட்டமைக்கும் (எ.கா., `/en`, `/es`, `/pt-BR`) -2. மொழி மாற்றும் components-ஐ அமைக்கும் -3. தானியங்கு locale கண்டறிதலை செயல்படுத்தும் -4. தேவையான கட்டமைப்பு கோப்புகளை உருவாக்கும் +### Lingo.dev MCP -**குறிப்பு:** AI-உதவி code உருவாக்கம் non-deterministic ஆகும். commit செய்வதற்கு முன் உருவாக்கப்பட்ட code-ஐ மதிப்பாய்வு செய்யவும். +React பயன்பாடுகளில் i18n ஐ அமைப்பது பிழைகளுக்கு இடமளிக்கும் – AI coding உதவியாளர்கள் கூட இல்லாத APIகளை கற்பனை செய்து routing ஐ உடைக்கின்றன. Lingo.dev MCP, Next.js, React Router, மற்றும் TanStack Start ஆகியவற்றிற்கான framework-சார்ந்த i18n அறிவுக்கான கட்டமைக்கப்பட்ட அணுகலை AI உதவியாளர்களுக்கு வழங்குகிறது. Claude Code, Cursor, GitHub Copilot Agents, மற்றும் Codex உடன் செயல்படுகிறது. [ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/mcp) @@ -124,115 +98,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -மொழிபெயர்ப்புகளை ஒத்திசைவில் வைத்திருப்பது சலிப்பானது. நீங்கள் புதிய string-ஐ சேர்க்கிறீர்கள், அதை மொழிபெயர்க்க மறக்கிறீர்கள், சர்வதேச பயனர்களுக்கு உடைந்த UI-ஐ அனுப்புகிறீர்கள். அல்லது நீங்கள் மொழிபெயர்ப்பாளர்களுக்கு JSON கோப்புகளை அனுப்புகிறீர்கள், நாட்கள் காத்திருக்கிறீர்கள், பின்னர் அவர்களின் வேலையை கைமுறையாக மீண்டும் இணைக்கிறீர்கள். 10+ மொழிகளுக்கு அளவிடுவது என்பது தொடர்ந்து ஒத்திசைவிலிருந்து விலகும் நூற்றுக்கணக்கான கோப்புகளை நிர்வகிப்பதாகும். - -Lingo.dev CLI இதை தானியங்குபடுத்துகிறது. உங்கள் மொழிபெயர்ப்பு கோப்புகளை சுட்டிக்காட்டி, ஒரு கட்டளையை இயக்கவும், ஒவ்வொரு locale-ம் புதுப்பிக்கப்படும். ஏற்கனவே மொழிபெயர்க்கப்பட்டதை lockfile கண்காணிக்கிறது, எனவே நீங்கள் புதிய அல்லது மாற்றப்பட்ட content-க்கு மட்டுமே பணம் செலுத்துகிறீர்கள். JSON, YAML, CSV, PO கோப்புகள் மற்றும் markdown-ஐ ஆதரிக்கிறது. - -**அமைப்பு:** +JSON, YAML, markdown, CSV, மற்றும் PO கோப்புகளை ஒரே கட்டளையில் உள்ளூர்மயமாக்கவும். lockfile ஏற்கனவே உள்ளூர்மயமாக்கப்பட்டதைக் கண்காணிக்கிறது – புதிய அல்லது மாற்றப்பட்ட உள்ளடக்கம் மட்டுமே செயலாக்கப்படுகிறது. Lingo.dev இல் உங்கள் உள்ளூர்மயமாக்கல் இயந்திரம் இயல்பாக அமைக்கப்பட்டுள்ளது, அல்லது உங்கள் சொந்த LLM ஐக் கொண்டுவாருங்கள் (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**இது எவ்வாறு செயல்படுகிறது:** - -1. கட்டமைக்கப்பட்ட கோப்புகளிலிருந்து மொழிபெயர்க்கக்கூடிய உள்ளடக்கத்தை பிரித்தெடுக்கிறது -2. மொழிபெயர்ப்புக்காக உள்ளடக்கத்தை LLM provider-க்கு அனுப்புகிறது -3. மொழிபெயர்க்கப்பட்ட உள்ளடக்கத்தை filesystem-க்கு மீண்டும் எழுதுகிறது -4. முடிக்கப்பட்ட மொழிபெயர்ப்புகளை கண்காணிக்க `i18n.lock` கோப்பை உருவாக்குகிறது (தேவையற்ற செயலாக்கத்தைத் தவிர்கிறது) - -**கட்டமைப்பு:** - -`init` கட்டளை ஒரு `i18n.json` கோப்பை உருவாக்குகிறது. locales மற்றும் buckets-ஐ கட்டமைக்கவும்: - -```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 providers-க்கு: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**ஆதரிக்கப்படும் LLM providers:** - -- Lingo.dev Engine (பரிந்துரைக்கப்படுகிறது) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/cli) +[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -மொழிபெயர்ப்புகள் எப்போதும் "கிட்டத்தட்ட முடிந்துவிட்ட" அம்சமாகும். பொறியாளர்கள் 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` உருவாக்கவும்: - -```yaml -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 }} -``` - -**அமைப்பு தேவைகள்:** - -1. repository secrets-க்கு `LINGODOTDEV_API_KEY` சேர்க்கவும் (Settings > Secrets and variables > Actions) -2. PR workflows-க்கு: Settings > Actions > General-இல் "Allow GitHub Actions to create and approve pull requests" இயக்கவும் - -**Workflow விருப்பங்கள்:** - -மொழிபெயர்ப்புகளை நேரடியாக commit செய்யவும்: +உங்கள் பைப்லைனில் தொடர்ச்சியான உள்ளூர்மயமாக்கல். ஒவ்வொரு புஷும் உள்ளூர்மயமாக்கலைத் தூண்டுகிறது – குறியீடு உற்பத்தியை அடையும் முன் காணாமல் போன சரங்கள் நிரப்பப்படுகின்றன. GitHub Actions, GitLab CI/CD மற்றும் Bitbucket Pipelines ஆகியவற்றை ஆதரிக்கிறது. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,229 +119,23 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -மொழிபெயர்ப்புகளுடன் pull requests உருவாக்கவும்: - -```yaml -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` | இணையான செயலாக்கத்தை இயக்கவும் | - -[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/ci/github) +[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -UI labels-க்கு static மொழிபெயர்ப்பு கோப்புகள் வேலை செய்கின்றன, ஆனால் பயனர் உருவாக்கிய content-ஐப் பற்றி என்ன? Chat செய்திகள், தயாரிப்பு விளக்கங்கள், support tickets - build time-இல் இல்லாத content-ஐ முன்கூட்டியே மொழிபெயர்க்க முடியாது. மொழிபெயர்க்கப்படாத உரையைக் காட்டுவதில் அல்லது தனிப்பயன் மொழிபெயர்ப்பு pipeline உருவாக்குவதில் நீங்கள் சிக்கிக்கொள்கிறீர்கள். +பேக்எண்ட் குறியீட்டிலிருந்து நேரடியாக உங்கள் உள்ளூர்மயமாக்கல் இயந்திரத்தை அழைக்கவும். webhook விநியோகம், மொழிவாரி தோல்வி தனிமைப்படுத்தல் மற்றும் WebSocket வழியாக நேரடி முன்னேற்றம் ஆகியவற்றுடன் ஒத்திசைவான மற்றும் async உள்ளூர்மயமாக்கல். -Lingo.dev SDK runtime-இல் content-ஐ மொழிபெயர்க்கிறது. எந்த உரை, object அல்லது HTML-ஐயும் அனுப்பி, localized version-ஐப் பெறுங்கள். real-time chat, dynamic அறிவிப்புகள் அல்லது deployment-க்குப் பிறகு வரும் எந்த content-க்கும் வேலை செய்கிறது. JavaScript, PHP, Python மற்றும் Ruby-க்குக் கிடைக்கிறது. - -**நிறுவல்:** - -```bash -npm install lingo.dev -``` - -**பயன்பாடு:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**கிடைக்கும் SDKs:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web apps, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/sdk) +[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React க்கான Lingo Compiler (ஆரம்ப ஆல்பா) -பாரம்பரிய i18n ஊடுருவக்கூடியது. ஒவ்வொரு string-ஐயும் `t()` functions-இல் நிரப்ப வேண்டியிருக்கும், மொழிபெயர்ப்பு keys-ஐ உருவாக்க வேண்டும் (`home.hero.title.v2`), இணைப்புப் JSON கோப்புகளை பராமரிக்க வேண்டும், localization boilerplate காரணமாக உங்கள் components பெரிதாகும். இது மிகவும் சலிப்பானதாய் இருப்பதால், குழுக்கள் internationalization-ஐ பெரிய refactor ஆகும் வரை தாமதிக்கின்றன. +i18n ரேப்பர்கள் இல்லாமல் பில்ட்-டைம் React உள்ளூர்மயமாக்கல். எளிய ஆங்கில உரையுடன் கூறுகளை எழுதுங்கள் – கம்பைலர் மொழிபெயர்க்கக்கூடிய சரங்களைக் கண்டறிந்து பில்ட் நேரத்தில் உள்ளூர்மயமாக்கப்பட்ட மாறுபாடுகளை உருவாக்குகிறது. மொழிபெயர்ப்பு விசைகள் இல்லை, JSON கோப்புகள் இல்லை, `t()` செயல்பாடுகள் இல்லை. Next.js (App Router) மற்றும் Vite + React ஐ ஆதரிக்கிறது. -Lingo.dev Compiler சடங்குகளை நீக்குகிறது. சாதாரண ஆங்கில உரையுடன் React components எழுதுங்கள். Compiler build நேரத்தில் மொழிபெயர்க்கக்கூடிய strings-ஐ கண்டறிந்து தானாகவே localized variants-ஐ உருவாக்குகிறது. Keys இல்லை, JSON கோப்புகள் இல்லை, wrapper functions இல்லை - பல மொழிகளில் வேலை செய்யும் React code மட்டுமே. - -**நிறுவல்:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**அங்கீகாரம்:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**உள்ளமைவு (Vite):** - -```ts -// 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 அமைப்பு:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**மொழி மாற்றி:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Development:** `npm run dev` (pseudotranslator-ஐ பயன்படுத்துகிறது, API அழைப்புகள் இல்லை) - -**Production:** `usePseudotranslator: false`-ஐ அமைக்கவும், பின்னர் `next build` - -`.lingo/` அடைவை version control-க்கு commit செய்யவும். - -**முக்கிய அம்சங்கள்:** - -- இயக்க நேரத்தில் முன்னிலைச் செலவு இல்லை -- மொழிபெயர்ப்பு keys அல்லது JSON கோப்புகள் இல்லை -- `t()` functions அல்லது `` wrapper components இல்லை -- JSX-இல் மொழிபெயர்க்கக் கூடிய உரையை தானாக கண்டறிதல் -- TypeScript ஆதரவு -- பலவசை (plurals)-க்கு ICU MessageFormat -- `data-lingo-override` attribute-இன் மூலம் கைமுறை overrides -- உட்பட்ட மொழிபெயர்ப்பு editor widget - -**Build modes:** - -- `pseudotranslator`: Placeholder மொழிபெயர்ப்புகளுடன் Development mode (API செலவு இல்லை) -- `real`: LLMs பயன்படுத்தி உண்மையான மொழிபெயர்ப்பை உருவாக்கவும் -- `cache-only`: CI-யிலிருந்து முன்கூட்டியே உருவாக்கப்பட்ட மொழிபெயர்ப்புகளுடன் Production mode (API அழைப்புகள் இல்லை) - -**ஆதரிக்கப்படும் frameworks:** - -- Next.js (React Server Components உடன் App Router) -- Vite + React (SPA மற்றும் SSR) - -கூடுதல் framework ஆதரவு திட்டமிடப்பட்டுள்ளது. - -[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/compiler) +[ஆவணங்களைப் படிக்கவும் →](https://lingo.dev/en/docs/react/compiler) --- @@ -470,24 +143,24 @@ export function LanguageSwitcher() { பங்களிப்புகள் வரவேற்கப்படுகின்றன. தயவுசெய்து இந்த வழிகாட்டுதல்களைப் பின்பற்றவும்: -1. **சிக்கல்கள்:** [பிழைகள் அல்லது அம்ச கோரிக்கைகள் பதிவு செய்யவும்](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Requests:** [மாற்றங்களை சமர்ப்பிக்கவும்](https://github.com/lingodotdev/lingo.dev/pulls) - - ஒவ்வொரு PR-க்கும் changeset: `pnpm new` (அல்லது non-release மாற்றங்களுக்கு `pnpm new:empty`) - - சமர்ப்பிப்பதற்கு முன் test-கள் பாஸ் ஆவதை உறுதி செய்யவும் -3. **Development:** இது ஒரு pnpm + turborepo monorepo - - dependencies நிறுவவும்: `pnpm install` - - test-கள் இயக்கவும்: `pnpm test` - - Build: `pnpm build` +1. **சிக்கல்கள்:** [பிழைகளைப் புகாரளிக்கவும் அல்லது அம்சங்களைக் கோரவும்](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Requests:** [மாற்றங்களைச் சமர்ப்பிக்கவும்](https://github.com/lingodotdev/lingo.dev/pulls) + - ஒவ்வொரு PR க்கும் changeset தேவை: `pnpm new` (அல்லது வெளியீடு அல்லாத மாற்றங்களுக்கு `pnpm new:empty`) + - சமர்ப்பிக்கும் முன் சோதனைகள் தேர்ச்சி பெறுவதை உறுதிசெய்யவும் +3. **மேம்பாடு:** இது ஒரு pnpm + turborepo monorepo + - சார்புகளை நிறுவவும்: `pnpm install` + - சோதனைகளை இயக்கவும்: `pnpm test` + - உருவாக்கவும்: `pnpm build` **ஆதரவு:** [Discord சமூகம்](https://lingo.dev/go/discord) -## Star வரலாறு +## நட்சத்திர வரலாறு -Lingo.dev பயனுள்ளதாக இருந்தால், எங்களுக்கு star கொடுத்து 10,000 stars அடைய உதவவும்! +Lingo.dev பயனுள்ளதாக இருந்தால், எங்களுக்கு ஒரு நட்சத்திரம் கொடுத்து 10,000 நட்சத்திரங்களை அடைய எங்களுக்கு உதவவும்! [ -![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![நட்சத்திர வரலாறு விளக்கப்படம்](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -499,12 +172,5 @@ Lingo.dev பயனுள்ளதாக இருந்தால், எங் **புதிய மொழியைச் சேர்ப்பது:** -1. [`i18n.json`](./i18n.json)-இல் [BCP-47 format](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) பயன்படுத்தி locale code சேர்க்கவும் -2. pull request சமர்ப்பிக்கவும் - -**BCP-47 locale format:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (சிற்றெழுத்து): `en`, `zh`, `bho` -- `Script`: ISO 15924 (தலைப்பெழுத்து): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (பெரிய எழுத்து): `US`, `CN`, `IN` -- எடுத்துக்காட்டுகள்: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` \ No newline at end of file +1. [BCP-47 வடிவமைப்பைப்](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) பயன்படுத்தி [`i18n.json`](./i18n.json) இல் மொழிக் குறியீட்டைச் சேர்க்கவும் +2. புல் ரிக்வெஸ்டைச் சமர்ப்பிக்கவும் \ No newline at end of file diff --git a/readme/te-IN.md b/readme/te-IN.md index 86782da29..be2c0006d 100644 --- a/readme/te-IN.md +++ b/readme/te-IN.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM-ఆధారిత స్థానికీకరణ కోసం ఓపెన్-సోర్స్ i18n టూల్‌కిట్ + ఓపెన్-సోర్స్ స్థానికీకరణ ఇంజనీరింగ్ టూల్స్. నాణ్యమైన, స్థిరమైన అనువాదాల కోసం + Lingo.dev స్థానికీకరణ ఇంజనీరింగ్ ప్లాట్‌ఫారమ్‌కు కనెక్ట్ అవ్వండి.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler for React (ప్రారంభ ఆల్ఫా)

@@ -71,51 +74,22 @@ ## త్వరిత ప్రారంభం -| టూల్ | వినియోగ సందర్భం | త్వరిత కమాండ్ | -| ---------------------------------- | -------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React యాప్‌ల కోసం AI-సహాయక i18n సెటప్ | ప్రాంప్ట్: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ఫైల్స్ అనువదించండి | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions లో ఆటోమేటెడ్ అనువాద పైప్‌లైన్ | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | డైనమిక్ కంటెంట్ కోసం రన్‌టైమ్ అనువాదం | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n రాపర్స్ లేకుండా బిల్డ్-టైమ్ React స్థానికీకరణ | `withLingo()` ప్లగిన్ | +| టూల్ | ఇది ఏం చేస్తుంది | శీఘ్ర కమాండ్ | +| -------------------------------------------------- | ------------------------------------------------------ | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React యాప్‌ల కోసం AI-సహాయిత i18n సెటప్ | ప్రాంప్ట్: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO ఫైళ్లను స్థానికీకరించండి | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions లో నిరంతర స్థానికీకరణ | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n రాపర్లు లేకుండా బిల్డ్-టైమ్ React స్థానికీకరణ | `withLingo()` ప్లగిన్ | ---- - -### Lingo.dev MCP - -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) +ఈ టూల్స్ [స్థానికీకరణ ఇంజన్లు](https://lingo.dev)కు కనెక్ట్ అవుతాయి – మీరు Lingo.dev స్థానికీకరణ ఇంజనీరింగ్ ప్లాట్‌ఫారమ్‌లో సృష్టించే స్టేట్‌ఫుల్ అనువాద APIలు. ప్రతి ఇంజన్ గ్లాసరీలు, బ్రాండ్ వాయిస్, మరియు లొకేల్-స్పెసిఫిక్ సూచనలను ప్రతి రిక్వెస్ట్‌లో నిలుపుకుంటుంది, [పారిభాషిక దోషాలను 16.6–44.6% తగ్గిస్తుంది](https://lingo.dev/research/retrieval-augmented-localization). లేదా [మీ స్వంత LLMని తీసుకురండి](#lingodev-cli). -**సపోర్ట్ చేయబడిన ఫ్రేమ్‌వర్క్‌లు:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**వినియోగం:** - -మీ IDEలో MCP సర్వర్‌ను కాన్ఫిగర్ చేసిన తర్వాత ([క్విక్‌స్టార్ట్ గైడ్‌లు చూడండి](https://lingo.dev/en/mcp)), మీ అసిస్టెంట్‌ను ప్రాంప్ట్ చేయండి: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -అసిస్టెంట్ ఇలా చేస్తుంది: +--- -1. లొకేల్-బేస్డ్ రూటింగ్‌ను కాన్ఫిగర్ చేస్తుంది (ఉదా., `/en`, `/es`, `/pt-BR`) -2. లాంగ్వేజ్ స్విచింగ్ కాంపోనెంట్‌లను సెటప్ చేస్తుంది -3. ఆటోమేటిక్ లొకేల్ డిటెక్షన్‌ను ఇంప్లిమెంట్ చేస్తుంది -4. అవసరమైన కాన్ఫిగరేషన్ ఫైల్స్‌ను జనరేట్ చేస్తుంది +### Lingo.dev MCP -**గమనిక:** AI-అసిస్టెడ్ కోడ్ జనరేషన్ నాన్-డిటర్మినిస్టిక్. కమిట్ చేయడానికి ముందు జనరేట్ చేసిన కోడ్‌ను రివ్యూ చేయండి. +React యాప్‌లలో i18n సెటప్ చేయడం దోష-ప్రవణమైనది – AI కోడింగ్ అసిస్టెంట్లు కూడా ఉనికిలో లేని APIలను ఊహించి, రౌటింగ్‌ను భగ్నం చేస్తాయి. Lingo.dev MCP, Next.js, React Router, మరియు TanStack Start కోసం ఫ్రేమ్‌వర్క్-స్పెసిఫిక్ i18n జ్ఞానానికి AI అసిస్టెంట్లకు నిర్మాణాత్మక యాక్సెస్ అందిస్తుంది. Claude Code, Cursor, GitHub Copilot Agents, మరియు Codex తో పనిచేస్తుంది. [డాక్స్ చదవండి →](https://lingo.dev/en/mcp) @@ -123,115 +97,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -అనువాదాలను సింక్‌లో ఉంచడం శ్రమతో కూడుకున్నది. మీరు కొత్త స్ట్రింగ్ జోడిస్తారు, దాన్ని అనువదించడం మర్చిపోతారు, అంతర్జాతీయ వినియోగదారులకు విచ్ఛిన్నమైన UIని షిప్ చేస్తారు. లేదా మీరు అనువాదకులకు JSON ఫైల్స్ పంపుతారు, రోజుల పాటు వేచి ఉంటారు, తర్వాత వారి పనిని మాన్యువల్‌గా తిరిగి మెర్జ్ చేస్తారు. 10+ భాషలకు స్కేల్ చేయడం అంటే నిరంతరం సింక్ నుండి డ్రిఫ్ట్ అయ్యే వందలాది ఫైల్స్‌ను నిర్వహించడం. - -Lingo.dev CLI దీన్ని ఆటోమేట్ చేస్తుంది. మీ అనువాద ఫైల్స్ వైపు పాయింట్ చేయండి, ఒక కమాండ్ రన్ చేయండి, మరియు ప్రతి లొకేల్ అప్‌డేట్ అవుతుంది. లాక్‌ఫైల్ ఇప్పటికే అనువదించబడిన వాటిని ట్రాక్ చేస్తుంది, కాబట్టి మీరు కొత్త లేదా మార్చబడిన కంటెంట్ కోసం మాత్రమే చెల్లిస్తారు. JSON, YAML, CSV, PO ఫైల్స్ మరియు markdown సపోర్ట్ చేస్తుంది. - -**సెటప్:** +JSON, YAML, markdown, CSV, మరియు PO ఫైళ్లను ఒకే కమాండ్‌లో స్థానికీకరించండి. ఇప్పటికే స్థానికీకరించబడినవి ట్రాక్ చేసే లాక్‌ఫైల్ – కొత్త లేదా మార్చబడిన కంటెంట్ మాత్రమే ప్రాసెస్ అవుతుంది. Lingo.dev లోని మీ స్థానికీకరణ ఇంజన్‌కు డిఫాల్ట్‌గా ఉంటుంది, లేదా మీ స్వంత LLMని తీసుకురండి (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**ఇది ఎలా పనిచేస్తుంది:** - -1. కాన్ఫిగర్ చేసిన ఫైల్స్ నుండి అనువదించదగిన కంటెంట్‌ను సేకరిస్తుంది -2. అనువాదం కోసం కంటెంట్‌ను LLM ప్రొవైడర్‌కు పంపుతుంది -3. అనువదించిన కంటెంట్‌ను తిరిగి ఫైల్ సిస్టమ్‌కి వ్రాస్తుంది -4. పూర్తయిన అనువాదాలను ట్రాక్ చేయడానికి `i18n.lock` ఫైల్‌ను సృష్టిస్తుంది (అనవసర ప్రాసెసింగ్ నివారిస్తుంది) - -**కాన్ఫిగరేషన్:** - -`init` కమాండ్ `i18n.json` ఫైల్‌ను జనరేట్ చేస్తుంది. లొకేల్‌లు మరియు బకెట్లను కాన్ఫిగర్ చేయండి: - -```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 ప్రొవైడర్ల కోసం: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**సపోర్ట్ చేయబడిన LLM ప్రొవైడర్లు:** - -- Lingo.dev Engine (సిఫార్సు చేయబడింది) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[డాక్స్ చదవండి →](https://lingo.dev/en/cli) +[డాక్స్ చదవండి →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -అనువాదాలు ఎల్లప్పుడూ "దాదాపు పూర్తయింది" అనే ఫీచర్. ఇంజనీర్లు లొకేల్స్‌ను అప్‌డేట్ చేయకుండా కోడ్‌ను మెర్జ్ చేస్తారు. QA స్టేజింగ్‌లో తప్పిపోయిన అనువాదాలను గుర్తిస్తుంది - లేదా అధ్వాన్నంగా, యూజర్లు వాటిని ప్రొడక్షన్‌లో గుర్తిస్తారు. మూల కారణం: అనువాదం అనేది డెడ్‌లైన్ ప్రెజర్‌లో స్కిప్ చేయడం సులభమైన మాన్యువల్ స్టెప్. - -Lingo.dev CI/CD అనువాదాలను ఆటోమేటిక్‌గా చేస్తుంది. ప్రతి పుష్ అనువాదాన్ని ట్రిగ్గర్ చేస్తుంది. తప్పిపోయిన స్ట్రింగ్స్ కోడ్ ప్రొడక్షన్‌కు చేరుకునే ముందే పూరించబడతాయి. క్రమశిక్షణ అవసరం లేదు - పైప్‌లైన్ దానిని నిర్వహిస్తుంది. - -**సపోర్ట్ చేయబడిన ప్లాట్‌ఫారమ్‌లు:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions సెటప్:** - -`.github/workflows/translate.yml` ని సృష్టించండి: - -```yaml -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 }} -``` - -**సెటప్ అవసరాలు:** - -1. రిపోజిటరీ సీక్రెట్స్ (Settings > Secrets and variables > Actions) లో `LINGODOTDEV_API_KEY` ని జోడించండి -2. PR వర్క్‌ఫ్లో కోసం: Settings > Actions > General లో “Allow GitHub Actions to create and approve pull requests” ని ఎనేబుల్ చేయండి - -**వర్క్‌ఫ్లో ఆప్షన్స్:** - -అనువాదాలను నేరుగా కమిట్ చేయండి: +మీ పైప్‌లైన్‌లో నిరంతర స్థానికీకరణ. ప్రతి పుష్ స్థానికీకరణను ప్రేరేపిస్తుంది – కోడ్ ప్రొడక్షన్‌కు చేరే ముందు తప్పిపోయిన స్ట్రింగ్‌లు పూరించబడతాయి. GitHub Actions, GitLab CI/CD మరియు Bitbucket Pipelines కి మద్దతు ఇస్తుంది. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,254 +118,48 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -అనువాదాలతో పుల్ రిక్వెస్ట్‌లను క్రియేట్ చేయండి: - -```yaml -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"` | కస్టమ్ commit మెసేజ్ | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | కస్టమ్ PR టైటిల్ | -| `working-directory` | `"."` | ఎక్కడ రన్ చేయాలో డైరెక్టరీ | -| `parallel` | `false` | పారలెల్ ప్రాసెసింగ్‌ని ఎనేబుల్ చేయండి | - -[డాక్స్ చదవండి →](https://lingo.dev/en/ci/github) +[డాక్స్ చదవండి →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -UI లేబుల్స్ కోసం స్టాటిక్ అనువాద ఫైల్స్ పని చేస్తాయి, కానీ యూజర్-జనరేటెడ్ కంటెంట్ గురించి ఏమిటి? చాట్ మెసేజ్‌లు, ప్రొడక్ట్ వివరణలు, సపోర్ట్ టికెట్లు - బిల్డ్ టైమ్‌లో ఉనికిలో లేని కంటెంట్‌ను ప్రీ-ట్రాన్స్‌లేట్ చేయలేము. మీరు అనువదించని టెక్స్ట్‌ను చూపించడం లేదా కస్టమ్ అనువాద పైప్‌లైన్‌ను నిర్మించడంలో చిక్కుకుపోతారు. +బ్యాకెండ్ కోడ్ నుండి నేరుగా మీ స్థానికీకరణ ఇంజిన్‌ను కాల్ చేయండి. వెబ్‌హుక్ డెలివరీ, లొకేల్‌కు వైఫల్యం ఐసొలేషన్ మరియు WebSocket ద్వారా రియల్-టైం ప్రోగ్రెస్‌తో సింక్రోనస్ మరియు అసింక్ స్థానికీకరణ. -Lingo.dev SDK రన్‌టైమ్‌లో కంటెంట్‌ను అనువదిస్తుంది. ఏదైనా టెక్స్ట్, ఆబ్జెక్ట్ లేదా HTMLను పాస్ చేయండి మరియు లోకలైజ్డ్ వెర్షన్‌ను తిరిగి పొందండి. రియల్-టైమ్ చాట్, డైనమిక్ నోటిఫికేషన్లు లేదా డిప్లాయ్‌మెంట్ తర్వాత వచ్చే ఏదైనా కంటెంట్ కోసం పని చేస్తుంది. JavaScript, PHP, Python మరియు Ruby కోసం అందుబాటులో ఉంది. - -**ఇన్‌స్టాలేషన్:** - -```bash -npm install lingo.dev -``` - -**ఉపయోగం:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**అందుబాటులో ఉన్న SDKలు:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - వెబ్ యాప్‌లు, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[డాక్స్ చదవండి →](https://lingo.dev/en/sdk) +[డాక్స్ చదవండి →](https://lingo.dev/en/docs/api) --- -### Lingo.dev కంపైలర్ +### React కోసం Lingo కంపైలర్ (ప్రారంభ ఆల్ఫా) -సాంప్రదాయ i18n ఆదాగమీయంగా ఉంటుంది. మీరు ప్రతి స్ట్రింగ్‌ను `t()` ఫంక్షన్‌లలో పరిపూర్ణంగా ర్యాప్ చేస్తారు, అనువాద కీలు (`home.hero.title.v2`) సృష్టిస్తారు, అదనపు JSON ఫైళ్ళను నిర్వహిస్తారు, తుది ఫలితంగా మీ కంపోనెంట్లు స్థానికీకరణ బాయిలర్‌ప్లేట్‌తో మోతాదుగా పెరుగుతాయి. ఇది అత్యంత శ్రమాత్మకమైనది కాబట్టి టీమ్‌లు ఇంటర్నేషనలైజేషన్‌ను భారీ రీఫ్యాక్టర్‌గా మారే వరకు వాయిదా వేస్తారు. +i18n రాపర్‌లు లేకుండా బిల్డ్-టైమ్ React స్థానికీకరణ. సాదా ఆంగ్ల టెక్స్ట్‌తో కాంపోనెంట్‌లు రాయండి – కంపైలర్ అనువదించదగిన స్ట్రింగ్‌లను గుర్తించి బిల్డ్ టైమ్‌లో స్థానికీకరించిన వేరియంట్‌లను జనరేట్ చేస్తుంది. అనువాద కీలు లేవు, JSON ఫైల్స్ లేవు, `t()` ఫంక్షన్లు లేవు. Next.js (App Router) మరియు Vite + React కి మద్దతు ఇస్తుంది. -Lingo.dev కంపైలర్ సంప్రదాయాన్ని తొలగిస్తుంది. సాధారణ ఆంగ్ల టెక్స్ట్‌తో React కాంపోనెంట్‌లను రాయండి. కంపైలర్ బిల్డ్ టైమ్‌లో అనువదించదగిన స్ట్రింగ్‌లను గుర్తించి, స్వయంచాలకంగా స్థానికీకరించిన వేరియంట్‌లను జనరేట్ చేస్తుంది. కీలు లేవు, JSON ఫైల్స్ లేవు, రాపర్ ఫంక్షన్‌లు లేవు - బహుళ భాషలలో పనిచేసే React కోడ్ మాత్రమే. - -**ఇన్‌స్టాలేషన్:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**ప్రామాణీకరణ:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**కాన్ఫిగరేషన్ (Vite):** - -```ts -// 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(), - ], -}); -``` - -**ప్రొవైడర్ సెటప్:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**లాంగ్వేజ్ స్విచర్:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**డెవలప్‌మెంట్:** `npm run dev` (ప్యుసుడో ట్రాన్స్‌లేటర్ ఉపయోగించబడుతుంది, API కాల్స్ లేవు) - -**ప్రొడక్షన్:** `usePseudotranslator: false` సెట్ చేయండి, తర్వాత `next build` - -`.lingo/` డైరెక్టరీని వర్షన్ కంట్రోల్‌కు కమిట్ చేయండి. - -**ముఖ్య ఫీచర్లు:** - -- రన్‌టైమ్ పెర్ఫార్మెన్స్ ఖర్చు లేదు -- అనువాద కీలు లేదా JSON ఫైళ్ళు లేవు -- `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) - -అదనపు ఫ్రేమ్‌వర్క్ సపోర్ట్ ప్లాన్ చేయబడింది. - -[డాక్స్ చదవండి →](https://lingo.dev/en/compiler) +[డాక్స్ చదవండి →](https://lingo.dev/en/docs/react/compiler) --- -## సహకారం +## కంట్రిబ్యూట్ చేయడం -సహకారాన్ని స్వాగతిస్తున్నాము. దయచేసి ఈ మార్గదర్శకాలను అనుసరించండి: +కంట్రిబ్యూషన్‌లను స్వాగతిస్తున్నాము. దయచేసి ఈ మార్గదర్శకాలను అనుసరించండి: -1. **సమస్యలు:** [బగ్‌లు నివేదించండి లేదా ఫీచర్‌లను అభ్యర్థించండి](https://github.com/lingodotdev/lingo.dev/issues) +1. **ఇష్యూస్:** [బగ్‌లను రిపోర్ట్ చేయండి లేదా ఫీచర్లను అభ్యర్థించండి](https://github.com/lingodotdev/lingo.dev/issues) 2. **పుల్ రిక్వెస్ట్‌లు:** [మార్పులను సబ్మిట్ చేయండి](https://github.com/lingodotdev/lingo.dev/pulls) - - ప్రతి PRకి changeset అవసరం: `pnpm new` (లేదా రిలీజ్ కాని మార్పులకు `pnpm new:empty`) - - సబ్మిట్ చేసే ముందు టెస్ట్‌లు పాస్ అయినట్లు నిర్ధారించండి + - ప్రతి PR కి చేంజ్‌సెట్ అవసరం: `pnpm new` (లేదా రిలీజ్-యేతర మార్పుల కోసం `pnpm new:empty`) + - సబ్మిట్ చేయడానికి ముందు టెస్ట్‌లు పాస్ అవుతున్నట్లు నిర్ధారించండి 3. **డెవలప్‌మెంట్:** ఇది pnpm + turborepo మోనోరెపో - డిపెండెన్సీలను ఇన్‌స్టాల్ చేయండి: `pnpm install` - - టెస్ట్‌లు రన్ చేయండి: `pnpm test` + - టెస్ట్‌లను రన్ చేయండి: `pnpm test` - బిల్డ్ చేయండి: `pnpm build` **సపోర్ట్:** [Discord కమ్యూనిటీ](https://lingo.dev/go/discord) ## స్టార్ హిస్టరీ -Lingo.dev మీకు ఉపయోగకరంగా ఉంటే, మాకు స్టార్ ఇవ్వండి మరియు 10,000 స్టార్‌లను చేరుకోవడంలో మాకు సహాయం చేయండి! +Lingo.dev మీకు ఉపయోగకరంగా అనిపిస్తే, మాకు స్టార్ ఇవ్వండి మరియు 10,000 స్టార్లను చేరుకోవడంలో మాకు సహాయం చేయండి! [ -![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![స్టార్ హిస్టరీ చార్ట్](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -498,12 +171,5 @@ Lingo.dev మీకు ఉపయోగకరంగా ఉంటే, మాకు **కొత్త భాషను జోడించడం:** -1. [`i18n.json`](./i18n.json)కి [BCP-47 ఫార్మాట్](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) వాడి లొకేల్ కోడ్‌ను జోడించండి -2. పుల్ రిక్వెస్ట్‌ను సబ్మిట్ చేయండి - -**BCP-47 లొకేల్ ఫార్మాట్:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (చిన్నవాటిలో): `en`, `zh`, `bho` -- `Script`: ISO 15924 (టైటిల్ కేసు): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 ఆల్ఫా-2 (పెద్ద అక్షరాలు): `US`, `CN`, `IN` -- ఉదాహరణలు: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [BCP-47 ఫార్మాట్](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ఉపయోగించి [`i18n.json`](./i18n.json)కి లొకేల్ కోడ్‌ను జోడించండి +2. పుల్ రిక్వెస్ట్ సబ్మిట్ చేయండి diff --git a/readme/tr.md b/readme/tr.md index 708f69af8..738cfa512 100644 --- a/readme/tr.md +++ b/readme/tr.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM destekli yerelleştirme için açık kaynaklı i18n araç seti + Açık kaynaklı yerelleştirme mühendisliği araçları. Tutarlı, kaliteli + çeviriler için Lingo.dev yerelleştirme mühendisliği platformuna bağlanın.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + React için Lingo Compiler (Erken alfa)

@@ -71,167 +74,43 @@ ## Hızlı başlangıç -| Araç | Kullanım Alanı | Hızlı Komut | -| ---------------------------------- | -------------------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React uygulamaları için AI destekli i18n kurulumu | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO dosyalarını çevir | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions'ta otomatik çeviri hattı | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Dinamik içerik için çalışma zamanı çevirisi | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrapper'ları olmadan derleme zamanı React yerelleştirmesi | `withLingo()` eklentisi | +| Araç | Ne yapar | Hızlı Komut | +| -------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React uygulamaları için AI destekli i18n kurulumu | Komut: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO dosyalarını yerelleştir | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions'ta sürekli yerelleştirme | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n sarmalayıcıları olmadan derleme zamanı React yerelleştirmesi | `withLingo()` eklentisi | ---- - -### Lingo.dev MCP - -React uygulamalarında i18n kurulumu, deneyimli geliştiriciler için bile hata yapmaya oldukça müsaittir. AI kodlama asistanları durumu daha da kötüleştirir: var olmayan API'ler hayal ederler, middleware yapılandırmalarını unuturlar, yönlendirmeyi bozarlar veya kaybolmadan önce yarım bir çözüm uygularlar. Sorun şu ki, i18n kurulumu birden fazla dosyada (yönlendirme, middleware, bileşenler, yapılandırma) koordineli değişikliklerin kesin bir sırasını gerektirir ve LLM'ler bu bağlamı korumakta zorlanır. - -Lingo.dev MCP, AI asistanlarına framework'e özgü i18n bilgisine yapılandırılmış erişim sağlayarak bu sorunu çözer. Asistanınız tahmin yürütmek yerine Next.js, React Router ve TanStack Start için doğrulanmış uygulama kalıplarını takip eder. - -**Desteklenen IDE'ler:** +### Yerelleştirme motorları -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +Bu araçlar [yerelleştirme motorlarına](https://lingo.dev) bağlanır – Lingo.dev yerelleştirme mühendisliği platformunda oluşturduğunuz durum bilgili çeviri API'leri. Her motor, sözlükleri, marka sesini ve yerel ayar başına talimatları her istekte kalıcı hale getirerek [terminoloji hatalarını %16,6–44,6 oranında azaltır](https://lingo.dev/research/retrieval-augmented-localization). Ya da [kendi LLM'nizi getirin](#lingodev-cli). -**Desteklenen framework'ler:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Kullanım:** - -MCP sunucusunu IDE'nizde yapılandırdıktan sonra ([hızlı başlangıç kılavuzlarına bakın](https://lingo.dev/en/mcp)), asistanınıza şu şekilde komut verin: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -Asistan şunları yapacaktır: +--- -1. Yerel ayar tabanlı yönlendirmeyi yapılandırır (örn. `/en`, `/es`, `/pt-BR`) -2. Dil değiştirme bileşenlerini kurar -3. Otomatik yerel ayar tespiti uygular -4. Gerekli yapılandırma dosyalarını üretir +### Lingo.dev MCP -**Not:** AI destekli kod üretimi deterministik değildir. Commit etmeden önce oluşturulan kodu gözden geçirin. +React uygulamalarında i18n kurmak hataya açıktır – AI kodlama asistanları bile var olmayan API'leri hayal eder ve yönlendirmeyi bozar. Lingo.dev MCP, AI asistanlarına Next.js, React Router ve TanStack Start için çerçeveye özel i18n bilgisine yapılandırılmış erişim sağlar. Claude Code, Cursor, GitHub Copilot Agents ve Codex ile çalışır. -[Dokümantasyonu okuyun →](https://lingo.dev/en/mcp) +[Dokümantasyonu oku →](https://lingo.dev/en/mcp) --- ### Lingo.dev CLI -Çevirileri senkronize tutmak zahmetlidir. Yeni bir string eklersiniz, çevirmeyi unutursunuz, uluslararası kullanıcılara bozuk UI gönderirsiniz. Ya da JSON dosyalarını çevirmenlere gönderirsiniz, günlerce beklersiniz, sonra onların çalışmalarını manuel olarak geri birleştirirsiniz. 10+ dile ölçeklenmek, sürekli senkronizasyondan çıkan yüzlerce dosyayı yönetmek anlamına gelir. - -Lingo.dev CLI bunu otomatikleştirir. Çeviri dosyalarınıza yönlendirin, bir komut çalıştırın ve her yerel ayar güncellenir. Bir lockfile neyin zaten çevrildiğini takip eder, böylece yalnızca yeni veya değiştirilmiş içerik için ödeme yaparsınız. JSON, YAML, CSV, PO dosyalarını ve markdown'ı destekler. - -**Kurulum:** +JSON, YAML, markdown, CSV ve PO dosyalarını tek komutla yerelleştirin. Bir kilit dosyası neyin zaten yerelleştirildiğini takip eder – yalnızca yeni veya değiştirilmiş içerik işlenir. Varsayılan olarak Lingo.dev'deki yerelleştirme motorunuzu kullanır veya kendi LLM'nizi getirin (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Nasıl çalışır:** - -1. Yapılandırılmış dosyalardan çevrilebilir içerik çıkarır -2. İçeriği çeviri için LLM sağlayıcısına gönderir -3. Çevrilen içeriği dosya sistemine geri yazar -4. Tamamlanan çevirileri izlemek için `i18n.lock` dosyası oluşturur (gereksiz işlemleri önler) - -**Yapılandırma:** - -`init` komutu bir `i18n.json` dosyası oluşturur. Yerel ayarları ve bucket'ları yapılandırın: - -```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` alanı isteğe bağlıdır (varsayılan olarak Lingo.dev Engine kullanılır). Özel LLM sağlayıcıları için: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Desteklenen LLM sağlayıcıları:** - -- Lingo.dev Engine (önerilir) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Dokümantasyonu okuyun →](https://lingo.dev/en/cli) +[Dokümantasyonu okuyun →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Çeviriler her zaman "neredeyse bitti" durumunda olan özelliktir. Mühendisler yerel ayarları güncellemeden kodu birleştirir. QA, eksik çevirileri staging ortamında yakalar - ya da daha kötüsü, kullanıcılar production ortamında yakalar. Temel neden: çeviri, son teslim tarihi baskısı altında atlanması kolay olan manuel bir adımdır. - -Lingo.dev CI/CD çevirileri otomatik hale getirir. Her push çeviriyi tetikler. Eksik string'ler kod production ortamına ulaşmadan doldurulur. Disiplin gerekmez - pipeline bunu halleder. - -**Desteklenen platformlar:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions kurulumu:** - -`.github/workflows/translate.yml` dosyasını oluşturun: - -```yaml -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 }} -``` - -**Kurulum gereksinimleri:** - -1. `LINGODOTDEV_API_KEY` değerini repository secret'larına ekleyin (Settings > Secrets and variables > Actions) -2. PR workflow'ları için: Settings > Actions > General kısmında "Allow GitHub Actions to create and approve pull requests"'i etkinleştirin - -**Workflow seçenekleri:** - -Çevirileri doğrudan commit edin: +Pipeline'ınızda sürekli yerelleştirme. Her push yerelleştirmeyi tetikler – eksik metinler kod üretime ulaşmadan doldurulur. GitHub Actions, GitLab CI/CD ve Bitbucket Pipelines desteklenir. ```yaml uses: lingodotdev/lingo.dev@main @@ -239,239 +118,33 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Çevirilerle pull request oluşturun: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Kullanılabilir girdiler:** - -| Girdi | Varsayılan | Açıklama | -| -------------------- | ---------------------------------------------- | --------------------------------- | -| `api-key` | (gerekli) | Lingo.dev API anahtarı | -| `pull-request` | `false` | Doğrudan commit yerine PR oluştur | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Özel commit mesajı | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Özel PR başlığı | -| `working-directory` | `"."` | Çalışma dizini | -| `parallel` | `false` | Paralel işlemeyi etkinleştir | - -[Dokümantasyonu okuyun →](https://lingo.dev/en/ci/github) +[Dokümantasyonu okuyun →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -Statik çeviri dosyaları UI etiketleri için işe yarar, ancak kullanıcı tarafından oluşturulan içerik ne olacak? Sohbet mesajları, ürün açıklamaları, destek talepleri - derleme zamanında mevcut olmayan içerik önceden çevrilemez. Çevrilmemiş metin göstermek veya özel bir çeviri pipeline'ı oluşturmak zorunda kalırsınız. +Yerelleştirme motorunuzu doğrudan backend kodundan çağırın. Webhook teslimi ile senkron ve asenkron yerelleştirme, yerel ayar başına hata izolasyonu ve WebSocket üzerinden gerçek zamanlı ilerleme. -Lingo.dev SDK içeriği çalışma zamanında çevirir. Herhangi bir metin, nesne veya HTML gönderin ve yerelleştirilmiş bir sürüm alın. Gerçek zamanlı sohbet, dinamik bildirimler veya dağıtımdan sonra gelen herhangi bir içerik için çalışır. JavaScript, PHP, Python ve Ruby için kullanılabilir. - -**Kurulum:** - -```bash -npm install lingo.dev -``` - -**Kullanım:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**Kullanılabilir SDK'lar:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web uygulamaları, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[Dokümantasyonu okuyun →](https://lingo.dev/en/sdk) +[Dokümantasyonu okuyun →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### React için Lingo Compiler (Erken alfa) -Geleneksel i18n müdahaleci bir yaklaşımdır. Her bir string'i `t()` fonksiyonlarına sararsınız, çeviri anahtarları icat edersiniz (`home.hero.title.v2`), paralel JSON dosyalarını yönetirsiniz ve bileşenlerinizin yerelleştirme şablon kodu ile şişmesini izlersiniz. O kadar zahmetlidir ki ekipler, uluslararasılaştırmayı büyük bir refaktör gerekene kadar erteler. +i18n sarmalayıcıları olmadan derleme zamanı React yerelleştirmesi. Bileşenleri düz İngilizce metinle yazın – derleyici çevrilebilir metinleri algılar ve derleme zamanında yerelleştirilmiş varyantlar oluşturur. Çeviri anahtarları yok, JSON dosyaları yok, `t()` fonksiyonları yok. Next.js (App Router) ve Vite + React desteklenir. -Lingo.dev Compiler tüm karmaşıklığı ortadan kaldırır. React bileşenlerini düz İngilizce metinle yazın. Derleyici, derleme zamanında çevrilebilir metinleri algılar ve yerelleştirilmiş varyantları otomatik olarak oluşturur. Anahtar yok, JSON dosyası yok, sarmalayıcı fonksiyon yok - sadece birden fazla dilde çalışan React kodu. - -**Kurulum:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Kimlik doğrulama:** - -```bash -# 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 -``` - -**Yapılandırma (Next.js):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Yapılandırma (Vite):** - -```ts -// 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 kurulumu:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Dil değiştirici:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Geliştirme:** `npm run dev` (pseudotranslator kullanır, API çağrısı yoktur) - -**Üretim:** `usePseudotranslator: false` ayarlayın, sonra `next build` çalıştırın - -`.lingo/` dizinini sürüm kontrolüne ekleyin. - -**Temel özellikler:** - -- Sıfır çalışma zamanı performans maliyeti -- Çeviri anahtarı veya JSON dosyası gerekmez -- `t()` fonksiyonları ya da `` sarmalayıcı bileşen yok -- JSX içinde çevrilebilir metnin otomatik algılanması -- TypeScript desteği -- Çoğullar için ICU MessageFormat -- `data-lingo-override` özniteliği ile manuel geçersiz kılmalar -- Dahili çeviri düzenleyici aracı - -**Derleme modları:** - -- `pseudotranslator`: Yer tutucu çevirilerle geliştirme modu (API maliyeti yok) -- `real`: LLM'ler ile gerçek çeviriler üret -- `cache-only`: CI tarafından önceden oluşturulmuş çevirilerle üretim modu (API çağrısı yok) - -**Desteklenen framework'ler:** - -- Next.js (React Server Components ile App Router) -- Vite + React (SPA ve SSR) - -Ek framework desteği planlanmaktadır. - -[Dokümantasyonu okuyun →](https://lingo.dev/en/compiler) +[Dokümantasyonu okuyun →](https://lingo.dev/en/docs/react/compiler) --- -## Katkıda bulunma +## Katkıda Bulunma -Katkılarınızı bekliyoruz. Lütfen şu yönergeleri izleyin: +Katkılar beklenir. Lütfen şu yönergeleri izleyin: -1. **Sorunlar:** [Hata bildir veya özellik iste](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull Request'ler:** [Değişiklik gönder](https://github.com/lingodotdev/lingo.dev/pulls) - - Her PR bir changeset gerektirir: `pnpm new` (veya yayın dışı değişiklikler için `pnpm new:empty`) +1. **Sorunlar:** [Hata bildirin veya özellik isteyin](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Request'ler:** [Değişiklik gönderin](https://github.com/lingodotdev/lingo.dev/pulls) + - Her PR bir changeset gerektirir: `pnpm new` (veya sürüm dışı değişiklikler için `pnpm new:empty`) - Göndermeden önce testlerin geçtiğinden emin olun 3. **Geliştirme:** Bu bir pnpm + turborepo monorepo'sudur - Bağımlılıkları yükleyin: `pnpm install` @@ -480,17 +153,17 @@ Katkılarınızı bekliyoruz. Lütfen şu yönergeleri izleyin: **Destek:** [Discord topluluğu](https://lingo.dev/go/discord) -## Yıldız geçmişi +## Yıldız Geçmişi -Lingo.dev'i faydalı buluyorsanız, bize bir yıldız verin ve 10.000 yıldıza ulaşmamıza yardımcı olun! +Lingo.dev'i faydalı buluyorsanız, bize yıldız verin ve 10.000 yıldıza ulaşmamıza yardımcı olun! [ -![Yıldız geçmişi grafiği](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +![Yıldız Geçmişi Grafiği](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) -## Yerelleştirilmiş dokümantasyon +## Yerelleştirilmiş Belgeler **Mevcut çeviriler:** @@ -498,12 +171,5 @@ Lingo.dev'i faydalı buluyorsanız, bize bir yıldız verin ve 10.000 yıldıza **Yeni bir dil eklemek için:** -1. [`i18n.json`](./i18n.json) dosyasına [BCP-47 formatında](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) yerel ayar kodunu ekleyin +1. [BCP-47 formatını](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) kullanarak yerel kod bilgisini [`i18n.json`](./i18n.json) dosyasına ekleyin 2. Bir pull request gönderin - -**BCP-47 yerel ayar formatı:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (küçük harf): `en`, `zh`, `bho` -- `Script`: ISO 15924 (baş harfi büyük): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (büyük harf): `US`, `CN`, `IN` -- Örnekler: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/uk-UA.md b/readme/uk-UA.md index 2f5f9aa4c..4f5c9401c 100644 --- a/readme/uk-UA.md +++ b/readme/uk-UA.md @@ -3,24 +3,26 @@ Lingo.dev

- Lingo.dev - інструментарій i18n з відкритим кодом для локалізації на основі - LLM + Інструменти інженерії локалізації з відкритим кодом. Підключайтеся до + платформи Lingo.dev для послідовних і якісних перекладів.


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler для React (Рання альфа)

@@ -72,51 +74,22 @@ ## Швидкий старт -| Інструмент | Випадок використання | Швидка команда | -| ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | Налаштування i18n з AI-підтримкою для React-додатків | Промпт: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Переклад JSON, YAML, markdown, CSV, PO файлів | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | Автоматизований конвеєр перекладу у GitHub Actions | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Переклад у runtime для динамічного контенту | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | Локалізація React під час збірки без i18n-обгорток | `withLingo()` plugin | +| Інструмент | Що він робить | Швидка команда | +| -------------------------------------------------- | -------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | Налаштування i18n для React-застосунків з AI | Запит: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | Локалізація JSON, YAML, markdown, CSV, PO файлів | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | Безперервна локалізація в GitHub Actions | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler для React**](#lingodev-compiler) | Локалізація React під час збірки без i18n-обгорток | Плагін `withLingo()` | ---- - -### Lingo.dev MCP - -Налаштування i18n у React-застосунках відомо своєю схильністю до помилок — навіть для досвідчених розробників. AI-асистенти для кодування роблять це ще гіршим: вони галюцинують неіснуючі API, забувають конфігурації middleware, ламають маршрутизацію або реалізують половину рішення, перш ніж загубитися. Проблема в тому, що налаштування i18n вимагає точної послідовності скоординованих змін у кількох файлах (маршрутизація, middleware, компоненти, конфігурація), і LLM важко підтримувати цей контекст. - -Lingo.dev MCP вирішує це, надаючи AI-асистентам структурований доступ до знань про i18n для конкретних фреймворків. Замість здогадок ваш асистент дотримується перевірених шаблонів реалізації для Next.js, React Router та TanStack Start. - -**Підтримувані IDE:** +### Рушії локалізації -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +Ці інструменти підключаються до [рушіїв локалізації](https://lingo.dev) – API перекладу зі збереженням стану, які ви створюєте на платформі Lingo.dev. Кожен рушій зберігає глосарії, тон бренду та інструкції для кожної локалі в усіх запитах, [зменшуючи термінологічні помилки на 16,6–44,6%](https://lingo.dev/research/retrieval-augmented-localization). Або [використовуйте власну LLM](#lingodev-cli). -**Підтримувані фреймворки:** - -- Next.js (App Router і Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**Використання:** - -Після налаштування MCP-сервера у вашому IDE ([див. посібники швидкого старту](https://lingo.dev/en/mcp)), запитайте свого асистента: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -Асистент: +--- -1. Налаштувати маршрутизацію на основі локалі (наприклад, `/en`, `/es`, `/pt-BR`) -2. Налаштувати компоненти перемикання мови -3. Реалізувати автоматичне визначення локалі -4. Згенерувати необхідні конфігураційні файли +### Lingo.dev MCP -**Примітка:** генерація коду за допомогою AI є недетермінованою. Перевіряйте згенерований код перед комітом. +Налаштування i18n у React-застосунках часто призводить до помилок – навіть AI-асистенти генерують неіснуючі API та ламають маршрутизацію. Lingo.dev MCP надає AI-асистентам структурований доступ до знань про i18n для Next.js, React Router і TanStack Start. Працює з Claude Code, Cursor, GitHub Copilot Agents і Codex. [Читати документацію →](https://lingo.dev/en/mcp) @@ -124,115 +97,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -Підтримувати переклади синхронізованими — нудно. Ви додаєте новий рядок, забуваєте його перекласти, випускаєте зламаний UI для міжнародних користувачів. Або ви надсилаєте JSON-файли перекладачам, чекаєте днями, а потім вручну об'єднуєте їхню роботу назад. Масштабування до 10+ мов означає управління сотнями файлів, які постійно розсинхронізуються. - -Lingo.dev CLI автоматизує це. Вкажіть на ваші файли перекладів, виконайте одну команду, і кожна локаль оновиться. Lockfile відстежує, що вже перекладено, тому ви платите лише за новий або змінений контент. Підтримує JSON, YAML, CSV, PO-файли та markdown. - -**Налаштування:** +Локалізуйте JSON, YAML, markdown, CSV і PO файли однією командою. Lockfile відстежує вже локалізований контент – обробляються лише нові або змінені дані. За замовчуванням використовується ваш рушій локалізації на Lingo.dev, або підключіть власну LLM (OpenAI, Anthropic, Google, Mistral, OpenRouter, Ollama). ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**Як це працює:** - -1. Витягує контент для перекладу з налаштованих файлів -2. Надсилає контент провайдеру LLM для перекладу -3. Записує перекладений контент назад у файлову систему -4. Створює файл `i18n.lock` для відстеження завершених перекладів (уникаючи зайвої обробки) - -**Конфігурація:** - -Команда `init` генерує файл `i18n.json`. Налаштуйте локалі та групи: - -```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-провайдерів: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**Підтримувані провайдери LLM:** - -- Lingo.dev Engine (рекомендовано) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[Читати документацію →](https://lingo.dev/en/cli) +[Читати документацію →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -Переклади — це функція, яка завжди «майже готова». Інженери зливають код без оновлення локалей. QA виявляє відсутні переклади на етапі тестування — або ще гірше, користувачі виявляють їх у продакшені. Основна причина: переклад — це ручний крок, який легко пропустити під тиском дедлайнів. - -Lingo.dev CI/CD робить переклади автоматичними. Кожен push запускає переклад. Відсутні рядки заповнюються до того, як код потрапить у продакшен. Не потрібна дисципліна — pipeline все обробляє. - -**Підтримувані платформи:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**Налаштування GitHub Actions:** - -Створіть `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**Вимоги до налаштування:** - -1. Додайте `LINGODOTDEV_API_KEY` до секретів репозиторію (Settings > Secrets and variables > Actions) -2. Для PR-воркфлоу: Увімкніть "Allow GitHub Actions to create and approve pull requests" у Settings > Actions > General - -**Опції робочого процесу:** - -Закомітити переклади безпосередньо: +Безперервна локалізація у вашому конвеєрі. Кожен push запускає локалізацію — відсутні рядки заповнюються до того, як код потрапить у продакшн. Підтримує GitHub Actions, GitLab CI/CD та Bitbucket Pipelines. ```yaml uses: lingodotdev/lingo.dev@main @@ -240,250 +118,44 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -Створюйте pull request з перекладами: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**Доступні параметри:** - -| Параметр | Значення за замовчуванням | Опис | -| -------------------- | ---------------------------------------------- | ---------------------------------- | -| `api-key` | (обов'язково) | API-ключ Lingo.dev | -| `pull-request` | `false` | Створити PR замість прямого коміту | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Користувацьке повідомлення коміту | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Власний заголовок PR | -| `working-directory` | `"."` | Директорія для запуску | -| `parallel` | `false` | Увімкнути паралельну обробку | - -[Читати документацію →](https://lingo.dev/en/ci/github) +[Читати документацію →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -Статичні файли перекладів підходять для міток інтерфейсу, але що робити з контентом, створеним користувачами? Повідомлення в чаті, описи продуктів, тікети підтримки — контент, який не існує під час збірки, неможливо попередньо перекласти. Ви змушені показувати неперекладений текст або будувати власний конвеєр перекладу. +Викликайте свій механізм локалізації безпосередньо з бекенд-коду. Синхронна та асинхронна локалізація з доставкою через вебхуки, ізоляцією помилок для кожної локалі та моніторингом прогресу в реальному часі через WebSocket. -Lingo.dev SDK перекладає контент під час виконання. Передайте будь-який текст, об'єкт або HTML і отримайте локалізовану версію. Працює для чату в реальному часі, динамічних сповіщень або будь-якого контенту, що надходить після розгортання. Доступний для JavaScript, PHP, Python та Ruby. - -**Встановлення:** - -```bash -npm install lingo.dev -``` - -**Використання:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**Доступні SDK:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) — веб-застосунки, Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) — PHP, Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) — Django, Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) — Rails - -[Читати документацію →](https://lingo.dev/en/sdk) +[Читати документацію →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### Lingo Compiler для React (рання альфа) -Традиційна інтернаціоналізація є інвазивною. Ви обгортаєте кожен рядок у функції `t()`, вигадуєте ключі перекладу (`home.hero.title.v2`), підтримуєте паралельні JSON-файли і спостерігаєте, як ваші компоненти роздуваються через шаблонний код локалізації. Це настільки виснажливо, що команди відкладають інтернаціоналізацію, доки вона не перетвориться на масштабний рефакторинг. +Локалізація React на етапі збірки без обгорток i18n. Пишіть компоненти з простим текстом англійською — компілятор виявляє рядки для перекладу та генерує локалізовані варіанти під час збірки. Без ключів перекладу, без JSON-файлів, без функцій `t()`. Підтримує Next.js (App Router) і Vite + React. -Lingo.dev Compiler усуває зайві церемонії. Пишіть React-компоненти зі звичайним англійським текстом. Компілятор виявляє рядки для перекладу під час збірки та автоматично генерує локалізовані варіанти. Ніяких ключів, JSON-файлів чи функцій-обгорток — лише React-код, який працює кількома мовами. - -**Встановлення:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**Автентифікація:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**Конфігурація (Vite):** - -```ts -// 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(), - ], -}); -``` - -**Налаштування провайдера:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**Перемикач мови:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Розробка:** `npm run dev` (використовується псевдоперекладач, без API-викликів) - -**Продакшн:** Встановіть `usePseudotranslator: false`, потім `next build` - -Закомітьте директорію `.lingo/` у систему контролю версій. - -**Ключові можливості:** - -- Нульове навантаження на продуктивність у runtime -- Без ключів перекладу чи JSON-файлів -- Без функцій `t()` або обгорток `` -- Автоматичне виявлення тексту для перекладу у JSX -- Підтримка TypeScript -- ICU MessageFormat для роботи з множиною -- Ручне перевизначення через атрибут `data-lingo-override` -- Вбудований віджет редактора перекладів - -**Режими збірки:** - -- `pseudotranslator`: режим розробки із перекладами-заповнювачами (без витрат на API) -- `real`: генерація реальних перекладів за допомогою LLM -- `cache-only`: production-режим із попередньо згенерованими перекладами з CI (без API-викликів) - -**Підтримувані фреймворки:** - -- Next.js (App Router з React Server Components) -- Vite + React (SPA та SSR) - -Планується підтримка додаткових фреймворків. - -[Читати документацію →](https://lingo.dev/en/compiler) +[Читати документацію →](https://lingo.dev/en/docs/react/compiler) --- -## Внесок у проєкт +## Долучайтеся -Ми вітаємо ваш внесок. Будь ласка, дотримуйтесь цих рекомендацій: +Вітаємо ваш внесок. Будь ласка, дотримуйтесь цих рекомендацій: -1. **Проблеми:** [Повідомити про баг або запропонувати функцію](https://github.com/lingodotdev/lingo.dev/issues) -2. **Pull request-и:** [Внесіть зміни](https://github.com/lingodotdev/lingo.dev/pulls) - - Кожен PR потребує changeset: `pnpm new` (або `pnpm new:empty` для не-релізних змін) - - Перед відправкою переконайтесь, що всі тести проходять -3. **Розробка:** це монорепозиторій pnpm + turborepo - - Встановлення залежностей: `pnpm install` - - Запуск тестів: `pnpm test` - - Збірка: `pnpm build` +1. **Issues:** [Повідомте про баги або запропонуйте функції](https://github.com/lingodotdev/lingo.dev/issues) +2. **Pull Requests:** [Надішліть зміни](https://github.com/lingodotdev/lingo.dev/pulls) + - Кожен PR потребує чейнджсету: `pnpm new` (або `pnpm new:empty` для змін без релізу) + - Переконайтеся, що тести проходять перед надсиланням +3. **Розробка:** Це монорепозиторій на pnpm + turborepo + - Встановіть залежності: `pnpm install` + - Запустіть тести: `pnpm test` + - Зберіть проєкт: `pnpm build` -**Підтримка:** [Спільнота Discord](https://lingo.dev/go/discord) +**Підтримка:** [Спільнота в Discord](https://lingo.dev/go/discord) ## Історія зірок -Якщо Lingo.dev корисний для вас, поставте нам зірку та допоможіть досягти 10 000 зірок! +Якщо Lingo.dev виявився корисним, поставте нам зірку та допоможіть досягти 10 000 зірок! [ @@ -499,12 +171,5 @@ export function LanguageSwitcher() { **Додавання нової мови:** -1. Додайте код локалі до [`i18n.json`](./i18n.json), використовуючи [BCP-47 формат](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +1. Додайте код локалі до [`i18n.json`](./i18n.json), використовуючи [формат BCP-47](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) 2. Надішліть pull request - -**Формат локалі BCP-47:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (нижній регістр): `en`, `zh`, `bho` -- `Script`: ISO 15924 (регістр заголовка): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (верхній регістр): `US`, `CN`, `IN` -- Приклади: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/ur.md b/readme/ur.md index 1172a2b1f..77843d32f 100644 --- a/readme/ur.md +++ b/readme/ur.md @@ -3,23 +3,26 @@ Lingo.dev

- Lingo.dev - LLM سے چلنے والے لوکلائزیشن کے لیے اوپن سورس i18n ٹول کٹ + اوپن سورس لوکلائزیشن انجینئرنگ ٹولز۔ مستقل، معیاری تراجم کے لیے Lingo.dev + لوکلائزیشن انجینئرنگ پلیٹ فارم سے منسلک ہوں۔


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler for React (ابتدائی الفا)

@@ -71,51 +74,22 @@ ## فوری آغاز -| ٹول | استعمال کا معاملہ | فوری کمانڈ | -| ---------------------------------- | ----------------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React ایپس کے لیے AI کی مدد سے i18n سیٹ اپ | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON، YAML، markdown، CSV، PO فائلوں کا ترجمہ | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions میں خودکار ترجمہ پائپ لائن | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | متحرک مواد کے لیے رن ٹائم ترجمہ | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrappers کے بغیر بلڈ ٹائم React لوکلائزیشن | `withLingo()` plugin | +| ٹول | یہ کیا کرتا ہے | فوری کمانڈ | +| -------------------------------------------------- | ---------------------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | React ایپس کے لیے AI کی مدد سے i18n سیٹ اپ | پرامپٹ: `Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | JSON، YAML، markdown، CSV، PO فائلوں کو لوکلائز کریں | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | GitHub Actions میں مسلسل لوکلائزیشن | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | i18n ریپرز کے بغیر بلڈ ٹائم React لوکلائزیشن | `withLingo()` پلگ ان | ---- - -### Lingo.dev MCP - -React apps میں i18n سیٹ اپ کرنا بدنام زمانہ طور پر خطا کا شکار ہے - یہاں تک کہ تجربہ کار ڈیولپرز کے لیے بھی۔ AI کوڈنگ اسسٹنٹس اسے مزید خراب کر دیتے ہیں: وہ غیر موجود APIs کے بارے میں فرضی باتیں کرتے ہیں، middleware configurations بھول جاتے ہیں، routing توڑ دیتے ہیں، یا گم ہونے سے پہلے آدھا حل implement کر دیتے ہیں۔ مسئلہ یہ ہے کہ i18n سیٹ اپ کے لیے متعدد فائلوں (routing، middleware، components، configuration) میں مربوط تبدیلیوں کی ایک درست ترتیب درکار ہوتی ہے، اور LLMs اس context کو برقرار رکھنے میں مشکل کا سامنا کرتے ہیں۔ - -Lingo.dev MCP اس مسئلے کو AI assistants کو framework-specific i18n علم تک structured رسائی فراہم کر کے حل کرتا ہے۔ اندازہ لگانے کی بجائے، آپ کا assistant Next.js، React Router، اور TanStack Start کے لیے تصدیق شدہ implementation patterns کی پیروی کرتا ہے۔ - -**تعاون یافتہ IDEs:** +### لوکلائزیشن انجنز -- Claude Code -- Cursor -- GitHub Copilot Agents -- Codex (OpenAI) +یہ ٹولز [لوکلائزیشن انجنز](https://lingo.dev) سے منسلک ہوتے ہیں – اسٹیٹ فل ترجمہ APIs جو آپ Lingo.dev لوکلائزیشن انجینئرنگ پلیٹ فارم پر بناتے ہیں۔ ہر انجن ہر درخواست میں لغات، برانڈ وائس، اور فی لوکیل ہدایات کو محفوظ رکھتا ہے، [اصطلاحات کی غلطیوں کو 16.6–44.6% تک کم کرتا ہے](https://lingo.dev/research/retrieval-augmented-localization)۔ یا [اپنا LLM لائیں](#lingodev-cli)۔ -**تعاون یافتہ frameworks:** - -- Next.js (App Router & Pages Router v13-16) -- TanStack Start (v1) -- React Router (v7) - -**استعمال:** - -اپنے IDE میں MCP server کو configure کرنے کے بعد ([quickstart guides دیکھیں](https://lingo.dev/en/mcp))، اپنے assistant کو prompt کریں: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` - -Assistant یہ کام کرے گا: +--- -1. Locale-based routing configure کرے گا (مثلاً `/en`، `/es`، `/pt-BR`) -2. Language switching components سیٹ اپ کرے گا -3. Automatic locale detection implement کرے گا -4. ضروری configuration files generate کرے گا +### Lingo.dev MCP -**نوٹ:** AI-assisted code generation non-deterministic ہے۔ commit کرنے سے پہلے generated code کا جائزہ لیں۔ +React ایپس میں i18n سیٹ اپ کرنا غلطیوں کا شکار ہے – یہاں تک کہ AI کوڈنگ اسسٹنٹس بھی غیر موجود APIs کا خیالی تصور کرتے ہیں اور روٹنگ کو توڑ دیتے ہیں۔ Lingo.dev MCP، AI اسسٹنٹس کو Next.js، React Router، اور TanStack Start کے لیے فریم ورک کے مطابق i18n علم تک منظم رسائی فراہم کرتا ہے۔ Claude Code، Cursor، GitHub Copilot Agents، اور Codex کے ساتھ کام کرتا ہے۔ [دستاویزات پڑھیں →](https://lingo.dev/en/mcp) @@ -123,115 +97,20 @@ Assistant یہ کام کرے گا: ### Lingo.dev CLI -تراجم کو synchronized رکھنا تھکا دینے والا ہے۔ آپ ایک نئی string شامل کرتے ہیں، اسے translate کرنا بھول جاتے ہیں، بین الاقوامی صارفین کو ٹوٹا ہوا UI بھیج دیتے ہیں۔ یا آپ مترجمین کو JSON فائلیں بھیجتے ہیں، دنوں انتظار کرتے ہیں، پھر ان کے کام کو دستی طور پر واپس merge کرتے ہیں۔ 10+ زبانوں تک scale کرنے کا مطلب سینکڑوں فائلوں کا انتظام ہے جو مسلسل sync سے باہر ہو جاتی ہیں۔ - -Lingo.dev CLI اسے خودکار بناتا ہے۔ اسے اپنی translation فائلوں کی طرف point کریں، ایک command چلائیں، اور ہر locale update ہو جاتا ہے۔ ایک lockfile track کرتی ہے کہ کیا پہلے سے translate ہو چکا ہے، تاکہ آپ صرف نئے یا تبدیل شدہ content کے لیے ادائیگی کریں۔ JSON، YAML، CSV، PO فائلوں، اور markdown کو support کرتا ہے۔ - -**سیٹ اپ:** +ایک کمانڈ میں JSON، YAML، markdown، CSV، اور PO فائلوں کو لوکلائز کریں۔ ایک لاک فائل ٹریک کرتی ہے کہ پہلے سے کیا لوکلائز ہو چکا ہے – صرف نئے یا تبدیل شدہ مواد پر کارروائی ہوتی ہے۔ Lingo.dev پر آپ کے لوکلائزیشن انجن کو ڈیفالٹ کرتا ہے، یا اپنا LLM لائیں (OpenAI، Anthropic، Google، Mistral، OpenRouter، Ollama)۔ ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**یہ کیسے کام کرتا ہے:** - -1. کنفیگر شدہ فائلوں سے قابل ترجمہ مواد نکالتا ہے -2. ترجمے کے لیے مواد LLM فراہم کنندہ کو بھیجتا ہے -3. ترجمہ شدہ مواد واپس filesystem میں لکھتا ہے -4. مکمل شدہ تراجم کو ٹریک کرنے کے لیے `i18n.lock` فائل بناتا ہے (غیر ضروری پروسیسنگ سے بچتا ہے) - -**کنفیگریشن:** - -`init` کمانڈ ایک `i18n.json` فائل بناتی ہے۔ locales اور buckets کنفیگر کریں: - -```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 فراہم کنندگان کے لیے: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**معاون LLM فراہم کنندگان:** - -- Lingo.dev Engine (تجویز کردہ) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[دستاویزات پڑھیں →](https://lingo.dev/en/cli) +[دستاویزات پڑھیں ←](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -تراجم وہ فیچر ہیں جو ہمیشہ "تقریباً مکمل" ہوتے ہیں۔ انجینئرز locales کو اپ ڈیٹ کیے بغیر کوڈ merge کر دیتے ہیں۔ QA staging میں غائب تراجم پکڑتا ہے - یا بدتر، صارفین انہیں production میں پکڑتے ہیں۔ بنیادی وجہ: ترجمہ ایک دستی مرحلہ ہے جسے ڈیڈ لائن کے دباؤ میں چھوڑنا آسان ہے۔ - -Lingo.dev CI/CD تراجم کو خودکار بناتا ہے۔ ہر push ترجمہ شروع کرتا ہے۔ غائب strings کوڈ کے production تک پہنچنے سے پہلے بھر جاتی ہیں۔ کسی نظم و ضبط کی ضرورت نہیں - pipeline اسے سنبھالتا ہے۔ - -**معاون پلیٹ فارمز:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions سیٹ اپ:** - -`.github/workflows/translate.yml` بنائیں: - -```yaml -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 }} -``` - -**سیٹ اپ کی ضروریات:** - -1. repository secrets میں `LINGODOTDEV_API_KEY` شامل کریں (Settings > Secrets and variables > Actions) -2. PR workflows کے لیے: Settings > Actions > General میں "Allow GitHub Actions to create and approve pull requests" فعال کریں - -**Workflow کے اختیارات:** - -تراجم براہ راست commit کریں: +آپ کی پائپ لائن میں مسلسل لوکلائزیشن۔ ہر push لوکلائزیشن کو متحرک کرتا ہے – کوڈ کے پروڈکشن تک پہنچنے سے پہلے غائب strings بھر دی جاتی ہیں۔ GitHub Actions، GitLab CI/CD، اور Bitbucket Pipelines کو سپورٹ کرتا ہے۔ ```yaml uses: lingodotdev/lingo.dev@main @@ -239,250 +118,44 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -تراجم کے ساتھ pull requests بنائیں: - -```yaml -uses: lingodotdev/lingo.dev@main -with: - api-key: ${{ secrets.LINGODOTDEV_API_KEY }} - pull-request: true -env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -``` - -**دستیاب inputs:** - -| Input | Default | Description | -| -------------------- | ---------------------------------------------- | ---------------------------------------- | -| `api-key` | (ضروری) | Lingo.dev API key | -| `pull-request` | `false` | براہ راست commit کرنے کی بجائے PR بنائیں | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | حسب ضرورت commit message | -| `pull-request-title` | `"feat: update translations via @LingoDotDev"` | حسب ضرورت PR title | -| `working-directory` | `"."` | جس ڈائریکٹری میں چلانا ہے | -| `parallel` | `false` | متوازی پروسیسنگ فعال کریں | - -[دستاویزات پڑھیں →](https://lingo.dev/en/ci/github) +[دستاویزات پڑھیں ←](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK +### Lingo.dev API -Static ترجمہ فائلیں UI labels کے لیے کام کرتی ہیں، لیکن صارف کے تیار کردہ مواد کا کیا؟ چیٹ پیغامات، پروڈکٹ کی تفصیلات، سپورٹ ٹکٹس - وہ مواد جو build time پر موجود نہیں ہوتا اس کا پہلے سے ترجمہ نہیں کیا جا سکتا۔ آپ غیر ترجمہ شدہ متن دکھانے یا حسب ضرورت ترجمہ pipeline بنانے پر مجبور ہیں۔ +اپنے لوکلائزیشن انجن کو براہ راست backend کوڈ سے کال کریں۔ webhook ڈیلیوری کے ساتھ Synchronous اور async لوکلائزیشن، ہر locale کے لیے failure isolation، اور WebSocket کے ذریعے real-time پیشرفت۔ -Lingo.dev SDK runtime پر مواد کا ترجمہ کرتا ہے۔ کوئی بھی متن، object، یا HTML پاس کریں اور مقامی ورژن واپس حاصل کریں۔ real-time چیٹ، dynamic notifications، یا کسی بھی مواد کے لیے کام کرتا ہے جو deployment کے بعد آتا ہے۔ JavaScript، PHP، Python، اور Ruby کے لیے دستیاب ہے۔ - -**انسٹالیشن:** - -```bash -npm install lingo.dev -``` - -**استعمال:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**دستیاب SDKs:** - -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web apps، Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP، Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django، Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails - -[دستاویزات پڑھیں →](https://lingo.dev/en/sdk) +[دستاویزات پڑھیں ←](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler +### Lingo Compiler for React (ابتدائی alpha) -روایتی i18n مداخلت آمیز ہوتی ہے۔ آپ ہر سٹرنگ کو `t()` فنکشنز میں لپیٹتے ہیں، ترجمہ keys ایجاد کرتے ہیں (`home.hero.title.v2`)، متوازی JSON فائلیں برقرار رکھتے ہیں، اور اپنے کمپوننٹس کو localization boilerplate سے پھولا ہوا پاتے ہیں۔ یہ اتنا محنت طلب ہے کہ ٹیمیں internationalization میں اس وقت تک تاخیر کرتی ہیں جب تک کہ یہ ایک بڑا refactor نہ بن جائے۔ +i18n wrappers کے بغیر build-time React لوکلائزیشن۔ سادہ انگریزی متن کے ساتھ components لکھیں – compiler قابل ترجمہ strings کو شناخت کرتا ہے اور build time پر localized variants تیار کرتا ہے۔ نہ translation keys، نہ JSON فائلیں، نہ `t()` functions۔ Next.js (App Router) اور Vite + React کو سپورٹ کرتا ہے۔ -Lingo.dev Compiler رسمی کاموں کو ختم کرتا ہے۔ سادہ انگریزی متن کے ساتھ React components لکھیں۔ Compiler build time پر قابل ترجمہ strings کا پتہ لگاتا ہے اور خودکار طور پر مقامی variants تیار کرتا ہے۔ کوئی keys نہیں، کوئی JSON فائلیں نہیں، کوئی wrapper functions نہیں - صرف React code جو متعدد زبانوں میں کام کرتا ہے۔ - -**انسٹالیشن:** - -```bash -pnpm install @lingo.dev/compiler -``` - -**تصدیق:** - -```bash -# 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):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -**کنفیگریشن (Vite):** - -```ts -// 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 سیٹ اپ:** - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**زبان switcher:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**Development:** `npm run dev` (pseudotranslator استعمال کرتا ہے، کوئی API کالز نہیں) - -**Production:** `usePseudotranslator: false` سیٹ کریں، پھر `next build` - -`.lingo/` ڈائریکٹری کو ورژن کنٹرول میں commit کریں۔ - -**اہم خصوصیات:** - -- صفر runtime کارکردگی لاگت -- کوئی ترجمہ keys یا JSON فائلیں نہیں -- کوئی `t()` فنکشنز یا `` wrapper کمپوننٹس نہیں -- JSX میں قابل ترجمہ متن کی خودکار شناخت -- TypeScript سپورٹ -- plurals کے لیے ICU MessageFormat -- `data-lingo-override` attribute کے ذریعے دستی overrides -- بلٹ ان ترجمہ ایڈیٹر وجیٹ - -**Build modes:** - -- `pseudotranslator`: placeholder ترجمہ جات کے ساتھ development mode (کوئی API لاگت نہیں) -- `real`: LLMs کے ذریعے اصل ترجمے تیار کریں -- `cache-only`: CI سے پہلے سے تیار شدہ ترجمہ جات کے ساتھ production mode (کوئی API کالز نہیں) - -**معاون frameworks:** - -- Next.js (React Server Components کے ساتھ App Router) -- Vite + React (SPA اور SSR) - -اضافی framework سپورٹ منصوبہ بند ہے۔ - -[دستاویزات پڑھیں →](https://lingo.dev/en/compiler) +[دستاویزات پڑھیں ←](https://lingo.dev/en/docs/react/compiler) --- ## تعاون -تعاون کی خوش آمدید۔ براہ کرم ان رہنما خطوط پر عمل کریں: +تعاون کا خیرمقدم ہے۔ براہ کرم ان رہنما خطوط پر عمل کریں: -1. **مسائل:** [بگز کی رپورٹ دیں یا فیچرز کی درخواست کریں](https://github.com/lingodotdev/lingo.dev/issues) +1. **Issues:** [bugs کی اطلاع دیں یا features کی درخواست کریں](https://github.com/lingodotdev/lingo.dev/issues) 2. **Pull Requests:** [تبدیلیاں جمع کروائیں](https://github.com/lingodotdev/lingo.dev/pulls) - - ہر PR کے لیے changeset ضروری ہے: `pnpm new` (یا غیر ریلیز تبدیلیوں کے لیے `pnpm new:empty`) - - سبمٹ کرنے سے پہلے یقینی بنائیں کہ تمام ٹیسٹ پاس ہو جائیں + - ہر PR کے لیے changeset ضروری ہے: `pnpm new` (یا non-release تبدیلیوں کے لیے `pnpm new:empty`) + - جمع کروانے سے پہلے یقینی بنائیں کہ tests پاس ہو رہے ہیں 3. **Development:** یہ pnpm + turborepo monorepo ہے - dependencies انسٹال کریں: `pnpm install` - - ٹیسٹ چلائیں: `pnpm test` - - بلڈ کریں: `pnpm build` + - tests چلائیں: `pnpm test` + - Build کریں: `pnpm build` -**سپورٹ:** [Discord community](https://lingo.dev/go/discord) +**سپورٹ:** [Discord کمیونٹی](https://lingo.dev/go/discord) ## Star History -اگر آپ کو Lingo.dev مفید لگے تو ہمیں star دیں اور 10,000 stars تک پہنچنے میں ہماری مدد کریں! +اگر آپ کو Lingo.dev مفید لگے، ہمیں ایک star دیں اور 10,000 stars تک پہنچنے میں ہماری مدد کریں! [ @@ -498,12 +171,5 @@ export function LanguageSwitcher() { **نئی زبان شامل کرنا:** -1. [`i18n.json`](./i18n.json) میں [BCP-47 format](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) استعمال کرتے ہوئے locale code شامل کریں -2. pull request جمع کروائیں - -**BCP-47 locale فارمیٹ:** `language[-Script][-REGION]` - -- `language`: ISO 639-1/2/3 (چھوٹے حروف): `en`, `zh`, `bho` -- `Script`: ISO 15924 (کیپیٹل کے ساتھ پہلا حرف): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (بڑے حروف): `US`, `CN`, `IN` -- مثالیں: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +1. [`i18n.json`](./i18n.json) میں [BCP-47 فارمیٹ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) استعمال کرتے ہوئے لوکیل کوڈ شامل کریں +2. پل ریکوئسٹ جمع کروائیں diff --git a/readme/zh-Hans.md b/readme/zh-Hans.md index 3bcbdaf6b..3cf2b146e 100644 --- a/readme/zh-Hans.md +++ b/readme/zh-Hans.md @@ -3,21 +3,25 @@ Lingo.dev

- Lingo.dev - 基于 LLM 的开源本地化 i18n 工具包 + + 开源本地化工程工具。连接 Lingo.dev 本地化工程平台,获得一致、优质的翻译。 +


- MCPCLI • - CI/CDSDK • - Compiler + Lingo API • + Lingo React MCP • + Lingo CLI • + Lingo GitHub Action • + Lingo Compiler for React(早期 Alpha 版)

@@ -69,51 +73,22 @@ ## 快速开始 -| 工具 | 使用场景 | 快速命令 | -| ---------------------------------- | --------------------------------------- | ---------------------------------- | -| [**MCP**](#lingodev-mcp) | React 应用的 AI 辅助 i18n 配置 | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | 翻译 JSON、YAML、markdown、CSV、PO 文件 | `npx lingo.dev@latest run` | -| [**CI/CD**](#lingodev-cicd) | GitHub Actions 自动翻译流程 | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | 动态内容的运行时翻译 | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | 构建时 React 本地化,无需 i18n 包装器 | `withLingo()` plugin | +| 工具 | 功能 | 快速命令 | +| -------------------------------------------------- | ----------------------------------------- | ---------------------------------- | +| [**Lingo React MCP**](#lingodev-mcp) | AI 辅助的 React 应用 i18n 配置 | 提示:`Set up i18n` | +| [**Lingo CLI**](#lingodev-cli) | 本地化 JSON、YAML、Markdown、CSV、PO 文件 | `npx lingo.dev@latest run` | +| [**Lingo GitHub Action**](#lingodev-cicd) | 在 GitHub Actions 中持续本地化 | `uses: lingodotdev/lingo.dev@main` | +| [**Lingo Compiler for React**](#lingodev-compiler) | 构建时 React 本地化,无需 i18n 包装器 | `withLingo()` 插件 | ---- - -### Lingo.dev MCP - -在 React 应用中配置 i18n 一直以高出错率著称——即使是经验丰富的开发者也难以避免。AI 编码助手反而可能让情况更糟:它们会凭空编造不存在的 API,遗漏中间件配置,破坏路由,或者只实现一半方案后陷入混乱。问题在于,i18n 配置需要在多个文件(路由、中间件、组件、配置)间精确协同变更,而大模型难以持续保持全局上下文。 - -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 服务器后([查看快速入门指南](https://lingo.dev/en/mcp)),提示你的助手: - -``` -Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'. -``` +这些工具连接到[本地化引擎](https://lingo.dev)——您在 Lingo.dev 本地化工程平台上创建的有状态翻译 API。每个引擎在所有请求中持久化术语表、品牌语调和特定语言的指令,[将术语错误减少 16.6–44.6%](https://lingo.dev/research/retrieval-augmented-localization)。或者[使用您自己的 LLM](#lingodev-cli)。 -助手将会: +--- -1. 配置基于语言的路由(如 `/en`、`/es`、`/pt-BR`) -2. 设置语言切换组件 -3. 实现自动语言检测 -4. 生成所需配置文件 +### Lingo.dev MCP -**注意:** AI 辅助代码生成具有不确定性。请在提交前仔细审核生成的代码。 +在 React 应用中配置 i18n 容易出错——即使是 AI 编码助手也会幻想出不存在的 API 并破坏路由。Lingo.dev MCP 为 AI 助手提供对 Next.js、React Router 和 TanStack Start 框架特定 i18n 知识的结构化访问。适用于 Claude Code、Cursor、GitHub Copilot Agents 和 Codex。 [阅读文档 →](https://lingo.dev/en/mcp) @@ -121,115 +96,20 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ### Lingo.dev CLI -保持翻译内容同步非常繁琐。你新增了一条字符串,忘记翻译,导致国际用户看到损坏的界面。或者你把 JSON 文件发给译者,等几天再手动合并他们的成果。支持 10 多种语言时,你要管理数百个经常不同步的文件。 - -Lingo.dev CLI 实现了自动化。只需指定翻译文件,运行一条命令,所有语言版本自动更新。锁定文件会追踪已翻译内容,你只需为新增或变更内容付费。支持 JSON、YAML、CSV、PO 文件和 markdown。 - -**设置:** +一条命令本地化 JSON、YAML、Markdown、CSV 和 PO 文件。锁定文件跟踪已本地化的内容——仅处理新增或更改的内容。默认使用 Lingo.dev 上的本地化引擎,或使用您自己的 LLM(OpenAI、Anthropic、Google、Mistral、OpenRouter、Ollama)。 ```bash -# Initialize project npx lingo.dev@latest init - -# Run translations npx lingo.dev@latest run ``` -**工作原理:** - -1. 从配置的文件中提取可翻译内容 -2. 发送内容到 LLM 提供商进行翻译 -3. 将翻译结果写回文件系统 -4. 创建 `i18n.lock` 文件以追踪已翻译内容(避免重复处理) - -**配置:** - -`init` 命令会生成 `i18n.json` 文件。请配置 locales 和 buckets: - -```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 提供商: - -```json -{ - "provider": { - "id": "openai", - "model": "gpt-4o-mini", - "prompt": "Translate from {source} to {target}" - } -} -``` - -**支持的 LLM 提供商:** - -- Lingo.dev Engine(推荐) -- OpenAI -- Anthropic -- Google -- Mistral -- OpenRouter -- Ollama - -[阅读文档 →](https://lingo.dev/en/cli) +[查看文档 →](https://lingo.dev/en/docs/cli) --- ### Lingo.dev CI/CD -翻译总是“快完成了”的功能。工程师合并代码时未及时更新本地化内容。QA 在预发布环境发现缺失的翻译——更糟的是,用户在生产环境中发现。根本原因:翻译是一个容易在截止压力下被跳过的手动步骤。 - -Lingo.dev CI/CD 让翻译自动化。每次推送都会触发翻译。缺失的字符串在代码进入生产前就会被补全。无需额外流程——流水线全自动处理。 - -**支持的平台:** - -- GitHub Actions -- GitLab CI/CD -- Bitbucket Pipelines - -**GitHub Actions 设置:** - -创建 `.github/workflows/translate.yml`: - -```yaml -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 }} -``` - -**设置要求:** - -1. 将 `LINGODOTDEV_API_KEY` 添加到仓库机密(设置 > Secrets and variables > Actions) -2. 针对 PR 工作流:在设置 > Actions > General 中启用“允许 GitHub Actions 创建和批准拉取请求” - -**工作流选项:** - -直接提交翻译: +在您的流水线中实现持续本地化。每次推送都会触发本地化——缺失的字符串会在代码发布到生产环境之前自动填充。支持 GitHub Actions、GitLab CI/CD 和 Bitbucket Pipelines。 ```yaml uses: lingodotdev/lingo.dev@main @@ -237,308 +117,48 @@ with: api-key: ${{ secrets.LINGODOTDEV_API_KEY }} ``` -创建包含翻译内容的拉取请求: - -```yaml -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` | 启用并行处理 | - -[阅读文档 →](https://lingo.dev/en/ci/github) +[查看文档 →](https://lingo.dev/en/docs/integrations) --- -### Lingo.dev SDK - -静态翻译文件适用于 UI 标签,但用户生成内容怎么办?聊天消息、产品描述、支持工单——这些在构建时不存在的内容无法预先翻译。你只能显示未翻译文本,或自行构建翻译管道。 - -Lingo.dev SDK 支持运行时内容翻译。传入任意文本、对象或 HTML,即可获得本地化版本。适用于实时聊天、动态通知或任何部署后才出现的内容。支持 JavaScript、PHP、Python 和 Ruby。 - -**安装:** - -```bash -npm install lingo.dev -``` - -**用法:** - -```ts -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("

Welcome

", { - sourceLocale: "en", - targetLocale: "de", -}); - -// Detect language -const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); -// "fr" -``` - -**可用 SDK:** +### Lingo.dev API -- [JavaScript SDK](https://lingo.dev/en/sdk/javascript) - Web 应用、Node.js -- [PHP SDK](https://lingo.dev/en/sdk/php) - PHP、Laravel -- [Python SDK](https://lingo.dev/en/sdk/python) - Django、Flask -- [Ruby SDK](https://lingo.dev/en/sdk/ruby) - Rails +直接从后端代码调用您的本地化引擎。支持同步和异步本地化,提供 webhook 交付、按语言环境隔离故障以及通过 WebSocket 实时监控进度。 -[阅读文档 →](https://lingo.dev/en/sdk) +[查看文档 →](https://lingo.dev/en/docs/api) --- -### Lingo.dev Compiler - -传统 i18n 十分侵入。你需要用 `t()` 函数包裹每个字符串,创建翻译 key(`home.hero.title.v2`),维护并行的 JSON 文件,还要忍受因本地化样板代码导致的组件臃肿。如此繁琐,团队往往拖延国际化,直到变成大规模重构。 - -**配置(Next.js):** - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -```bash -pnpm install @lingo.dev/compiler -``` - -```ts -// 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(), - ], -}); -``` - -```bash -# Recommended: Sign up at lingo.dev and login -npx lingo.dev@latest login +### Lingo Compiler for React(早期测试版) -# Alternative: Add API key to .env -LINGODOTDEV_API_KEY=your_key_here +无需 i18n 包装器的构建时 React 本地化。使用纯英文文本编写组件——编译器会检测可翻译字符串并在构建时生成本地化版本。无需翻译键、无需 JSON 文件、无需 `t()` 函数。支持 Next.js(App Router)和 Vite + React。 -# Or use direct LLM providers (Groq, OpenAI, Anthropic, Google) -GROQ_API_KEY=your_key -``` - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -```ts -// next.config.ts -import type { NextConfig } from "next"; -import { withLingo } from "@lingo.dev/compiler/next"; - -const nextConfig: NextConfig = {}; - -export default async function (): Promise { - return await withLingo(nextConfig, { - sourceRoot: "./app", - sourceLocale: "en", - targetLocales: ["es", "fr", "de"], - models: "lingo.dev", - dev: { usePseudotranslator: true }, - }); -} -``` - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -```ts -// 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(), - ], -}); -``` +[查看文档 →](https://lingo.dev/en/docs/react/compiler) -**生产环境:** 设置 `usePseudotranslator: false`,然后 `next build` - -```tsx -// app/layout.tsx (Next.js) -import { LingoProvider } from "@lingo.dev/compiler/react"; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} -``` - -**主要特性:** - -```tsx -import { useLocale, setLocale } from "@lingo.dev/compiler/react"; - -export function LanguageSwitcher() { - const locale = useLocale(); - return ( - - ); -} -``` - -**开发环境:** `npm run dev`(使用伪翻译器,无需 API 调用) - -**生产环境:** 设置 `usePseudotranslator: false`,然后 `next build` - -将 `.lingo/` 目录提交到版本控制。 - -- Next.js(App Router,支持 React Server Components) -- Vite + React(SPA 和 SSR) - -- 零运行时性能损耗 -- 无需翻译 key 或 JSON 文件 -- 无 `t()` 函数或 `` 包裹组件 -- 自动检测 JSX 中可翻译文本 -- 支持 TypeScript -- 支持 ICU MessageFormat 复数 -- 通过 `data-lingo-override` 属性手动覆盖 -- 内置翻译编辑器小部件 - -[阅读文档 →](https://lingo.dev/en/compiler) - -- `pseudotranslator`:开发模式,使用占位翻译(无 API 成本) -- `real`:使用 LLM 生成实际翻译 -- `cache-only`:生产模式,使用 CI 预生成的翻译(无 API 调用) +--- -## 参与贡献 +## 贡献 -欢迎贡献。请遵循以下指南: +欢迎贡献。请遵循以下准则: -1. **问题反馈:** [报告 bug 或请求新功能](https://github.com/lingodotdev/lingo.dev/issues) -2. **拉取请求:** [提交更改](https://github.com/lingodotdev/lingo.dev/pulls) - - 每个 PR 需要包含 changeset:`pnpm new`(或非发布更改用 `pnpm new:empty`) - - 提交前请确保所有测试通过 -3. **开发:** 本项目为 pnpm + turborepo 单体仓库 +1. **问题:**[报告错误或请求功能](https://github.com/lingodotdev/lingo.dev/issues) +2. **拉取请求:**[提交更改](https://github.com/lingodotdev/lingo.dev/pulls) + - 每个 PR 都需要一个变更集:`pnpm new`(或使用 `pnpm new:empty` 进行非发布更改) + - 提交前确保测试通过 +3. **开发:**这是一个 pnpm + turborepo 单体仓库 - 安装依赖:`pnpm install` - 运行测试:`pnpm test` - 构建:`pnpm build` -**支持:** [Discord 社区](https://lingo.dev/go/discord) +**支持:**[Discord 社区](https://lingo.dev/go/discord) ## Star 历史 -如果你觉得 Lingo.dev 有用,请为我们点亮 star,助力我们达成 10,000 star! +如果您觉得 Lingo.dev 有用,请给我们一个 star,帮助我们达到 10,000 个 star! [ -1. **问题反馈:** [报告 bug 或请求新功能](https://github.com/lingodotdev/lingo.dev/issues) -2. **拉取请求:** [提交更改](https://github.com/lingodotdev/lingo.dev/pulls) - - 每个 PR 需要包含 changeset:`pnpm new`(非发布变更用 `pnpm new:empty`) - - 提交前请确保所有测试通过 -3. **开发:** 本项目为 pnpm + turborepo 单体仓库 - - 安装依赖:`pnpm install` - - 运行测试:`pnpm test` - - 构建:`pnpm build` +![Star History Chart](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -546,30 +166,9 @@ export function LanguageSwitcher() { **可用翻译:** -[English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [西班牙语](/readme/es.md) • [法语](/readme/fr.md) • [俄语](/readme/ru.md) • [乌克兰语](/readme/uk-UA.md) • [德语](/readme/de.md) • [意大利语](/readme/it.md) • [阿拉伯语](/readme/ar.md) • [希伯来语](/readme/he.md) • [印地语](/readme/hi.md) • [葡萄牙语(巴西)](/readme/pt-BR.md) • [孟加拉语](/readme/bn.md) • [波斯语](/readme/fa.md) • [波兰语](/readme/pl.md) • [土耳其语](/readme/tr.md) • [乌尔都语](/readme/ur.md) • [博杰普尔语](/readme/bho.md) • [阿萨姆语](/readme/as-IN.md) • [古吉拉特语](/readme/gu-IN.md) • [马拉地语](/readme/mr-IN.md) • [奥里亚语](/readme/or-IN.md) • [旁遮普语](/readme/pa-IN.md) • [僧伽罗语](/readme/si-LK.md) • [泰米尔语](/readme/ta-IN.md) • [泰卢固语](/readme/te-IN.md) - -**添加新语言:** - -1. 按 [`i18n.json`] (./i18n.json) 添加 locale 代码,使用 [BCP-47 格式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) -2. 提交拉取请求 - -**BCP-47 locale 格式:** `language[-Script][-REGION]` - -- `language`:ISO 639-1/2/3(小写):`en`、`zh`、`bho` -- `Script`:ISO 15924(首字母大写):`Hans`、`Hant`、`Latn` -- `REGION`:ISO 3166-1 alpha-2(大写):`US`、`CN`、`IN` -- 示例:`en`、`pt-BR`、`zh-Hans`、`sr-Cyrl-RS` - [English](https://github.com/lingodotdev/lingo.dev) • [中文](/readme/zh-Hans.md) • [日本語](/readme/ja.md) • [한국어](/readme/ko.md) • [Español](/readme/es.md) • [Français](/readme/fr.md) • [Русский](/readme/ru.md) • [Українська](/readme/uk-UA.md) • [Deutsch](/readme/de.md) • [Italiano](/readme/it.md) • [العربية](/readme/ar.md) • [עברית](/readme/he.md) • [हिन्दी](/readme/hi.md) • [Português (Brasil)](/readme/pt-BR.md) • [বাংলা](/readme/bn.md) • [فارسی](/readme/fa.md) • [Polski](/readme/pl.md) • [Türkçe](/readme/tr.md) • [اردو](/readme/ur.md) • [भोजपुरी](/readme/bho.md) • [অসমীয়া](/readme/as-IN.md) • [ગુજરાતી](/readme/gu-IN.md) • [मराठी](/readme/mr-IN.md) • [ଓଡ଼ିଆ](/readme/or-IN.md) • [ਪੰਜਾਬੀ](/readme/pa-IN.md) • [සිංහල](/readme/si-LK.md) • [தமிழ்](/readme/ta-IN.md) • [తెలుగు](/readme/te-IN.md) **添加新语言:** -1. 按 [`i18n.json`](./i18n.json) 添加 locale 代码,使用 [BCP-47 格式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) +1. 使用 [BCP-47 格式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale)将语言代码添加到 [`i18n.json`](./i18n.json) 2. 提交拉取请求 - -**BCP-47 locale 格式:** `language[-Script][-REGION]` - -- `language`:ISO 639-1/2/3(小写):`en`、`zh`、`bho` -- `Script`:ISO 15924(首字母大写):`Hans`、`Hant`、`Latn` -- `REGION`:ISO 3166-1 alpha-2(大写):`US`、`CN`、`IN` -- 示例:`en`、`pt-BR`、`zh-Hans`、`sr-Cyrl-RS`