diff --git a/i18n.lock b/i18n.lock index 948b531d8..008b7cc5e 100644 --- a/i18n.lock +++ b/i18n.lock @@ -8,7 +8,7 @@ checksums: content/4: fdb5d914fd53a8502b906bd89fe6f6d1 content/5: 51adf33450cab2ef392e93147386647c content/6: 56ea06288e338a3c329d80a0f845b4a0 - content/7: ae9cd7c558922aa5eba1d4dfd8915b2e + content/7: ac632ee57422256987ec69fa1fa55571 content/8: 51adf33450cab2ef392e93147386647c content/9: 9c9e94642807e3728a1791e6cfd7516b content/10: b0dd1b2af0249cadc8147fcd2824162d @@ -19,9 +19,9 @@ checksums: content/15: e6b92356986f64601ded73a3a9af1760 content/16: c925da800b56879b8b83d151a263f7bb content/17: 385018fc789da284a0c96960fe3f6ec4 - content/18: 39673a2fbbfcb3d6035f8a12f32a6e52 + content/18: 2f6014a509bf52e9a0db39569885dfd5 content/19: 97f1f7f04ad2be288b05caacb61f66c3 - content/20: 96afeb7ab8ab312120cb0dec235f407e + content/20: 9934e6aeaf9c4b8a33e70cc0601679a9 content/21: 7d2a6af3866f9c4beba6a53f207a599b content/22: ca7c2dd535aa43aa1804fdb47c26cf42 content/23: 51adf33450cab2ef392e93147386647c @@ -29,14 +29,14 @@ checksums: content/25: 9efc8f824620922048a0cbd5463e6baf content/26: ac19d92f18727a2abce5e8b280412f72 content/27: a9dae9fb033168e0cc0128b42c133897 - content/28: b581d7213fcd9fe1ffef252d04edafea + content/28: cab963eba977bb2538989ce8a02c4e50 content/29: a3eef7ecff263ece91113908c007b486 - content/30: da146b6a33df8ab327349ef2cd9de5e1 + content/30: 904b08ea9e505e43a60a01563ffc74a9 content/31: 520419d855f9069c9a48f0c590d2c60b - content/32: 384243c13b52adaa4aa619e8b10e65c3 - content/33: 348895c13a0f06afbae7f3c832cbee98 - content/34: c4d10409af53c453ed6bd243b8b97651 - content/35: 0b7c38fd121008dcdbadbf16904c652f + content/32: d260e7ce3242f424076b40c1ad3e1f65 + content/33: 69db4bb5d135eb2173ff00a3ad5fe4fc + content/34: 36593fbb8a8679de7088014740b04770 + content/35: edc9976e14549f7b4f33bf15cd12b208 content/36: eb9ad4a218b52cd59a4d23e889627a62 content/37: 920e5ca759926d926da155e9656dcd02 content/38: c9c30d1a6b315c734b07060cd402b1fa @@ -47,52 +47,52 @@ checksums: content/43: 48e65dd974a85d67d43e5b3da6a78ff8 content/44: b7e51ae9cce80e0be35533cf8ccce5a7 content/45: 590b699bc7b9f756129e6f5c2b189c9e - content/46: f326987f3b0dd0162fa9a6f0b32ae181 - content/47: 931dc0722c3fbd4cf5af40d67c92255c + content/46: ed02fd2d93a74e9d3c692ac1620990fe + content/47: a0364c9c16e27ff63e92db74f27bf8be content/48: 05960209692c8fc636f7da40163fac04 - content/49: 3aa3ab067923c80b37c641f3d6566831 + content/49: 15617f8218be7bf0c656c608ed6541fc content/50: a106f8db58f6d2e59173e9c68affa713 content/51: b9830587df82e6a5a870afa08f30544c - content/52: 309e2ce52a98e9bb0f6143996549eebb + content/52: 755163c96e23f2783dcba2e032349782 content/53: 1837a73959f9d011a5d1b21de26f815e - content/54: 2c22a291c616fe28a204ed2f10dd905b + content/54: 57c98b2f8f235598ae294f1d09eb1274 content/55: f485581183a6a7b40851438e5b2a1f1b - content/56: 9c985b24acc2d0cbbada8e161af777d5 + content/56: 68c9888b4baef08387b1a21a7e44e6cd content/57: 549f415f93ce5b29bfb16cf5fe0bf785 content/58: 51adf33450cab2ef392e93147386647c content/59: 3f5c50b11a42c261f57641175fc69222 content/60: 2ff59376b60be9d37dd4845afb951e94 content/61: f2c27e1ada8ed0823ad58ad83eee76b1 content/62: 155571e96a847fa90449522f2b77a54b - content/63: 0190ab67d95a4c2d453fce9dae4508b6 + content/63: 863046676d0454d212c40ddf7bb700e4 content/64: c925da800b56879b8b83d151a263f7bb - content/65: 8969b18c6bc5d0c7018aa965410a1be5 + content/65: e16c6b546c5e32ee71ec11b54e456216 content/66: 36c89a48af78d0c2a439185e74c170ea content/67: d1ef1d51d33535073230250d9e8dfee8 content/68: bd52587c186fb2501e9c47a7fb0b2189 content/69: 51adf33450cab2ef392e93147386647c content/70: e961a3814821e9529a4d8e08cf496f17 - content/71: 47c181bd7227e1dc0830adce14f94b14 + content/71: d8bec837d112c3cd1c53438353b09ed8 content/72: 86788f54446ee8745226bdddf4055cb9 content/73: 155571e96a847fa90449522f2b77a54b - content/74: 751561cfdbc84712b32cd375697a362f + content/74: def921ed25d6ff8216542490a5fbc1a0 content/75: 092fde845f398b5322bb9b3e69a07ce6 - content/76: 39b85b238c3a00ae1acb1d9ad7e834b7 + content/76: d14a2bf38e78a012e159a7915a612a15 content/77: 1d76d5f8d23c18ea8789cac55c440bcb - content/78: e63e5f6a557b28fd6d2d9a2e6babe9d0 + content/78: 4a2f9c451c8e957a54c2cb818b8cf34a content/79: 79dc425a930dabcbc62c4af289f2e6d5 - content/80: e2df426b0840fb9088fd7a33a9ac57bc + content/80: 3280b3907d020b3a691d740832ae70e7 content/81: be664aea2917020efb16c4946593f119 - content/82: a206be4b15f56d3face035b3b7784b99 + content/82: 2633e220ade7f46cb6d4c9273fd001d5 content/83: 0c5c9be2b269111bd0c388ee7a3184cd - content/84: b4c67f33e5014e9226490ca951ce9c47 - content/85: 7a8782963389d2189f52be8c9d232de6 - content/86: b7d77c41ac0a05293a82106fe76c5b63 - content/87: 78d2b9d0bb00df8cd51d787d86d55c6e + content/84: dd0c693003eade2e536aff82f043d57a + content/85: ab82386736186c1e02042d3b0eff3d84 + content/86: e55631402680e7be376aca390cdbd207 + content/87: 4a14b613ffd8aec8fe21af632429259b content/88: 7c42527fc9be269d599e31379c49a1fe - content/89: fb110f75da846dd85bc444842616ada1 + content/89: f2630e5a88e09a612d4d8413c2d02745 content/90: bc32754a3325936c0e49c1bfbd710eac - content/91: 28ffebda0009dc7110d779aaf80de7d2 + content/91: 26caa05ddbd48ee00bee8fe553321815 content/92: 0b8b6bb14eeae9d2ea344cabfefaa543 content/93: 2b8ba27330ad5af9422b0de27bc01e00 content/94: 3b04113f7cf1b64fe9a357a247925d34 @@ -100,7 +100,7 @@ checksums: content/96: 51adf33450cab2ef392e93147386647c content/97: 72b9fd0ce0e4bfc98dfd36fb35238fab content/98: 982245493d09b3db1ef60824afa1bbf8 - content/99: a252b562fc300883f2845e0c54a2d0cd + content/99: 0649cda26da4bb9ce185b9e8dd6ee41e content/100: c234c213e540ee3bcffad017c9c9cb75 content/101: dcd5bc676b9b4956e66fe1045f86a5a0 content/102: fa2896ac28faaddc29540dba0f2ea7cf @@ -111,6 +111,6 @@ checksums: content/107: c708ae80a2e8b9752789a68a9bee176d content/108: 11f28ceca8ebac9f2469cb627a1a7937 content/109: acb15cd882a954ec87b446478a0fc54b - content/110: 9d640420f03b6b66571e4e10ff8f2e23 - content/111: 3a723392b702f4ca317da50a6204c68a - content/112: 013ff55aff5956cfe7cf59fdb790f8ed + content/110: 96c485d76c0e7f680d657f4e14beab7a + content/111: ea8aaa0be5ef7931c7f7e671b51a6cc1 + content/112: 526a7243df6a8a7adaac235aa7271601 diff --git a/readme/ar.md b/readme/ar.md index 37dcb5e21..d4763db50 100644 --- a/readme/ar.md +++ b/readme/ar.md @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -التدويل التقليدي متطفل. تقوم بتغليف كل سلسلة نصية في دوال `t()`، وابتكار مفاتيح ترجمة (`home.hero.title.v2`)، وصيانة ملفات JSON متوازية، ومشاهدة مكوناتك تنتفخ بشفرة التوطين الإضافية. إنه ممل للغاية لدرجة أن الفرق تؤجل التدويل حتى يصبح إعادة هيكلة ضخمة. +حلول التدويل التقليدية تدخلية. يجب تغليف كل سلسلة نصية بدوال `t()`، وابتكار مفاتيح ترجمة (`home.hero.title.v2`)، وصيانة ملفات JSON متوازية، وملاحظة تضخم مكوناتك بسبب شيفرة التوطين الزائدة. هذا العمل مرهق لدرجة أن الفرق تؤجل التدويل حتى يتحول لإعادة هيكلة ضخمة. يُلغي Lingo.dev Compiler التعقيدات. اكتب مكونات React بنص إنجليزي عادي. يكتشف المُجمِّع النصوص القابلة للترجمة في وقت البناء ويُنشئ متغيرات محلية تلقائيًا. لا مفاتيح، لا ملفات JSON، لا دوال تغليف - فقط كود React يعمل بلغات متعددة. @@ -432,28 +432,28 @@ export function LanguageSwitcher() { } ``` -**التطوير:** `npm run dev` (يستخدم مترجمًا وهميًا، بدون استدعاءات API) +**التطوير:** `npm run dev` (يستخدم مترجمًا شبه حقيقي، بلا استدعاءات API) -**الإنتاج:** اضبط `usePseudotranslator: false`، ثم `next build` +**الإنتاج:** عيّن `usePseudotranslator: false`، ثم `next build` -قم بإيداع دليل `.lingo/` في نظام التحكم بالإصدارات. +قم بإيداع مجلد `.lingo/` في نظام التحكم بالإصدارات. **الميزات الرئيسية:** -- تكلفة أداء صفرية في وقت التشغيل +- تكلفة أداء وقت التشغيل = صفر - لا مفاتيح ترجمة أو ملفات JSON - لا دوال `t()` أو مكونات تغليف `` -- اكتشاف تلقائي للنصوص القابلة للترجمة في JSX +- الكشف التلقائي عن النصوص القابلة للترجمة في JSX - دعم TypeScript -- تنسيق ICU MessageFormat للجمع -- تجاوزات يدوية عبر خاصية `data-lingo-override` -- أداة محرر ترجمة مدمجة +- دعم الجمع باستخدام ICU MessageFormat +- تجاوز يدوي عبر خاصية `data-lingo-override` +- أداة تحرير ترجمة مدمجة **أوضاع البناء:** -- `pseudotranslator`: وضع التطوير مع ترجمات نائبة (بدون تكاليف API) +- `pseudotranslator`: وضع التطوير مع ترجمات نائبة (بدون تكلفة API) - `real`: إنشاء ترجمات فعلية باستخدام نماذج اللغة الكبيرة -- `cache-only`: وضع الإنتاج باستخدام ترجمات مُنشأة مسبقًا من CI (بدون استدعاءات API) +- `cache-only`: وضع الإنتاج باستخدام الترجمات المُنشأة مسبقًا من CI (بدون استدعاءات API) **الأطر المدعومة:** @@ -470,11 +470,11 @@ export function LanguageSwitcher() { المساهمات مرحب بها. يرجى اتباع هذه الإرشادات: -1. **المشكلات:** [الإبلاغ عن الأخطاء أو طلب ميزات](https://github.com/lingodotdev/lingo.dev/issues) -2. **طلبات السحب:** [إرسال التغييرات](https://github.com/lingodotdev/lingo.dev/pulls) - - كل طلب سحب يتطلب مجموعة تغييرات: `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` @@ -499,12 +499,12 @@ 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. أرسل طلب سحب -**تنسيق لغة BCP-47:** `language[-Script][-REGION]` +**صيغة لغة BCP-47:** `language[-Script][-REGION]` - `language`: ISO 639-1/2/3 (أحرف صغيرة): `en`، `zh`، `bho` -- `Script`: ISO 15924 (حالة العنوان): `Hans`، `Hant`، `Latn` +- `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/as-IN.md b/readme/as-IN.md index 44f63932d..d054d14af 100644 --- a/readme/as-IN.md +++ b/readme/as-IN.md @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is সহায়কে: -1. লোকেল-ভিত্তিক ৰাউটিং কনফিগাৰ কৰিব (যেনে, `/en`, `/es`, `/pt-BR`) -2. ভাষা সলনিকাৰী কম্পোনেণ্ট ছেটআপ কৰিব -3. স্বয়ংক্ৰিয় লোকেল চিনাক্তকৰণ ইমপ্লিমেণ্ট কৰিব -4. প্ৰয়োজনীয় কনফিগাৰেশ্যন ফাইল জেনাৰেট কৰিব +1. লোকেল ভিত্তিক ৰাউটিং কনফিগাৰ কৰক (উদাহৰণস্বৰূপে, `/en`, `/es`, `/pt-BR`) +2. ভাষা সলনি কৰা কম্পোনেণ্টসমূহ ছেট আপ কৰক +3. স্বয়ংক্ৰিয় লোকেল চিনাক্তকৰণ ইমপ্লিমেণ্ট কৰক +4. প্ৰয়োজনীয় কনফিগাৰেশ্যন ফাইল জেনেৰেট কৰক **টোকা:** AI-সহায়িত কোড জেনাৰেশ্যন নন-ডিটাৰমিনিষ্টিক। কমিট কৰাৰ আগতে জেনাৰেট কৰা কোড পৰ্যালোচনা কৰক। @@ -140,9 +140,9 @@ npx lingo.dev@latest run **ই কেনেকৈ কাম কৰে:** 1. কনফিগাৰ কৰা ফাইলসমূহৰ পৰা অনুবাদযোগ্য কন্টেণ্ট এক্সট্ৰেক্ট কৰে -2. অনুবাদৰ বাবে LLM প্ৰভাইডাৰলৈ কন্টেণ্ট প্ৰেৰণ কৰে -3. অনুবাদিত কন্টেণ্ট ফাইলছিষ্টেমলৈ পুনৰ লিখে -4. সম্পূৰ্ণ হোৱা অনুবাদসমূহ ট্ৰেক কৰিবলৈ `i18n.lock` ফাইল সৃষ্টি কৰে (অপ্ৰয়োজনীয় প্ৰচেছিং এৰাই চলে) +2. অনুবাদৰ বাবে কন্টেণ্ট LLM প্ৰভাইডাৰলৈ প্ৰেৰণ কৰা হয় +3. অনুবাদৰ ফলাফল পুনৰ ফাইলচিস্টেমত লিখে +4. সম্পূৰ্ণ হোৱা অনুবাদসমূহ ট্ৰেক কৰিবলৈ `i18n.lock` ফাইল সৃষ্টি কৰে (অপ্ৰয়োজনীয় পুনৰ প্ৰচেছিং এৰোৱাই যায়) **কনফিগাৰেশ্যন:** @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -পৰম্পৰাগত i18n আক্ৰমণাত্মক। আপুনি প্ৰতিটো ষ্ট্ৰিং `t()` ফাংশ্যনত ৰেপ কৰে, অনুবাদ কী উদ্ভাৱন কৰে (`home.hero.title.v2`), সমান্তৰাল JSON ফাইল মেইণ্টেইন কৰে, আৰু আপোনাৰ কম্পোনেণ্টবোৰ লোকেলাইজেশ্যন বয়লাৰপ্লেটৰ সৈতে ফুলি উঠা দেখে। ই ইমানেই ক্লান্তিকৰ যে টিমসমূহে আন্তৰ্জাতিকীকৰণ পিছুৱাই দিয়ে যেতিয়ালৈকে ই এটা বৃহৎ ৰিফেক্টৰ নহয়। +পৰম্পৰাগত i18n আক্ৰমণাত্মক। আপুনি প্ৰতিটো ষ্ট্ৰিং `t()` ফাংশ্যনত ৰেপ কৰে, অনুবাদ কী উদ্ভাৱন কৰে (`home.hero.title.v2`), সমান্তৰাল JSON ফাইল বজাই ৰাখে, আৰু আপোনাৰ কম্পোনেণ্টবোৰ স্থানীয়কৰণ বয়লাৰপ্লেটৰ দৰে ফুলি উঠে। ই ইমান ক্লান্তিকৰ যে Team-বোৰে আন্তঃৰাষ্ট্ৰীয়কৰণ ডিলেই কৰে যেতিয়ালৈকে এইটো এটা ডাঙৰ ৰিফেক্টৰ হৈ পৰা নাই। Lingo.dev Compiler এ আনুষ্ঠানিকতা আঁতৰায়। সাধাৰণ ইংৰাজী টেক্সটৰ সৈতে React কম্পোনেণ্ট লিখক। কম্পাইলাৰে বিল্ড টাইমত অনুবাদযোগ্য ষ্ট্ৰিং চিনাক্ত কৰে আৰু স্বয়ংক্ৰিয়ভাৱে স্থানীয়কৃত ভেৰিয়েণ্ট জেনেৰেট কৰে। কোনো কী নাই, কোনো JSON ফাইল নাই, কোনো ৰেপাৰ ফাংচন নাই - কেৱল React ক'ড যি একাধিক ভাষাত কাম কৰে। @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**ডেভেলপমেণ্ট:** `npm run dev` (pseudotranslator ব্যৱহাৰ কৰে, কোনো API কল নাই) +**ডেভেলপমেণ্ট:** `npm run dev` (pseudotranslator ব্যৱহাৰ কৰে, কোনো API কল নহয়) **প্ৰডাকশ্যন:** `usePseudotranslator: false` ছেট কৰক, তাৰপিছত `next build` -`.lingo/` ডাইৰেক্টৰী ভাৰ্ছন কণ্ট্ৰ'লত কমিট কৰক। +`.lingo/` ডাইৰেক্টৰী version control-ত commit কৰক। **মুখ্য বৈশিষ্ট্যসমূহ:** - শূন্য ৰানটাইম পাৰফৰ্মেন্স খৰচ -- কোনো অনুবাদ কী বা JSON ফাইল নাই -- কোনো `t()` ফাংচন বা `` ৰেপাৰ কম্পোনেণ্ট নাই -- JSX ত অনুবাদযোগ্য টেক্সটৰ স্বয়ংক্ৰিয় চিনাক্তকৰণ +- অনুবাদ কী বা JSON ফাইল নাই +- `t()` ফাংচন বা `` wrapper কম্পোনেণ্ট নাই +- JSX-ত অনুবাদযোগ্য টেক্সটৰ স্বয়ংক্ৰিয় চিনাক্তকৰণ - TypeScript সমৰ্থন -- বহুবচনৰ বাবে ICU MessageFormat -- `data-lingo-override` এট্ৰিবিউটৰ জৰিয়তে মেনুৱেল অভাৰৰাইড -- বিল্ট-ইন অনুবাদ এডিটৰ ৱিজেট +- বহুবচন সমৰ্থনৰ বাবে ICU MessageFormat +- `data-lingo-override` এট্ৰিবিউটৰ জৰিয়তে মেনুৱেল অভাৰ্ৰাইড +- ইন-বিল্ট অনুবাদ এডিটৰ উইজেট **বিল্ড ম'ডসমূহ:** -- `pseudotranslator`: প্লেচহ'ল্ডাৰ অনুবাদৰ সৈতে ডেভেলপমেণ্ট ম'ড (কোনো API খৰচ নাই) +- `pseudotranslator`: প্লেচহোল্ডাৰ অনুবাদৰ সৈতে ডেভেলপমেণ্ট ম'ড (কোনো API খৰচ নাই) - `real`: LLM ব্যৱহাৰ কৰি প্ৰকৃত অনুবাদ জেনেৰেট কৰক -- `cache-only`: CI ৰ পৰা পূৰ্ব-জেনেৰেট কৰা অনুবাদ ব্যৱহাৰ কৰি প্ৰডাকশ্যন ম'ড (কোনো API কল নাই) +- `cache-only`: CI-ৰ পৰা pre-generated অনুবাদ ব্যৱহাৰ কৰি প্ৰডাকশ্যন ম'ড (কোনো API কল নহয়) **সমৰ্থিত ফ্ৰেমৱৰ্কসমূহ:** @@ -470,13 +470,13 @@ 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 পৰিৱৰ্তনৰ বাবে `pnpm new:empty`) - - জমা দিয়াৰ আগতে পৰীক্ষাসমূহ পাছ হোৱাটো নিশ্চিত কৰক -3. **ডেভেলপমেণ্ট:** এইটো এটা pnpm + turborepo monorepo - - নিৰ্ভৰশীলতাসমূহ ইনষ্টল কৰক: `pnpm install` - - পৰীক্ষাসমূহ চলাওক: `pnpm test` - - বিল্ড: `pnpm build` +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` + - পৰীক্ষা চলাওক: `pnpm test` + - Build: `pnpm build` **সমৰ্থন:** [Discord সম্প্ৰদায়](https://lingo.dev/go/discord) @@ -498,10 +498,10 @@ export function LanguageSwitcher() { **নতুন ভাষা যোগ কৰা:** -1. [`i18n.json`](./i18n.json) ত [BCP-47 ফৰ্মেট](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) ব্যৱহাৰ কৰি locale code যোগ কৰক +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]` +**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` diff --git a/readme/bho.md b/readme/bho.md index e706db75a..ef257979e 100644 --- a/readme/bho.md +++ b/readme/bho.md @@ -74,7 +74,7 @@ | टूल | उपयोग केस | त्वरित कमांड | | ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | | [**MCP**](#lingodev-mcp) | React ऐप्स खातिर AI-सहायता प्राप्त i18n सेटअप | प्रॉम्प्ट: `Set up i18n` | -| [**CLI**](#lingodev-cli) | JSON, YAML, markdown, CSV, PO फाइल सभ के अनुवाद करीं | `npx lingo.dev@latest run` | +| [**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()` प्लगइन | @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is असिस्टेंट करी: -1. लोकेल-आधारित राउटिंग कॉन्फ़िगर करी (जइसे, `/en`, `/es`, `/pt-BR`) -2. भाषा स्विचिंग कंपोनेंट सेटअप करी -3. ऑटोमैटिक लोकेल डिटेक्शन लागू करी -4. जरूरी कॉन्फ़िगरेशन फाइल जेनरेट करी +1. लोकेल-आधारित राउटिंग के कॉन्फ़िगर करीं (जइसे, `/en`, `/es`, `/pt-BR`) +2. भाषा बदले वाला कंपोनेंट सेटअप करीं +3. ऑटोमैटिक लोकेल डिटेक्शन लागू करीं +4. जरूरी कॉन्फ़िगरेशन फाइल बनाईं **नोट:** AI-सहायता प्राप्त कोड जेनरेशन गैर-निर्धारक बा। कमिट करे से पहिले जेनरेट कइल कोड के समीक्षा करीं। @@ -139,14 +139,14 @@ npx lingo.dev@latest run **ई कइसे काम करेला:** -1. कॉन्फ़िगर कइल फाइल सभ से अनुवाद योग्य सामग्री निकालेला -2. अनुवाद खातिर सामग्री के LLM प्रोवाइडर के भेजेला -3. अनुवादित सामग्री के वापस फाइलसिस्टम में लिखेला -4. पूरा भइल अनुवाद के ट्रैक करे खातिर `i18n.lock` फाइल बनावेला (अनावश्यक प्रोसेसिंग से बचावेला) +1. कॉन्फ़िगर कइल फाइल सभ से अनुवाद योग्य सामग्री निकालीं +2. अनुवाद खातिर कंटेंट के LLM प्रोवाइडर के पास भेजीं +3. अनुवादित कंटेंट वापस फाइल सिस्टम में लिखीं +4. पूरा भइल अनुवाद के ट्रैक रखे खातिर `i18n.lock` फाइल बनाई (अनावश्यक प्रोसेसिंग से बचावेला) **कॉन्फ़िगरेशन:** -`init` कमांड एगो `i18n.json` फाइल जेनरेट करेला। लोकेल आ बकेट कॉन्फ़िगर करीं: +`init` कमांड एगो `i18n.json` फाइल जेनरेट करेला। लोकेल आ बकेट के कॉन्फ़िगर करीं: ```json { @@ -164,7 +164,7 @@ npx lingo.dev@latest run } ``` -`provider` फील्ड वैकल्पिक बा (डिफ़ॉल्ट रूप से Lingo.dev Engine)। कस्टम LLM प्रोवाइडर खातिर: +`provider` फील्ड वैकल्पिक बा (डिफ़ॉल्ट Lingo.dev Engine बा)। कस्टम LLM प्रोवाइडर खातिर: ```json { @@ -204,7 +204,7 @@ Lingo.dev CI/CD अनुवाद के ऑटोमैटिक बना द **GitHub Actions सेटअप:** -`.github/workflows/translate.yml` बनाईं: +`.github/workflows/translate.yml` बनाई: ```yaml name: Translate @@ -226,8 +226,8 @@ jobs: **सेटअप आवश्यकता:** -1. रिपॉजिटरी सीक्रेट में `LINGODOTDEV_API_KEY` जोड़ीं (Settings > Secrets and variables > Actions) -2. PR वर्कफ़्लो खातिर: Settings > Actions > General में "Allow GitHub Actions to create and approve pull requests" सक्षम करीं +1. रिपॉजिटरी सीक्रेट में `LINGODOTDEV_API_KEY` जोड़ दीं (Settings > Secrets and variables > Actions) +2. PR वर्कफ्लो खातिर: Settings > Actions > General में "Allow GitHub Actions to create and approve pull requests" सक्षम करीं **वर्कफ़्लो विकल्प:** @@ -252,14 +252,14 @@ env: **उपलब्ध इनपुट:** -| इनपुट | डिफ़ॉल्ट | विवरण | -| -------------------- | ---------------------------------------------- | ------------------------------- | -| `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` | समानांतर प्रोसेसिंग सक्षम करीं | +| इनपुट | डिफ़ॉल्ट | विवरण | +| -------------------- | ---------------------------------------------- | ------------------------------ | +| `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) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -पारंपरिक i18n आक्रामक बा। रउआ हर स्ट्रिंग के `t()` फंक्शन में लपेटीला, अनुवाद की (`home.hero.title.v2`) के आविष्कार करीला, समानांतर JSON फाइल के मेंटेन करीला, आ अपना कंपोनेंट के लोकलाइजेशन बॉयलरप्लेट से फूलल देखीला। ई एतना थकाऊ बा कि टीम अंतर्राष्ट्रीयकरण के तब तक टाल देवेला जब तक ई एगो बहुत बड़ रिफैक्टर ना बन जाला। +पारंपरिक i18n दखलअंदाज करे वाला बा। हर स्ट्रिंग के रउआ `t()` फंक्शन में लपेटले, अनुवाद कुंजी (`home.hero.title.v2`) गढ़ेनी, समांतर JSON फाइल बनाएनी, आ देखत बानी कि रउआ के कंपोनेंट स्थानीयकरण बायलरप्लेट से फूल गइल बा। ई अतना थकाऊ बा कि टीम इंटरनेशनलाइजेशन के तब तक टारेले जब तक ऊ एगो विशाल रिफैक्टरिंग नइखे बन जाला। Lingo.dev Compiler औपचारिकता के खत्म क देला। सादा अंग्रेजी टेक्स्ट के साथ React कंपोनेंट लिखीं। कंपाइलर बिल्ड टाइम पर अनुवाद योग्य स्ट्रिंग के पहचान लेला आ स्वचालित रूप से स्थानीयकृत वेरिएंट जेनरेट क देला। ना कुंजी, ना JSON फाइल, ना रैपर फंक्शन - बस React कोड जवन कई भाषा में काम करेला। @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**डेवलपमेंट:** `npm run dev` (स्यूडोट्रांसलेटर के उपयोग करेला, कवनो API कॉल नइखे) +**डेवलपमेंट:** `npm run dev` (पस्यूडोट्रांसलेटर के इस्तेमाल, कवनो API कॉल नइखे) -**प्रोडक्शन:** `usePseudotranslator: false` सेट करीं, फिर `next build` +**प्रोडक्शन:** पहिले `usePseudotranslator: false` सेट करीं, फिर `next build` -`.lingo/` डायरेक्टरी के वर्जन कंट्रोल में कमिट करीं। +`.lingo/` डायरेक्टरी के version control में कमिट करीं। **मुख्य विशेषता:** -- शून्य रनटाइम परफॉर्मेंस लागत -- ना अनुवाद कुंजी ना JSON फाइल -- ना `t()` फंक्शन ना `` रैपर कंपोनेंट -- JSX में अनुवाद योग्य टेक्स्ट के स्वचालित पहचान -- TypeScript समर्थन +- शून्य रनटाइम प्रदर्शन लागत +- ना अनुवाद कुंजी, ना JSON फाइल +- ना `t()` फंक्शन या `` रैपर कंपोनेंट +- JSX में अनुवाद योग्य टेक्स्ट के अपने आप पता करेला +- TypeScript के समर्थन - बहुवचन खातिर ICU MessageFormat -- `data-lingo-override` एट्रिब्यूट के माध्यम से मैनुअल ओवरराइड +- `data-lingo-override` एट्रिब्यूट से मैन्युअल ओवरराइड - बिल्ट-इन अनुवाद एडिटर विजेट **बिल्ड मोड:** - `pseudotranslator`: प्लेसहोल्डर अनुवाद के साथ डेवलपमेंट मोड (कवनो API लागत नइखे) -- `real`: LLM के उपयोग करके वास्तविक अनुवाद जेनरेट करीं -- `cache-only`: CI से पहिले से जेनरेट कइल अनुवाद के उपयोग करके प्रोडक्शन मोड (कवनो API कॉल नइखे) +- `real`: LLM के इस्तेमाल से असली अनुवाद बनाईं +- `cache-only`: CI से पहिले से बनल अनुवाद के साथ प्रोडक्शन मोड (कवनो API कॉल नइखे) **समर्थित फ्रेमवर्क:** @@ -469,11 +469,11 @@ 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` गैर-रिलीज बदलाव खातिर) - - सबमिट करे से पहिले सुनिश्चित करीं कि टेस्ट पास हो जाला -3. **डेवलपमेंट:** ई एगो pnpm + turborepo monorepo बा +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 मोनोरेपो ह - डिपेंडेंसी इंस्टॉल करीं: `pnpm install` - टेस्ट चलाईं: `pnpm test` - बिल्ड करीं: `pnpm build` @@ -498,12 +498,12 @@ export function LanguageSwitcher() { **नया भाषा जोड़ल:** -1. [`i18n.json`](./i18n.json) में [BCP-47 फॉर्मेट](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) के इस्तेमाल करके locale code जोड़ीं +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 (lowercase): `en`, `zh`, `bho` -- `Script`: ISO 15924 (title case): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (uppercase): `US`, `CN`, `IN` +- `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/bn.md b/readme/bn.md index d89d9da99..f91fc786a 100644 --- a/readme/bn.md +++ b/readme/bn.md @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is সহায়ক করবে: -1. লোকেল-ভিত্তিক রাউটিং কনফিগার করবে (যেমন, `/en`, `/es`, `/pt-BR`) -2. ভাষা পরিবর্তন কম্পোনেন্ট সেটআপ করবে -3. স্বয়ংক্রিয় লোকেল সনাক্তকরণ বাস্তবায়ন করবে -4. প্রয়োজনীয় কনফিগারেশন ফাইল তৈরি করবে +১. লোকেল-ভিত্তিক রাউটিং কনফিগার করুন (যেমন, `/en`, `/es`, `/pt-BR`) +২. ভাষা সুইচিং কম্পোনেন্ট সেটআপ করুন +৩. স্বয়ংক্রিয় লোকেল সনাক্তকরণ বাস্তবায়ন করুন +৪. প্রয়োজনীয় কনফিগারেশন ফাইল তৈরি করুন **দ্রষ্টব্য:** AI-সহায়তা কোড জেনারেশন নন-ডিটারমিনিস্টিক। কমিট করার আগে জেনারেট করা কোড পর্যালোচনা করুন। @@ -139,14 +139,14 @@ npx lingo.dev@latest run **এটি কীভাবে কাজ করে:** -১. কনফিগার করা ফাইল থেকে অনুবাদযোগ্য কন্টেন্ট এক্সট্র্যাক্ট করে -২. অনুবাদের জন্য LLM প্রোভাইডারে কন্টেন্ট পাঠায় -৩. অনুবাদিত কন্টেন্ট ফাইলসিস্টেমে লিখে রাখে -৪. সম্পন্ন অনুবাদ ট্র্যাক করার জন্য `i18n.lock` ফাইল তৈরি করে (অপ্রয়োজনীয় প্রসেসিং এড়ায়) +১. কনফিগার করা ফাইল থেকে অনুবাদযোগ্য কন্টেন্ট এক্সট্র্যাক্ট করা হয় +২. অনুবাদের জন্য কন্টেন্ট LLM প্রদানকারীতে পাঠানো হয় +৩. অনুবাদিত কন্টেন্ট ফাইল সিস্টেমে সংরক্ষণ করা হয় +৪. সম্পন্ন অনুবাদ ট্র্যাক করতে `i18n.lock` ফাইল তৈরি করা হয় (অপ্রয়োজনীয় প্রসেসিং এড়াতে) **কনফিগারেশন:** -`init` কমান্ড একটি `i18n.json` ফাইল জেনারেট করে। লোকেল এবং বাকেট কনফিগার করুন: +`init` কমান্ডটি একটি `i18n.json` ফাইল তৈরি করে। লোকেল ও বাকেট কনফিগার করুন: ```json { @@ -164,7 +164,7 @@ npx lingo.dev@latest run } ``` -`provider` ফিল্ডটি ঐচ্ছিক (ডিফল্ট Lingo.dev Engine)। কাস্টম LLM প্রোভাইডারের জন্য: +`provider` ক্ষেত্রটি ঐচ্ছিক (ডিফল্ট Lingo.dev Engine)। কাস্টম LLM প্রোভাইডার ব্যবহারে: ```json { @@ -227,7 +227,7 @@ jobs: **সেটআপ প্রয়োজনীয়তা:** ১. রিপোজিটরি সিক্রেটে `LINGODOTDEV_API_KEY` যোগ করুন (Settings > Secrets and variables > Actions) -২. PR ওয়ার্কফ্লোর জন্য: Settings > Actions > General-এ "Allow GitHub Actions to create and approve pull requests" সক্ষম করুন +২. PR ওয়ার্কফ্লোর জন্য: Settings > Actions > General-এ "Allow GitHub Actions to create and approve pull requests" সক্রিয় করুন **ওয়ার্কফ্লো অপশন:** @@ -256,9 +256,9 @@ env: | -------------------- | ---------------------------------------------- | -------------------------------------- | | `api-key` | (প্রয়োজনীয়) | Lingo.dev API কী | | `pull-request` | `false` | সরাসরি কমিট করার পরিবর্তে PR তৈরি করুন | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | কাস্টম কমিট মেসেজ | +| `commit-message` | `"feat: update translations via @LingoDotDev"` | কাস্টম কমিট বার্তা | | `pull-request-title` | `"feat: update translations via @LingoDotDev"` | কাস্টম PR শিরোনাম | -| `working-directory` | `"."` | যে ডিরেক্টরিতে চালাতে হবে | +| `working-directory` | `"."` | চলার ডিরেক্টরি | | `parallel` | `false` | প্যারালাল প্রসেসিং সক্রিয় করুন | [ডকুমেন্টেশন পড়ুন →](https://lingo.dev/en/ci/github) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -ট্র্যাডিশনাল i18n ইনভেসিভ। আপনি প্রতিটি স্ট্রিং `t()` ফাংশনে র‍্যাপ করেন, অনুবাদ কী আবিষ্কার করেন (`home.hero.title.v2`), প্যারালাল JSON ফাইল মেইনটেইন করেন, এবং আপনার কম্পোনেন্টগুলো লোকালাইজেশন বয়লারপ্লেটে ফুলে যেতে দেখেন। এটি এতটাই ক্লান্তিকর যে টিমগুলো আন্তর্জাতিকীকরণ বিলম্বিত করে যতক্ষণ না এটি একটি বিশাল রিফ্যাক্টরে পরিণত হয়। +পরিচিত i18n পদ্ধতি অনুপ্রবেশকারী। আপনি প্রতিটি স্ট্রিংকে `t()` ফাংশনে র‍্যাপ করেন, অনুবাদের কী (`home.hero.title.v2`) উদ্ভাবন করেন, সমান্তরাল JSON ফাইল মেইনটেইন করেন এবং আপনার কম্পোনেন্টগুলিকে স্থানীয়করণ বয়লারপ্লেটের কারণে ফুলে যেতে দেখেন। এত ক্লান্তিকর ও জটিল যে টিমগুলো আন্তর্জাতিকীকরণ বিলম্বিত করে যতক্ষণ না এটি একটি বড় রিফ্যাক্টরে পরিণত হয়। Lingo.dev Compiler আনুষ্ঠানিকতা দূর করে। সাধারণ ইংরেজি টেক্সট দিয়ে React কম্পোনেন্ট লিখুন। কম্পাইলার বিল্ড টাইমে অনুবাদযোগ্য স্ট্রিং সনাক্ত করে এবং স্বয়ংক্রিয়ভাবে স্থানীয়করণ করা ভেরিয়েন্ট তৈরি করে। কোনো কী নেই, কোনো JSON ফাইল নেই, কোনো র‍্যাপার ফাংশন নেই - শুধু React কোড যা একাধিক ভাষায় কাজ করে। @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**ডেভেলপমেন্ট:** `npm run dev` (সিউডোট্রান্সলেটর ব্যবহার করে, কোনো API কল নেই) +**উন্নয়ন:** `npm run dev` (ছদ্ম-অনুবাদক ব্যবহৃত হয়, কোনো API কল নেই) **প্রোডাকশন:** `usePseudotranslator: false` সেট করুন, তারপর `next build` -`.lingo/` ডিরেক্টরি ভার্সন কন্ট্রোলে কমিট করুন। +`.lingo/` ডিরেক্টরিটি ভার্সন কন্ট্রোলে কমিট করুন। **মূল বৈশিষ্ট্য:** - শূন্য রানটাইম পারফরম্যান্স খরচ - কোনো অনুবাদ কী বা JSON ফাইল নেই - কোনো `t()` ফাংশন বা `` র‍্যাপার কম্পোনেন্ট নেই -- JSX-এ অনুবাদযোগ্য টেক্সটের স্বয়ংক্রিয় সনাক্তকরণ -- TypeScript সাপোর্ট +- JSX-এ অনুবাদযোগ্য টেক্সট স্বয়ংক্রিয়ভাবে শনাক্ত করা হয় +- TypeScript সমর্থন - বহুবচনের জন্য ICU MessageFormat - `data-lingo-override` অ্যাট্রিবিউটের মাধ্যমে ম্যানুয়াল ওভাররাইড -- বিল্ট-ইন অনুবাদ এডিটর উইজেট +- অন্তর্নির্মিত অনুবাদ সম্পাদনা উইজেট **বিল্ড মোড:** -- `pseudotranslator`: প্লেসহোল্ডার অনুবাদ সহ ডেভেলপমেন্ট মোড (কোনো API খরচ নেই) -- `real`: LLM ব্যবহার করে প্রকৃত অনুবাদ তৈরি করুন -- `cache-only`: CI থেকে পূর্ব-তৈরি অনুবাদ ব্যবহার করে প্রোডাকশন মোড (কোনো API কল নেই) +- `pseudotranslator`: প্লেসহোল্ডার অনুবাদসহ উন্নয়ন মোড (কোনো API খরচ নেই) +- `real`: LLM ব্যবহার করে প্রকৃত অনুবাদ তৈরি +- `cache-only`: CI থেকে প্রাক-প্রস্তুত অনুবাদ দিয়ে প্রোডাকশন মোড (কোনো API কল নেই) **সমর্থিত ফ্রেমওয়ার্ক:** @@ -469,14 +469,15 @@ 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`) - - জমা দেওয়ার আগে নিশ্চিত করুন যে টেস্ট পাস হয়েছে -3. **ডেভেলপমেন্ট:** এটি একটি pnpm + turborepo monorepo - - ডিপেন্ডেন্সি ইনস্টল করুন: `pnpm install` - - টেস্ট চালান: `pnpm test` - - বিল্ড করুন: `pnpm build` +১. **ইস্যু:** [বাগ রিপোর্ট করুন বা ফিচার অনুরোধ করুন](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` **সাপোর্ট:** [Discord কমিউনিটি](https://lingo.dev/go/discord) @@ -498,12 +499,12 @@ 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. একটি পুল রিকোয়েস্ট জমা দিন +১. [`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]` -- `language`: ISO 639-1/2/3 (ছোট হাতের অক্ষর): `en`, `zh`, `bho` -- `Script`: ISO 15924 (টাইটেল কেস): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (বড় হাতের অক্ষর): `US`, `CN`, `IN` +- `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/de.md b/readme/de.md index d7bb92742..f3af0bc49 100644 --- a/readme/de.md +++ b/readme/de.md @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -Traditionelle i18n ist invasiv. Sie umschließen jeden String 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. +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. @@ -435,7 +435,7 @@ export function LanguageSwitcher() { **Produktion:** Setzen Sie `usePseudotranslator: false`, dann `next build` -Committen Sie das `.lingo/`-Verzeichnis in die Versionskontrolle. +Committen Sie das `.lingo/`-Verzeichnis zur Versionskontrolle. **Hauptmerkmale:** @@ -446,12 +446,12 @@ Committen Sie das `.lingo/`-Verzeichnis in die Versionskontrolle. - TypeScript-Unterstützung - ICU MessageFormat für Plurale - Manuelle Überschreibungen via `data-lingo-override`-Attribut -- Integriertes Übersetzungs-Editor-Widget +- Integriertes Übersetzungseditor-Widget **Build-Modi:** -- `pseudotranslator`: Entwicklungsmodus mit Platzhalter-Übersetzungen (keine API-Kosten) -- `real`: Generierung tatsächlicher Übersetzungen mittels LLMs +- `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:** @@ -469,14 +469,14 @@ Unterstützung weiterer Frameworks geplant. Beiträge sind willkommen. Bitte befolgen Sie diese Richtlinien: -1. **Issues:** [Fehler melden oder Funktionen anfordern](https://github.com/lingodotdev/lingo.dev/issues) +1. **Issues:** [Fehler melden oder Features anfordern](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 Änderungen ohne Release) + - 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 3. **Entwicklung:** Dies ist ein pnpm + turborepo Monorepo - Abhängigkeiten installieren: `pnpm install` - Tests ausführen: `pnpm test` - - Build erstellen: `pnpm build` + - Build: `pnpm build` **Support:** [Discord-Community](https://lingo.dev/go/discord) @@ -498,12 +498,12 @@ Wenn Sie Lingo.dev nützlich finden, geben Sie uns einen Stern und helfen Sie un **Neue Sprache hinzufügen:** -1. 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) hinzufügen -2. Pull Request einreichen +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]` - `language`: ISO 639-1/2/3 (Kleinbuchstaben): `en`, `zh`, `bho` -- `Script`: ISO 15924 (Großschreibung am Anfang): `Hans`, `Hant`, `Latn` +- `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` diff --git a/readme/es.md b/readme/es.md index 27e72b3a6..1b44f3547 100644 --- a/readme/es.md +++ b/readme/es.md @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### 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 ves cómo tus componentes se inflan con código repetitivo de localización. Es tan tedioso que los equipos retrasan la internacionalización hasta que se convierte en una refactorización masiva. +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. @@ -434,9 +434,9 @@ export function LanguageSwitcher() { **Desarrollo:** `npm run dev` (usa pseudotraductor, sin llamadas a la API) -**Producción:** Establece `usePseudotranslator: false`, luego `next build` +**Producción:** Establece `usePseudotranslator: false` y después `next build` -Confirma el directorio `.lingo/` en el control de versiones. +Guarda el directorio `.lingo/` en el control de versiones. **Características principales:** @@ -447,13 +447,13 @@ Confirma el directorio `.lingo/` en el control de versiones. - Soporte para TypeScript - ICU MessageFormat para plurales - Anulaciones manuales mediante el atributo `data-lingo-override` -- Widget de editor de traducción integrado +- Editor de traducción integrado **Modos de compilación:** -- `pseudotranslator`: Modo de desarrollo con traducciones de marcador de posición (sin costos de API) +- `pseudotranslator`: Modo desarrollo con traducciones de marcador de posición (sin costes de API) - `real`: Genera traducciones reales usando LLMs -- `cache-only`: Modo de producción usando traducciones pregeneradas desde CI (sin llamadas a la API) +- `cache-only`: Modo producción usando traducciones pregeneradas desde CI (sin llamadas a la API) **Frameworks compatibles:** @@ -470,13 +470,13 @@ Soporte adicional de frameworks planificado. Las contribuciones son bienvenidas. Por favor, sigue estas directrices: -1. **Issues:** [Reporta errores o solicita funcionalidades](https://github.com/lingodotdev/lingo.dev/issues) +1. **Incidencias:** [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) - Asegúrate de que las pruebas pasen antes de enviar -3. **Desarrollo:** Este es un monorepo de pnpm + turborepo - - Instala las dependencias: `pnpm install` - - Ejecuta las pruebas: `pnpm test` +3. **Desarrollo:** Este es un monorepo pnpm + turborepo + - Instala dependencias: `pnpm install` + - Ejecuta tests: `pnpm test` - Compila: `pnpm build` **Soporte:** [Comunidad de Discord](https://lingo.dev/go/discord) @@ -506,5 +506,5 @@ Si encuentras útil Lingo.dev, danos una estrella y ayúdanos a alcanzar las 10 - `language`: ISO 639-1/2/3 (minúsculas): `en`, `zh`, `bho` - `Script`: ISO 15924 (mayúscula inicial): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (mayúsculas): `US`, `CN`, `IN` +- `REGION`: ISO 3166-1 alfa-2 (mayúsculas): `US`, `CN`, `IN` - Ejemplos: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/fa.md b/readme/fa.md index 2c2697f73..50cf29262 100644 --- a/readme/fa.md +++ b/readme/fa.md @@ -112,7 +112,7 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is 1. پیکربندی مسیریابی مبتنی بر locale (مثلاً `/en`، `/es`، `/pt-BR`) 2. راه‌اندازی کامپوننت‌های تعویض زبان -3. پیاده‌سازی تشخیص خودکار locale +3. پیاده‌سازی شناسایی خودکار locale 4. تولید فایل‌های پیکربندی لازم **توجه:** تولید کد به کمک AI غیرقطعی است. کد تولید شده را قبل از commit بررسی کنید. @@ -140,13 +140,13 @@ npx lingo.dev@latest run **نحوه‌ی عملکرد:** 1. محتوای قابل ترجمه را از فایل‌های پیکربندی‌شده استخراج می‌کند -2. محتوا را برای ترجمه به ارائه‌دهنده‌ی LLM ارسال می‌کند -3. محتوای ترجمه‌شده را به filesystem بازمی‌نویسد -4. فایل `i18n.lock` را برای ردیابی ترجمه‌های تکمیل‌شده ایجاد می‌کند (از پردازش تکراری جلوگیری می‌کند) +2. محتوا را برای ترجمه به ارائه‌دهنده LLM ارسال می‌کند +3. محتوای ترجمه‌شده را به سیستم فایل بازمی‌نویسد +4. فایل `i18n.lock` را برای ردیابی ترجمه‌های کامل‌شده ایجاد می‌کند (از پردازش تکراری جلوگیری می‌شود) **پیکربندی:** -دستور `init` یک فایل `i18n.json` تولید می‌کند. locale‌ها و bucket‌ها را پیکربندی کنید: +دستور `init` یک فایل `i18n.json` تولید می‌کند. localeها و bucketها را پیکربندی کنید: ```json { @@ -164,7 +164,7 @@ npx lingo.dev@latest run } ``` -فیلد `provider` اختیاری است (به‌طور پیش‌فرض Lingo.dev Engine). برای ارائه‌دهندگان LLM سفارشی: +فیلد `provider` اختیاری است (به طور پیش‌فرض Lingo.dev Engine). برای ارائه‌دهندگان LLM سفارشی: ```json { @@ -226,8 +226,8 @@ jobs: **الزامات راه‌اندازی:** -1. `LINGODOTDEV_API_KEY` را به secret‌های repository اضافه کنید (Settings > Secrets and variables > Actions) -2. برای workflow‌های PR: گزینه‌ی "Allow GitHub Actions to create and approve pull requests" را در Settings > Actions > General فعال کنید +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:** @@ -258,7 +258,7 @@ env: | `pull-request` | `false` | ایجاد PR به جای commit مستقیم | | `commit-message` | `"feat: update translations via @LingoDotDev"` | پیام commit سفارشی | | `pull-request-title` | `"feat: update translations via @LingoDotDev"` | عنوان PR سفارشی | -| `working-directory` | `"."` | دایرکتوری برای اجرا | +| `working-directory` | `"."` | مسیر اجرای دستور | | `parallel` | `false` | فعال‌سازی پردازش موازی | [مطالعه مستندات ←](https://lingo.dev/en/ci/github) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -i18n سنتی مزاحم است. شما هر رشته را در توابع `t()` می‌پیچید، کلیدهای ترجمه اختراع می‌کنید (`home.hero.title.v2`)، فایل‌های JSON موازی نگهداری می‌کنید، و شاهد متورم شدن کامپوننت‌های خود با boilerplate محلی‌سازی هستید. آنقدر خسته‌کننده است که تیم‌ها بین‌المللی‌سازی را به تعویق می‌اندازند تا زمانی که به یک refactor عظیم تبدیل شود. +i18n سنتی مزاحم است. شما هر رشته را در توابع `t()` قرار می‌دهید، کلیدهای ترجمه (`home.hero.title.v2`) می‌سازید، فایل‌های JSON موازی نگهداری می‌کنید و مشاهده می‌کنید که کامپوننت‌های شما با boilerplate مربوط به بومی‌سازی حجیم می‌شود. این روند آنقدر زمان‌بر و طاقت‌فرسا است که تیم‌ها بین‌المللی‌سازی را تا زمان نیاز به یک بازسازی بزرگ به تعویق می‌اندازند. کامپایلر Lingo.dev تشریفات را حذف می‌کند. کامپوننت‌های React را با متن ساده انگلیسی بنویسید. کامپایلر رشته‌های قابل ترجمه را در زمان build شناسایی کرده و نسخه‌های محلی‌سازی شده را به صورت خودکار تولید می‌کند. بدون کلید، بدون فایل JSON، بدون تابع wrapper - فقط کد React که اتفاقاً به چندین زبان کار می‌کند. @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**توسعه:** `npm run dev` (از pseudotranslator استفاده می‌کند، بدون فراخوانی API) +**توسعه:** `npm run dev` (استفاده از pseudotranslator، بدون فراخوانی API) -**تولید:** `usePseudotranslator: false` را تنظیم کنید، سپس `next build` +**تولید:** متغیر `usePseudotranslator: false` را تنظیم کنید سپس `next build` -دایرکتوری `.lingo/` را در version control ثبت کنید. +دایرکتوری `.lingo/` را در کنترل نسخه ثبت کنید. **ویژگی‌های کلیدی:** -- بدون هزینه‌ی عملکرد runtime +- بدون هزینه عملکرد زمان اجرا - بدون کلید ترجمه یا فایل JSON -- بدون تابع `t()` یا کامپوننت wrapper `` +- بدون توابع `t()` یا کامپوننت‌های wrapper `` - شناسایی خودکار متن قابل ترجمه در JSX - پشتیبانی از TypeScript - ICU MessageFormat برای جمع‌ها -- بازنویسی دستی از طریق attribute `data-lingo-override` -- ویجت ویرایشگر ترجمه‌ی داخلی +- بازنویسی دستی از طریق صفت `data-lingo-override` +- ویرایشگر داخلی ترجمه **حالت‌های build:** -- `pseudotranslator`: حالت توسعه با ترجمه‌های placeholder (بدون هزینه‌ی API) -- `real`: تولید ترجمه‌های واقعی با استفاده از LLM ها -- `cache-only`: حالت تولید با استفاده از ترجمه‌های از پیش تولید شده از CI (بدون فراخوانی API) +- `pseudotranslator`: حالت توسعه با ترجمه‌های placeholder (بدون هزینه API) +- `real`: تولید ترجمه واقعی با استفاده از LLM +- `cache-only`: حالت تولید با ترجمه‌های از پیش تولید شده از CI (بدون فراخوانی API) **فریم‌ورک‌های پشتیبانی شده:** @@ -469,14 +469,14 @@ export function LanguageSwitcher() { مشارکت‌ها خوش‌آمد هستند. لطفاً این دستورالعمل‌ها را دنبال کنید: -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 است +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 است - نصب وابستگی‌ها: `pnpm install` - اجرای تست‌ها: `pnpm test` - - ساخت: `pnpm build` + - build: `pnpm build` **پشتیبانی:** [انجمن Discord](https://lingo.dev/go/discord) @@ -499,11 +499,11 @@ 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 ارسال کنید +2. یک pull request ارسال کنید **فرمت locale BCP-47:** `language[-Script][-REGION]` - `language`: ISO 639-1/2/3 (حروف کوچک): `en`، `zh`، `bho` -- `Script`: ISO 15924 (حروف بزرگ در ابتدا): `Hans`، `Hant`، `Latn` +- `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/fr.md b/readme/fr.md index 9d2888651..c85a190ba 100644 --- a/readme/fr.md +++ b/readme/fr.md @@ -72,13 +72,13 @@ ## 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 au moment de la compilation sans wrappers i18n | Plugin `withLingo()` | +| 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()` | --- @@ -113,7 +113,7 @@ 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 locale +3. Implémenter la détection automatique de la locale 4. Générer les fichiers de configuration nécessaires **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. @@ -147,7 +147,7 @@ npx lingo.dev@latest run **Configuration :** -La commande `init` génère un fichier `i18n.json`. Configurez les locales et les buckets : +La commande `init` génère un fichier `i18n.json`. Configurez les locales et les buckets : ```json { @@ -165,7 +165,7 @@ La commande `init` génère un fichier `i18n.json`. Configurez les locales et le } ``` -Le champ `provider` est optionnel (par défaut Lingo.dev Engine). Pour les fournisseurs LLM personnalisés : +Le champ `provider` est optionnel (par défaut : Lingo.dev Engine). Pour utiliser des fournisseurs LLM personnalisés : ```json { @@ -205,7 +205,7 @@ Lingo.dev CI/CD rend les traductions automatiques. Chaque push déclenche la tra **Configuration GitHub Actions :** -Créez `.github/workflows/translate.yml` : +Créez `.github/workflows/translate.yml` : ```yaml name: Translate @@ -228,7 +228,7 @@ jobs: **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 Settings > Actions > General +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 :** @@ -253,14 +253,14 @@ env: **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 commiter directement | -| `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 | +| 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) @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Compilateur Lingo.dev -L'i18n traditionnelle est invasive. Vous enveloppez chaque chaîne dans des fonctions `t()`, inventez des clés de traduction (`home.hero.title.v2`), maintenez des fichiers JSON parallèles et regardez vos composants gonfler avec du code passe-partout de localisation. C'est tellement fastidieux que les équipes retardent l'internationalisation jusqu'à ce qu'elle devienne une refonte massive. +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. 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. @@ -432,9 +432,9 @@ export function LanguageSwitcher() { } ``` -**Développement :** `npm run dev` (utilise le pseudotraducteur, aucun appel API) +**Développement :** `npm run dev` (utilise le pseudotraducteur, pas d'appels API) -**Production :** définissez `usePseudotranslator: false`, puis `next build` +**Production :** définissez `usePseudotranslator: false`, puis `next build` Commitez le répertoire `.lingo/` dans le contrôle de version. @@ -445,15 +445,15 @@ Commitez le répertoire `.lingo/` dans le contrôle de version. - Pas de fonctions `t()` ni de composants wrapper `` - Détection automatique du texte traduisible dans JSX - Support TypeScript -- ICU MessageFormat pour les pluriels -- Remplacements manuels via l'attribut `data-lingo-override` -- Widget d'éditeur de traduction intégré +- 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 placeholder (aucun coût API) -- `real` : génère les traductions réelles en utilisant les LLM -- `cache-only` : mode production utilisant les traductions pré-générées depuis la CI (aucun appel API) +- `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 :** @@ -470,14 +470,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 modifications sans release) +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) - 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` - - Exécuter les tests : `pnpm test` - - Build : `pnpm build` +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` **Support :** [Communauté Discord](https://lingo.dev/go/discord) @@ -499,12 +499,12 @@ Si vous trouvez Lingo.dev utile, donnez-nous une étoile et aidez-nous à attein **Ajouter une nouvelle langue :** -1. Ajouter le code de locale à [`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. Soumettre une pull request +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) +2. Soumettez une pull request -**Format de locale BCP-47 :** `language[-Script][-REGION]` +**Format de langue BCP-47 :** `language[-Script][-REGION]` -- `language` : ISO 639-1/2/3 (minuscules) : `en`, `zh`, `bho` -- `Script` : ISO 15924 (casse de titre) : `Hans`, `Hant`, `Latn` -- `REGION` : ISO 3166-1 alpha-2 (majuscules) : `US`, `CN`, `IN` -- Exemples : `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` +- `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 7e810467f..b0c0f9a5e 100644 --- a/readme/gu-IN.md +++ b/readme/gu-IN.md @@ -113,7 +113,7 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is 1. લોકેલ-આધારિત રાઉટિંગ કન્ફિગર કરશે (દા.ત., `/en`, `/es`, `/pt-BR`) 2. ભાષા સ્વિચિંગ કમ્પોનન્ટ્સ સેટઅપ કરશે 3. ઓટોમેટિક લોકેલ ડિટેક્શન લાગુ કરશે -4. જરૂરી કન્ફિગરેશન ફાઇલો જનરેટ કરશે +4. જરૂરી કન્સીફિગરેશન ફાઇલો જનરેટ કરશે **નોંધ:** AI-સહાયિત કોડ જનરેશન નોન-ડિટર્મિનિસ્ટિક છે. કમિટ કરતાં પહેલાં જનરેટ કરેલા કોડની સમીક્ષા કરો. @@ -141,12 +141,12 @@ npx lingo.dev@latest run 1. કન્ફિગર કરેલી ફાઇલોમાંથી અનુવાદ યોગ્ય કન્ટેન્ટ એક્સટ્રેક્ટ કરે છે 2. અનુવાદ માટે LLM પ્રોવાઇડરને કન્ટેન્ટ મોકલે છે -3. અનુવાદિત કન્ટેન્ટને ફાઇલસિસ્ટમમાં પાછું લખે છે -4. પૂર્ણ થયેલા અનુવાદોને ટ્રેક કરવા માટે `i18n.lock` ફાઇલ બનાવે છે (રીડન્ડન્ટ પ્રોસેસિંગ ટાળે છે) +3. અનુવાદિત કન્ટેન્ટને ફરીથી ફાઇલ સિસ્ટમમાં લખે છે +4. સંપૂર્ણ થયેલા અનુવાદોને ટ્રેક કરવા માટે `i18n.lock` ફાઇલ બનાવે છે (અવરોધક પ્રોસેસિંગ ટાળે છે) **કન્ફિગરેશન:** -`init` કમાન્ડ `i18n.json` ફાઇલ જનરેટ કરે છે. લોકેલ્સ અને બકેટ્સ કન્ફિગર કરો: +`init` કમાન્ડ `i18n.json` ફાઇલ જનરેટ કરે છે. લોકેલ અને બકેટ્સ કન્ફિગર કરો: ```json { @@ -164,7 +164,7 @@ npx lingo.dev@latest run } ``` -`provider` ફીલ્ડ વૈકલ્પિક છે (ડિફોલ્ટ Lingo.dev Engine). કસ્ટમ LLM પ્રોવાઇડર્સ માટે: +`provider` ફીલ્ડ વૈકલ્પિક છે (ડિફૉલ્ટ Lingo.dev Engine). કસ્ટમ LLM પ્રોવાઇડર્સ માટે: ```json { @@ -226,8 +226,8 @@ jobs: **સેટઅપ આવશ્યકતાઓ:** -1. રિપોઝિટરી સિક્રેટ્સમાં `LINGODOTDEV_API_KEY` ઉમેરો (Settings > Secrets and variables > Actions) -2. PR વર્કફ્લો માટે: Settings > Actions > General માં "Allow GitHub Actions to create and approve pull requests" સક્ષમ કરો +1. રીપોઝિટરી સિક્રેટ્સમાં `LINGODOTDEV_API_KEY` ઉમેરો (Settings > Secrets and variables > Actions) +2. PR વર્કફ્લો માટે: Settings > Actions > General માં "Allow GitHub Actions to create and approve pull requests" સક્રિય કરો **વર્કફ્લો વિકલ્પો:** @@ -258,8 +258,8 @@ env: | `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` | પેરેલલ પ્રોસેસિંગ સક્ષમ કરો | +| `working-directory` | `"."` | જેમાં रन કરવું તે ડિરેક્ટરી | +| `parallel` | `false` | પેરલલ પ્રોસેસિંગ સક્રિય કરો | [ડોક્સ વાંચો →](https://lingo.dev/en/ci/github) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -પરંપરાગત i18n આક્રમક છે. તમે દરેક સ્ટ્રિંગને `t()` ફંક્શન્સમાં રેપ કરો છો, ટ્રાન્સલેશન કી શોધો છો (`home.hero.title.v2`), પેરેલલ JSON ફાઇલો મેન્ટેઇન કરો છો, અને તમારા કમ્પોનન્ટ્સને લોકલાઇઝેશન બોઇલરપ્લેટથી ફૂલતા જુઓ છો. તે એટલું કંટાળાજનક છે કે ટીમો આંતરરાષ્ટ્રીયકરણને વિલંબિત કરે છે જ્યાં સુધી તે મોટા રિફેક્ટરમાં ન બદલાય. +પરંપરાગત i18n આક્રમક છે. તમે દરેક સ્ટ્રિંગને `t()` ફંક્શનમાં રાખો છો, અનુવાદ કી શોધો છો (`home.hero.title.v2`), પેરલલ JSON ફાઇલ્સ જાળવો છો, અને તમારી કમ્પોનન્ટ્સને લોકલાઇઝેશન બોઇલરપ્લેટથી મોટું થતું જુઓ છો. આ બધી પ્રક્રિયા એટલી કંટાળાજનક છે કે ટીમો આંતરરાષ્ટ્રીયકરણને એટલું મોડું કરે છે, જેવાં તે આખરે મોટા રિફેક્ટરમાં પરિવર્તિત થાય છે. Lingo.dev કમ્પાઇલર ઔપચારિકતાને દૂર કરે છે. સાદા અંગ્રેજી ટેક્સ્ટ સાથે React કમ્પોનન્ટ્સ લખો. કમ્પાઇલર બિલ્ડ સમયે ભાષાંતર યોગ્ય સ્ટ્રિંગ્સ શોધી કાઢે છે અને આપમેળે સ્થાનિકીકૃત વેરિઅન્ટ્સ જનરેટ કરે છે. કોઈ કી નહીં, કોઈ JSON ફાઇલો નહીં, કોઈ રેપર ફંક્શન્સ નહીં - ફક્ત React કોડ જે બહુવિધ ભાષાઓમાં કામ કરે છે. @@ -431,7 +431,7 @@ export function LanguageSwitcher() { } ``` -**ડેવલપમેન્ટ:** `npm run dev` (સ્યુડોટ્રાન્સલેટરનો ઉપયોગ કરે છે, કોઈ API કોલ્સ નહીં) +**ડેવલપમેન્ટ:** `npm run dev` (પસ્યુડોટ્રાન્સલેટર ઉપયોગ કરે છે, કોઈ API કોલ્સ નથી) **પ્રોડક્શન:** `usePseudotranslator: false` સેટ કરો, પછી `next build` @@ -439,20 +439,20 @@ export function LanguageSwitcher() { **મુખ્ય વિશેષતાઓ:** -- શૂન્ય રનટાઇમ પરફોર્મન્સ કોસ્ટ -- કોઈ ટ્રાન્સલેશન કી અથવા JSON ફાઇલો નહીં -- કોઈ `t()` ફંક્શન્સ અથવા `` રેપર કમ્પોનન્ટ્સ નહીં -- JSX માં ભાષાંતર યોગ્ય ટેક્સ્ટની આપમેળે શોધ +- શૂન્ય રનટાઇમ પરફોર્મન્સ ખર્ચ +- કોઈ અનુવાદ કી અથવા JSON ફાઇલ્સ નહીં +- `t()` ફંક્શન્સ અથવા `` રેપર કમ્પોનન્ટ્સ નહીં +- JSX માં અનુવાદ યોગ્ય ટેક્સ્ટને આપમેળે શોધે છે - TypeScript સપોર્ટ - બહુવચન માટે ICU MessageFormat -- `data-lingo-override` એટ્રિબ્યુટ દ્વારા મેન્યુઅલ ઓવરરાઇડ્સ +- `data-lingo-override` એટ્રિબ્યૂટ દ્વારા મેન્યુઅલ ઓવરરાઇડ - બિલ્ટ-ઇન ટ્રાન્સલેશન એડિટર વિજેટ **બિલ્ડ મોડ્સ:** -- `pseudotranslator`: પ્લેસહોલ્ડર ટ્રાન્સલેશન્સ સાથે ડેવલપમેન્ટ મોડ (કોઈ API કોસ્ટ નહીં) -- `real`: LLMs નો ઉપયોગ કરીને વાસ્તવિક ટ્રાન્સલેશન્સ જનરેટ કરો -- `cache-only`: CI માંથી પ્રી-જનરેટેડ ટ્રાન્સલેશન્સનો ઉપયોગ કરીને પ્રોડક્શન મોડ (કોઈ API કોલ્સ નહીં) +- `pseudotranslator`: પ્લેસહોલ્ડર અનુવાદો સાથે વિકાસ મોડ (કોઈ API ખર્ચો નથી) +- `real`: LLMs વડે અસલ અનુવાદો જનરેટ કરો +- `cache-only`: CI પરથી પૂર્વ-જનરેટેડ અનુવાદો વડે પ્રોડક્શન મોડ (કોઈ API કોલ્સ નહીં) **સપોર્ટેડ ફ્રેમવર્ક્સ:** @@ -469,12 +469,12 @@ 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 માટે changeset જરૂરી છે: `pnpm new` (અથવા નોન-રિલીઝ ફેરફારો માટે `pnpm new:empty`) - - સબમિટ કરતા પહેલાં ખાતરી કરો કે ટેસ્ટ્સ પાસ થાય છે + - દરેક PR માટે changeset જરૂરી છે: `pnpm new` (અથવા `pnpm new:empty` non-release બદલવા માટે) + - સબમિટ કરતા પહેલાં ખાતરી કરો કે બધા ટેસ્ટ પાસ થાય છે 3. **ડેવલપમેન્ટ:** આ pnpm + turborepo monorepo છે - - ડિપેન્ડન્સીઝ ઇન્સ્ટોલ કરો: `pnpm install` + - dependencies ઇન્સ્ટોલ કરો: `pnpm install` - ટેસ્ટ્સ ચલાવો: `pnpm test` - બિલ્ડ: `pnpm build` @@ -498,12 +498,12 @@ 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. પુલ રિક્વેસ્ટ સબમિટ કરો +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 (lowercase): `en`, `zh`, `bho` -- `Script`: ISO 15924 (title case): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (uppercase): `US`, `CN`, `IN` +- `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/he.md b/readme/he.md index 36fcc6cd9..a99d16e8a 100644 --- a/readme/he.md +++ b/readme/he.md @@ -256,7 +256,7 @@ env: | `pull-request` | `false` | יצירת PR במקום commit ישיר | | `commit-message` | `"feat: update translations via @LingoDotDev"` | הודעת commit מותאמת אישית | | `pull-request-title` | `"feat: update translations via @LingoDotDev"` | כותרת PR מותאמת אישית | -| `working-directory` | `"."` | תיקייה להרצה | +| `working-directory` | `"."` | תיקיה להרצה | | `parallel` | `false` | הפעלת עיבוד מקבילי | [קרא את התיעוד ←](https://lingo.dev/en/ci/github) @@ -333,7 +333,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -i18n מסורתי הוא פולשני. אתה עוטף כל מחרוזת בפונקציות `t()`, ממציא מפתחות תרגום (`home.hero.title.v2`), מתחזק קבצי JSON מקבילים, וצופה בקומפוננטות שלך מתנפחות עם boilerplate של לוקליזציה. זה כל כך מייגע שצוותים מדחים בינאום עד שזה הופך ל-refactor מסיבי. +i18n מסורתי הוא פולשני. עוטפים כל מחרוזת בפונקציות `t()`, ממציאים מפתחות תרגום (`home.hero.title.v2`), מתחזקים קבצי JSON מקבילים, וצופים בקומפוננטות מתנפחות עם קוד תשתית לוקליזציה. זה כל כך מתיש שצוותים דוחים בינאום עד שזה הופך ל-refactor מסיבי. Lingo.dev Compiler מבטל את הטקסיות. כתוב קומפוננטות React עם טקסט באנגלית פשוטה. הקומפיילר מזהה מחרוזות הניתנות לתרגום בזמן build ומייצר גרסאות מתורגמות באופן אוטומטי. ללא מפתחות, ללא קבצי JSON, ללא פונקציות עטיפה - רק קוד React שפשוט עובד במספר שפות. @@ -431,26 +431,26 @@ export function LanguageSwitcher() { **פיתוח:** `npm run dev` (משתמש ב-pseudotranslator, ללא קריאות API) -**ייצור:** הגדר `usePseudotranslator: false`, ואז `next build` +**פרודקשן:** יש להגדיר `usePseudotranslator: false`, ואז `next build` -בצע commit לתיקיית `.lingo/` לבקרת גרסאות. +בצעו commit לתיקיית `.lingo/` אל בקרת הגרסאות. **תכונות עיקריות:** -- ללא עלות ביצועים בזמן ריצה -- ללא מפתחות תרגום או קבצי JSON -- ללא פונקציות `t()` או קומפוננטות עטיפה `` -- זיהוי אוטומטי של טקסט הניתן לתרגום ב-JSX +- אין השפעה על ביצועים בזמן ריצה +- אין מפתחות תרגום או קבצי JSON +- אין פונקציות `t()` או קומפוננטות עטיפה `` +- זיהוי אוטומטי של טקסטים שניתנים לתרגום ב-JSX - תמיכה ב-TypeScript - ICU MessageFormat לריבוי -- עקיפות ידניות באמצעות תכונת `data-lingo-override` -- widget מובנה לעורך תרגומים +- עקיפה ידנית דרך המאפיין `data-lingo-override` +- עורך תרגומים מובנה **מצבי build:** -- `pseudotranslator`: מצב פיתוח עם תרגומי placeholder (ללא עלויות API) +- `pseudotranslator`: מצב פיתוח עם תרגומי placeholder (ללא עלות API) - `real`: יצירת תרגומים אמיתיים באמצעות LLMs -- `cache-only`: מצב ייצור המשתמש בתרגומים שנוצרו מראש מ-CI (ללא קריאות API) +- `cache-only`: מצב פרודקשן עם תרגומים שהוזנו מראש מ-CI (ללא קריאות API) **פריימוורקים נתמכים:** @@ -467,11 +467,11 @@ 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` (או `pnpm new:empty` עבור שינויים שאינם לשחרור) - - יש לוודא שהבדיקות עוברות לפני השליחה -3. **פיתוח:** זהו monorepo של pnpm + turborepo +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` @@ -496,7 +496,7 @@ 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) +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]` diff --git a/readme/hi.md b/readme/hi.md index 2f204048e..b17333ef6 100644 --- a/readme/hi.md +++ b/readme/hi.md @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -पारंपरिक i18n इनवेसिव है। आप हर स्ट्रिंग को `t()` फंक्शन में रैप करते हैं, ट्रांसलेशन कुंजियां बनाते हैं (`home.hero.title.v2`), पैरेलल JSON फ़ाइलें मेंटेन करते हैं, और अपने कंपोनेंट को लोकलाइज़ेशन बॉयलरप्लेट से भरा हुआ देखते हैं। यह इतना थकाऊ है कि टीमें इंटरनेशनलाइज़ेशन को तब तक टालती हैं जब तक यह एक बड़ा रिफ़ैक्टर नहीं बन जाता। +पारंपरिक i18n दखल देने वाला है। आप हर स्ट्रिंग को `t()` फंक्शन में लपेटते हैं, ट्रांसलेशन कीज (`home.hero.title.v2`) बनाते हैं, समानांतर JSON फाइलें मेंटेन करते हैं, और अपने कंपोनेंट्स को स्थानीयकरण के boilerplate से भरा पाते हैं। यह इतना थकाऊ है कि टीमें अंतरराष्ट्रीयकरण को तब तक टालती हैं जब तक कि यह एक विशाल पुनर्रचना का कारण न बन जाए। Lingo.dev Compiler औपचारिकता को समाप्त करता है। सादे अंग्रेजी टेक्स्ट के साथ React components लिखें। Compiler बिल्ड टाइम पर अनुवाद योग्य स्ट्रिंग्स का पता लगाता है और स्वचालित रूप से स्थानीयकृत वेरिएंट जेनरेट करता है। कोई keys नहीं, कोई JSON फ़ाइलें नहीं, कोई wrapper functions नहीं - बस React कोड जो कई भाषाओं में काम करता है। @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**Development:** `npm run dev` (pseudotranslator का उपयोग करता है, कोई API कॉल नहीं) +**डेवलपमेंट:** `npm run dev` (pseudotranslator का उपयोग करता है, कोई API कॉल नहीं) -**Production:** `usePseudotranslator: false` सेट करें, फिर `next build` +**प्रोडक्शन:** `usePseudotranslator: false` सेट करें, फिर `next build` -`.lingo/` डायरेक्टरी को version control में commit करें। +`.lingo/` डायरेक्टरी को version control में कमिट करें। **मुख्य विशेषताएं:** -- शून्य runtime performance cost -- कोई translation keys या JSON फ़ाइलें नहीं -- कोई `t()` functions या `` wrapper components नहीं -- JSX में अनुवाद योग्य टेक्स्ट का स्वचालित पता लगाना -- TypeScript समर्थन -- बहुवचन के लिए ICU MessageFormat -- `data-lingo-override` attribute के माध्यम से मैनुअल overrides -- बिल्ट-इन translation editor widget +- शून्य रनटाइम प्रदर्शन लागत +- कोई ट्रांसलेशन कीज़ या JSON फाइलें नहीं +- कोई `t()` फंक्शन या `` wrapper कंपोनेंट्स नहीं +- JSX में ट्रांसलेटेबल टेक्स्ट का स्वचालित पता लगाना +- TypeScript का समर्थन +- बहुवचन हेतु ICU MessageFormat +- `data-lingo-override` एट्रीब्यूट के माध्यम से मैनुअल overrides +- इनबिल्ट ट्रांसलेशन एडिटर विजेट **बिल्ड मोड:** -- `pseudotranslator`: प्लेसहोल्डर अनुवादों के साथ development मोड (कोई API लागत नहीं) -- `real`: LLMs का उपयोग करके वास्तविक अनुवाद जेनरेट करें -- `cache-only`: CI से पूर्व-जेनरेट किए गए अनुवादों का उपयोग करके production मोड (कोई API कॉल नहीं) +- `pseudotranslator`: प्लेसहोल्डर अनुवादों के साथ डेवलपमेंट मोड (कोई API लागत नहीं) +- `real`: LLMs का उपयोग करके वास्तविक अनुवाद उत्पन्न करें +- `cache-only`: CI से पूर्व-निर्मित अनुवादों के साथ प्रोडक्शन मोड (कोई API कॉल नहीं) **समर्थित frameworks:** @@ -469,12 +469,12 @@ 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` नॉन-रिलीज़ परिवर्तनों के लिए) - - सबमिट करने से पहले सुनिश्चित करें कि टेस्ट पास हो जाएं + - हर PR के लिए चेंजसेट अनिवार्य: `pnpm new` (या गैर-रिलीज संशोधन के लिए `pnpm new:empty`) + - सबमिट करने से पहले जांचें कि सभी टेस्ट पास हों 3. **डेवलपमेंट:** यह एक pnpm + turborepo मोनोरेपो है - - डिपेंडेंसीज़ इंस्टॉल करें: `pnpm install` + - डिपेंडेंसी इंस्टॉल करें: `pnpm install` - टेस्ट चलाएं: `pnpm test` - बिल्ड करें: `pnpm build` diff --git a/readme/it.md b/readme/it.md index e0474bf0c..67d51c488 100644 --- a/readme/it.md +++ b/readme/it.md @@ -74,7 +74,7 @@ | Tool | Caso d'uso | Comando rapido | | ---------------------------------- | ------------------------------------------------------ | ---------------------------------- | | [**MCP**](#lingodev-mcp) | Setup i18n assistito da AI per app React | Prompt: `Set up i18n` | -| [**CLI**](#lingodev-cli) | Traduzione di file JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**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()` | @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is L'assistente: -1. Configurerà il routing basato su locale (es. `/en`, `/es`, `/pt-BR`) -2. Configurerà i componenti per il cambio lingua -3. Implementerà il rilevamento automatico del locale -4. Genererà i file di configurazione necessari +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 **Nota:** la generazione di codice assistita da AI è non deterministica. Rivedi il codice generato prima di committare. @@ -146,7 +146,7 @@ npx lingo.dev@latest run **Configurazione:** -Il comando `init` genera un file `i18n.json`. Configura le locale e i bucket: +Il comando `init` genera un file `i18n.json`. Configura localizzazioni e bucket: ```json { @@ -164,7 +164,7 @@ Il comando `init` genera un file `i18n.json`. Configura le locale e i bucket: } ``` -Il campo `provider` è facoltativo (predefinito: Lingo.dev Engine). Per provider LLM personalizzati: +Il campo `provider` è opzionale (predefinito Lingo.dev Engine). Per provider LLM personalizzati: ```json { @@ -226,8 +226,8 @@ jobs: **Requisiti di setup:** -1. Aggiungi `LINGODOTDEV_API_KEY` ai secret del repository (Settings > Secrets and variables > Actions) -2. Per i workflow PR: Abilita "Allow GitHub Actions to create and approve pull requests" in Settings > Actions > General +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:** @@ -258,7 +258,7 @@ env: | `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 in cui eseguire | +| `working-directory` | `"."` | Directory su cui operare | | `parallel` | `false` | Abilita elaborazione parallela | [Leggi la documentazione →](https://lingo.dev/en/ci/github) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -L'i18n tradizionale è invasivo. Avvolgi ogni stringa in funzioni `t()`, inventi chiavi di traduzione (`home.hero.title.v2`), mantieni file JSON paralleli e guardi i tuoi componenti gonfiarsi con boilerplate di localizzazione. È così tedioso che i team ritardano l'internazionalizzazione finché non diventa un refactoring massiccio. +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. 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. @@ -431,9 +431,9 @@ export function LanguageSwitcher() { } ``` -**Sviluppo:** `npm run dev` (utilizza pseudotranslator, nessuna chiamata API) +**Sviluppo:** `npm run dev` (usa pseudotranslator, nessuna chiamata API) -**Produzione:** Imposta `usePseudotranslator: false`, quindi `next build` +**Produzione:** Imposta `usePseudotranslator: false`, poi `next build` Committa la directory `.lingo/` nel version control. @@ -446,13 +446,13 @@ Committa la directory `.lingo/` nel version control. - Supporto TypeScript - ICU MessageFormat per i plurali - Override manuali tramite attributo `data-lingo-override` -- Widget editor di traduzione integrato +- 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 da CI (nessuna chiamata API) +- `cache-only`: Modalità produzione utilizzando traduzioni pre-generate dalla CI (nessuna chiamata API) **Framework supportati:** @@ -471,7 +471,7 @@ I contributi sono benvenuti. Si prega di seguire 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 che non richiedono rilascio) + - Ogni PR richiede un changeset: `pnpm new` (o `pnpm new:empty` per modifiche non di release) - Assicurati che i test passino prima di inviare 3. **Sviluppo:** Questo è un monorepo pnpm + turborepo - Installa le dipendenze: `pnpm install` diff --git a/readme/ja.md b/readme/ja.md index 4e6e3a9bf..93b34b015 100644 --- a/readme/ja.md +++ b/readme/ja.md @@ -111,7 +111,7 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is アシスタントは以下を実行します: -1. ロケールベースのルーティングを設定(例: `/en`、`/es`、`/pt-BR`) +1. ロケールベースのルーティングを設定(例: `/en`、`/es`、`/pt-BR`) 2. 言語切り替えコンポーネントをセットアップ 3. 自動ロケール検出を実装 4. 必要な設定ファイルを生成 @@ -143,7 +143,7 @@ npx lingo.dev@latest run 1. 設定されたファイルから翻訳可能なコンテンツを抽出 2. LLMプロバイダーにコンテンツを送信して翻訳 3. 翻訳されたコンテンツをファイルシステムに書き戻し -4. `i18n.lock`ファイルを作成して完了した翻訳を追跡(冗長な処理を回避) +4. 翻訳の完了を追跡するための`i18n.lock`ファイルを作成(冗長な処理を回避) **設定:** @@ -165,7 +165,7 @@ npx lingo.dev@latest run } ``` -`provider`フィールドはオプションです(デフォルトはLingo.dev Engine)。カスタムLLMプロバイダーの場合: +`provider`フィールドはオプションです(デフォルトはLingo.dev Engine)。カスタムLLMプロバイダーの場合: ```json { @@ -227,7 +227,7 @@ jobs: **セットアップ要件:** -1. リポジトリシークレットに`LINGODOTDEV_API_KEY`を追加(Settings > Secrets and variables > Actions) +1. リポジトリのシークレット(Settings > Secrets and variables > Actions)に`LINGODOTDEV_API_KEY`を追加 2. PRワークフローの場合: Settings > Actions > Generalで「Allow GitHub Actions to create and approve pull requests」を有効化 **ワークフローオプション:** @@ -259,7 +259,7 @@ env: | `pull-request` | `false` | 直接コミットではなくPRを作成 | | `commit-message` | `"feat: update translations via @LingoDotDev"` | カスタムコミットメッセージ | | `pull-request-title` | `"feat: update translations via @LingoDotDev"` | カスタムPRタイトル | -| `working-directory` | `"."` | 実行するディレクトリ | +| `working-directory` | `"."` | 実行ディレクトリ | | `parallel` | `false` | 並列処理を有効化 | [ドキュメントを読む →](https://lingo.dev/en/ci/github) @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -従来のi18nは侵襲的です。すべての文字列を`t()`関数でラップし、翻訳キー(`home.hero.title.v2`)を考案し、並列JSONファイルを維持し、コンポーネントがローカライゼーションの定型コードで肥大化するのを見守ります。あまりにも面倒なため、チームは国際化を遅らせ、最終的に大規模なリファクタリングになってしまいます。 +従来のi18nは侵襲的です。すべての文字列を`t()`関数でラップし、翻訳キー(`home.hero.title.v2`)を作って、並列JSONファイルを管理し、ローカリゼーション用の定型コードでコンポーネントが肥大化していくのを見守ることになります。あまりにも面倒なので、チームは国際化を後回しにし、その結果大規模なリファクタリングになりがちです。 Lingo.devコンパイラーは煩雑な作業を排除します。プレーンな英語テキストでReactコンポーネントを記述できます。コンパイラーはビルド時に翻訳可能な文字列を検出し、ローカライズされたバリアントを自動的に生成します。キー、JSONファイル、ラッパー関数は不要です。複数の言語で動作するReactコードを記述するだけです。 @@ -432,28 +432,28 @@ export function LanguageSwitcher() { } ``` -**開発:** `npm run dev`(疑似翻訳を使用、API呼び出しなし) +**開発環境:** `npm run dev`(疑似翻訳を使用、APIコール不要) -**本番:** `usePseudotranslator: false`を設定し、`next build`を実行 +**本番環境:** `usePseudotranslator: false`を設定後、`next build`を実行 -`.lingo/`ディレクトリをバージョン管理にコミットします。 +`.lingo/`ディレクトリをバージョン管理にコミットしてください。 **主な機能:** -- ランタイムパフォーマンスコストゼロ +- 実行時パフォーマンスコストゼロ - 翻訳キーやJSONファイル不要 - `t()`関数や``ラッパーコンポーネント不要 -- JSX内の翻訳可能なテキストの自動検出 -- TypeScriptサポート +- JSX内の翻訳可能テキストを自動検出 +- TypeScript対応 - 複数形のためのICU MessageFormat -- `data-lingo-override`属性による手動オーバーライド -- 組み込み翻訳エディターウィジェット +- `data-lingo-override`属性によるマニュアルオーバーライド +- 組み込みの翻訳エディタウィジェット **ビルドモード:** -- `pseudotranslator`: プレースホルダー翻訳を使用する開発モード(APIコストなし) -- `real`: LLMを使用して実際の翻訳を生成 -- `cache-only`: CIから事前生成された翻訳を使用する本番モード(API呼び出しなし) +- `pseudotranslator`: プレースホルダー翻訳での開発モード(APIコストなし) +- `real`: LLMを使って実際の翻訳を生成 +- `cache-only`: CIで事前生成した翻訳を使う本番モード(APIコールなし) **対応フレームワーク:** @@ -470,13 +470,13 @@ export function LanguageSwitcher() { コントリビューションを歓迎します。以下のガイドラインに従ってください。 -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` +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) @@ -499,12 +499,12 @@ Lingo.devが役に立つと思ったら、スターを付けて10,000スター **新しい言語の追加:** -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)に追加してください (`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` +- `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/ko.md b/readme/ko.md index 16345c99c..b8d0bbd68 100644 --- a/readme/ko.md +++ b/readme/ko.md @@ -69,13 +69,13 @@ ## 빠른 시작 -| 도구 | 사용 사례 | 빠른 명령어 | -| ---------------------------------- | ------------------------------------------- | ---------------------------------- | -| [**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()` 플러그인 | +| 도구 | 사용 사례 | 빠른 명령어 | +| ---------------------------------- | ----------------------------------------- | ---------------------------------- | +| [**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()` 플러그인 | --- @@ -139,8 +139,8 @@ npx lingo.dev@latest run 1. 구성된 파일에서 번역 가능한 콘텐츠 추출 2. 번역을 위해 LLM 제공자에게 콘텐츠 전송 -3. 번역된 콘텐츠를 파일 시스템에 다시 작성 -4. 완료된 번역을 추적하기 위해 `i18n.lock` 파일 생성 (중복 처리 방지) +3. 번역된 콘텐츠를 파일 시스템에 기록 +4. 완료된 번역 추적용 `i18n.lock` 파일 생성 (중복 처리 방지) **구성:** @@ -162,7 +162,7 @@ npx lingo.dev@latest run } ``` -`provider` 필드는 선택 사항입니다 (기본값은 Lingo.dev Engine). 사용자 정의 LLM 제공자의 경우: +`provider` 필드는 선택 사항입니다(기본값은 Lingo.dev Engine). 커스텀 LLM 제공자 사용 시: ```json { @@ -224,7 +224,7 @@ jobs: **설정 요구사항:** -1. 리포지토리 시크릿에 `LINGODOTDEV_API_KEY` 추가 (Settings > Secrets and variables > Actions) +1. `LINGODOTDEV_API_KEY`을(를) 저장소 시크릿(Settings > Secrets and variables > Actions)에 추가하세요 2. PR 워크플로우의 경우: Settings > Actions > General에서 "Allow GitHub Actions to create and approve pull requests" 활성화 **워크플로우 옵션:** @@ -250,14 +250,14 @@ env: **사용 가능한 입력:** -| 입력 | 기본값 | 설명 | -| -------------------- | ---------------------------------------------- | ----------------------- | -| `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` | 병렬 처리 활성화 | +| 입력 | 기본값 | 설명 | +| -------------------- | ---------------------------------------------- | ---------------------- | +| `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) @@ -333,7 +333,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -기존 i18n은 침습적입니다. 모든 문자열을 `t()` 함수로 래핑하고, 번역 키를 만들고(`home.hero.title.v2`), 병렬 JSON 파일을 유지 관리하며, 현지화 보일러플레이트로 컴포넌트가 비대해지는 것을 지켜봐야 합니다. 너무 지루해서 팀들은 국제화를 대규모 리팩토링이 될 때까지 미루게 됩니다. +기존 i18n은 침습적입니다. 모든 문자열을 `t()` 함수로 래핑하고, 번역 키(`home.hero.title.v2`)를 만들어야 하며, 병렬 JSON 파일을 관리하면서 현지화 보일러플레이트로 인해 컴포넌트가 비대해지는 것을 목격해야 합니다. 이 과정이 너무 번거로워서 팀들이 국제화를 대규모 리팩터링이 될 때까지 미루게 됩니다. Lingo.dev Compiler는 복잡한 절차를 제거합니다. 일반 영어 텍스트로 React 컴포넌트를 작성하세요. 컴파일러는 빌드 시점에 번역 가능한 문자열을 감지하고 자동으로 현지화된 변형을 생성합니다. 키도, JSON 파일도, 래퍼 함수도 필요 없습니다 - 그저 여러 언어로 작동하는 React 코드일 뿐입니다. @@ -433,24 +433,24 @@ export function LanguageSwitcher() { **프로덕션:** `usePseudotranslator: false`를 설정한 후 `next build` 실행 -`.lingo/` 디렉토리를 버전 관리에 커밋하세요. +`.lingo/` 디렉터리를 버전 관리에 커밋하세요. **주요 기능:** -- 런타임 성능 비용 제로 +- 런타임 성능 비용 없음 - 번역 키 또는 JSON 파일 불필요 - `t()` 함수 또는 `` 래퍼 컴포넌트 불필요 -- JSX 내 번역 가능한 텍스트 자동 감지 +- JSX에서 번역 가능한 텍스트 자동 감지 - TypeScript 지원 - 복수형을 위한 ICU MessageFormat -- `data-lingo-override` 속성을 통한 수동 재정의 +- `data-lingo-override` 속성을 통한 수동 오버라이드 - 내장 번역 편집기 위젯 **빌드 모드:** -- `pseudotranslator`: 플레이스홀더 번역을 사용하는 개발 모드 (API 비용 없음) -- `real`: LLM을 사용하여 실제 번역 생성 -- `cache-only`: CI에서 사전 생성된 번역을 사용하는 프로덕션 모드 (API 호출 없음) +- `pseudotranslator`: 플레이스홀더 번역이 적용되는 개발 모드 (API 비용 없음) +- `real`: LLM을 이용한 실제 번역 생성 +- `cache-only`: CI에서 미리 생성된 번역을 활용하는 프로덕션 모드 (API 호출 없음) **지원 프레임워크:** @@ -467,10 +467,10 @@ 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에는 changeset이 필요합니다: `pnpm new` (또는 릴리스하지 않는 변경 사항의 경우 `pnpm new:empty`) - - 제출 전에 테스트가 통과하는지 확인하세요 + - 모든 PR에는 changeset이 필요합니다: `pnpm new` (릴리스가 아닌 변경의 경우 `pnpm new:empty`) + - 제출 전 테스트 통과 여부 확인 3. **개발:** pnpm + turborepo 모노레포입니다 - 의존성 설치: `pnpm install` - 테스트 실행: `pnpm test` diff --git a/readme/mr-IN.md b/readme/mr-IN.md index 6cb064bfb..6ca0c4510 100644 --- a/readme/mr-IN.md +++ b/readme/mr-IN.md @@ -137,10 +137,10 @@ npx lingo.dev@latest run **हे कसे कार्य करते:** -1. कॉन्फिगर केलेल्या फाइल्समधून अनुवाद करण्यायोग्य कंटेंट एक्स्ट्रॅक्ट करते -2. अनुवादासाठी LLM प्रोव्हायडरला कंटेंट पाठवते +1. कॉन्फिगर केलेल्या फाइल्समधून भाषांतरणयोग्य कंटेंट एक्स्ट्रॅक्ट करते +2. Anuvadasathi content LLM provider कडे पाठवते 3. अनुवादित कंटेंट फाइलसिस्टममध्ये परत लिहिते -4. पूर्ण झालेल्या अनुवादांचा मागोवा ठेवण्यासाठी `i18n.lock` फाइल तयार करते (अनावश्यक प्रोसेसिंग टाळते) +4. पूर्ण झालेल्या अनुवादाचा मागोवा ठेवण्यासाठी `i18n.lock` फाइल तयार करते (अनावश्यक प्रोसेसिंग टाळते) **कॉन्फिगरेशन:** @@ -225,7 +225,7 @@ jobs: **सेटअप आवश्यकता:** 1. रिपॉझिटरी सीक्रेट्समध्ये `LINGODOTDEV_API_KEY` जोडा (Settings > Secrets and variables > Actions) -2. PR वर्कफ्लोसाठी: Settings > Actions > General मध्ये "Allow GitHub Actions to create and approve pull requests" सक्षम करा +2. PR workflows साठी: Settings > Actions > General मध्ये "Allow GitHub Actions to create and approve pull requests" सक्षम करा **वर्कफ्लो पर्याय:** @@ -333,7 +333,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -पारंपारिक i18n आक्रमक आहे. तुम्ही प्रत्येक स्ट्रिंग `t()` फंक्शन्समध्ये रॅप करता, ट्रान्सलेशन की शोधता (`home.hero.title.v2`), पॅरलल JSON फाइल्स मेंटेन करता आणि तुमचे कंपोनेंट्स लोकलायझेशन बॉयलरप्लेटने फुगलेले पाहता. हे इतके कंटाळवाणे आहे की टीम्स इंटरनॅशनलायझेशन पुढे ढकलतात जोपर्यंत ते मोठे रिफॅक्टर बनत नाही. +पारंपारिक i18n आक्रमक आहे. तुम्ही प्रत्येक स्ट्रिंगला `t()` फंक्शन्समध्ये गुंडाळता, ट्रान्सलेशन की शोधता (`home.hero.title.v2`), समांतर JSON फाइल्स मेंटेन करता आणि लोकलायझेशन बोईलरप्लेटमुळे तुमचे कंपोनेंट्स फुगलेले बघता. हे इतके कंटाळवाणे आहे की टीम्स इंटरनॅशनलायझेशन पुढे ढकलतात तोपर्यंत की तो एक मोठा रिफॅक्टर होतो. Lingo.dev Compiler औपचारिकता काढून टाकतो. साध्या इंग्रजी मजकुरासह React कॉम्पोनेंट्स लिहा. कंपायलर बिल्ड टाइमवर भाषांतर करण्यायोग्य स्ट्रिंग्स शोधतो आणि आपोआप स्थानिकीकृत व्हेरिएंट्स जनरेट करतो. की नाहीत, JSON फाइल्स नाहीत, रॅपर फंक्शन्स नाहीत - फक्त React कोड जो अनेक भाषांमध्ये काम करतो. @@ -438,19 +438,19 @@ export function LanguageSwitcher() { **मुख्य वैशिष्ट्ये:** - रनटाइम परफॉर्मन्स कॉस्ट शून्य -- भाषांतर की किंवा JSON फाइल्स नाहीत -- `t()` फंक्शन्स किंवा `` रॅपर कॉम्पोनेंट्स नाहीत -- JSX मध्ये भाषांतर करण्यायोग्य मजकुराचे स्वयंचलित शोध -- TypeScript सपोर्ट +- ट्रान्सलेशन की किंवा JSON फाइल्स नाहीत +- `t()` फंक्शन्स किंवा `` रॅपर कंपोनेंट्स नाहीत +- JSX मध्ये भाषांतर करण्याजोग्या मजकुराचा स्वयंचलित शोध +- TypeScript समर्थन - अनेकवचनासाठी ICU MessageFormat -- `data-lingo-override` अॅट्रिब्यूटद्वारे मॅन्युअल ओव्हरराइड्स -- बिल्ट-इन भाषांतर एडिटर विजेट +- `data-lingo-override` अॅट्रिब्यूटने मॅन्युअल ओव्हरराइड्स +- अंगभूत ट्रान्सलेशन एडिटर विजेट **बिल्ड मोड्स:** - `pseudotranslator`: प्लेसहोल्डर भाषांतरांसह डेव्हलपमेंट मोड (API खर्च नाही) -- `real`: LLM वापरून वास्तविक भाषांतरे जनरेट करा -- `cache-only`: CI मधून पूर्व-जनरेट केलेली भाषांतरे वापरून प्रोडक्शन मोड (API कॉल्स नाहीत) +- `real`: LLM वापरून प्रत्यक्ष भाषांतरे जनरेट करा +- `cache-only`: CI मधून पूर्व-जनरेट केलेल्या भाषांतरे वापरून प्रोडक्शन मोड (API कॉल्स नाहीत) **सपोर्ट केलेली फ्रेमवर्क्स:** @@ -467,13 +467,13 @@ 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`) - - सबमिट करण्यापूर्वी टेस्ट पास होतात याची खात्री करा + - प्रत्येक PR साठी एक चेंजसेट आवश्यक आहे: `pnpm new` (किंवा नॉन-रिलीज बदलांसाठी `pnpm new:empty`) + - सबमिट करण्यापूर्वी चाचण्या पास होतात याची खात्री करा 3. **डेव्हलपमेंट:** हे pnpm + turborepo मोनोरेपो आहे - डिपेंडन्सी इन्स्टॉल करा: `pnpm install` - - टेस्ट चालवा: `pnpm test` + - चाचण्या चालवा: `pnpm test` - बिल्ड: `pnpm build` **सपोर्ट:** [Discord कम्युनिटी](https://lingo.dev/go/discord) diff --git a/readme/or-IN.md b/readme/or-IN.md index 92fe3988e..04e69c4a6 100644 --- a/readme/or-IN.md +++ b/readme/or-IN.md @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ଆସିଷ୍ଟାଣ୍ଟ କରିବ: -1. Locale-based routing କନଫିଗର୍ କରିବ (ଯଥା, `/en`, `/es`, `/pt-BR`) -2. Language switching components ସେଟଅପ୍ କରିବ -3. Automatic locale detection implement କରିବ -4. ଆବଶ୍ୟକ configuration ଫାଇଲ୍ generate କରିବ +1. Locale-based routing କନଫିଗର୍ କରନ୍ତୁ (ଯଥା, `/en`, `/es`, `/pt-BR`) +2. Language switching components ସେଟଅପ୍ କରନ୍ତୁ +3. Automatic locale detection implement କରନ୍ତୁ +4. ଆବଶ୍ୟକ configuration ଫାଇଲ୍ generate କରନ୍ତୁ **ଧ୍ୟାନ ଦିଅନ୍ତୁ:** AI-assisted କୋଡ୍ generation non-deterministic ଅଟେ। Commit କରିବା ପୂର୍ବରୁ generated କୋଡ୍ review କରନ୍ତୁ। @@ -139,10 +139,10 @@ npx lingo.dev@latest run **ଏହା କିପରି କାମ କରେ:** -1. କନଫିଗର୍ କରାଯାଇଥିବା ଫାଇଲଗୁଡ଼ିକରୁ ଅନୁବାଦଯୋଗ୍ୟ କଣ୍ଟେଣ୍ଟ ବାହାର କରେ -2. ଅନୁବାଦ ପାଇଁ LLM provider କୁ କଣ୍ଟେଣ୍ଟ ପଠାଏ -3. ଅନୁବାଦିତ କଣ୍ଟେଣ୍ଟକୁ filesystem ରେ ଲେଖେ -4. ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଥିବା ଅନୁବାଦଗୁଡ଼ିକୁ ଟ୍ରାକ୍ କରିବା ପାଇଁ `i18n.lock` ଫାଇଲ୍ ସୃଷ୍ଟି କରେ (ଅନାବଶ୍ୟକ ପ୍ରକ୍ରିୟାକରଣରୁ ଦୂରେଇ ରହେ) +1. କନଫିଗର୍ କରାଯାଇଥିବା ଫାଇଲଗୁଡ଼ିକରୁ ଅନୁବାଦଯୋଗ୍ୟ କଣ୍ଟେଣ୍ଟ ବାହାର କରନ୍ତି +2. ଅନୁବାଦ ପାଇଁ LLM provider କୁ କଣ୍ଟେଣ୍ଟ ପଠାନ୍ତି +3. ଅନୁବାଦିତ କଣ୍ଟେଣ୍ଟକୁ filesystem ରେ ଲେଖନ୍ତି +4. ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଥିବା ଅନୁବାଦଗୁଡ଼ିକୁ ଟ୍ରାକ୍ କରିବା ପାଇଁ `i18n.lock` ଫାଇଲ୍ ସୃଷ୍ଟି କରନ୍ତି (ଅନାବଶ୍ୟକ ପ୍ରକ୍ରିୟାକରଣକୁ ଏଡ଼ାଇଥାଏ) **କନଫିଗରେସନ୍:** @@ -164,7 +164,7 @@ npx lingo.dev@latest run } ``` -`provider` ଫିଲ୍ଡ ଇଚ୍ଛାଧୀନ (ଡିଫଲ୍ଟ Lingo.dev Engine)। କଷ୍ଟମ୍ LLM providers ପାଇଁ: +`provider` ଫିଲ୍ଡ ଇଚ୍ଛାଧୀନ (ଡିଫଲ୍ଟ Lingo.dev Engine)। କଷ୍ଟମ୍ LLM provider ପାଇଁ: ```json { @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -ପାରମ୍ପରିକ i18n ଆକ୍ରମଣାତ୍ମକ। ଆପଣ ପ୍ରତ୍ୟେକ string କୁ `t()` function ରେ wrap କରନ୍ତି, ଅନୁବାଦ key ଉଦ୍ଭାବନ କରନ୍ତି (`home.hero.title.v2`), ସମାନ୍ତରାଳ JSON ଫାଇଲ୍ ରକ୍ଷଣାବେକ୍ଷଣ କରନ୍ତି, ଏବଂ ଆପଣଙ୍କ component ଗୁଡ଼ିକୁ localization boilerplate ସହିତ ଫୁଲିବାର ଦେଖନ୍ତି। ଏହା ଏତେ କ୍ଲାନ୍ତିକର ଯେ ଦଳଗୁଡ଼ିକ internationalization କୁ ବିଳମ୍ବ କରନ୍ତି ଯେପର୍ଯ୍ୟନ୍ତ ଏହା ଏକ ବିରାଟ refactor ହୋଇଯାଏ। +ପାରମ୍ପରିକ i18n ଅତ୍ୟନ୍ତ ଆକ୍ରମଣାତ୍ମକ। ଆପଣ ପ୍ରତ୍ୟେକ string କୁ `t()` function ରେ wrap କରନ୍ତି, ଅନୁବାଦ କୀ (`home.hero.title.v2`) ତିଆରି କରନ୍ତି, ସମାନ୍ତରାଳ JSON ଫାଇଲ୍ ସଂରକ୍ଷଣ କରନ୍ତି, ଏବଂ ଆପଣଙ୍କ component ଗୁଡ଼ିକୁ localization boilerplate ଦ୍ୱାରା ପରିପୂର୍ଣ୍ଣ ହେଉଥିବା ଦେଖନ୍ତି। ଏହା ଏତେ ଦ୍ୱୟଙ୍କର ଯେ ଦଳଗୁଡ଼ିକ internationalization ବିଳମ୍ବ କରନ୍ତି ଯେପର୍ଯ୍ୟନ୍ତ ଏହା ବଡ଼ ରିଫ୍ୟାକ୍ଟର୍ ଭଲି ନ ହୋଇ। Lingo.dev Compiler ଆନୁଷ୍ଠାନିକତାକୁ ହଟାଇଥାଏ। ସାଧା ଇଂରାଜୀ ଟେକ୍ସଟ୍ ସହିତ React components ଲେଖନ୍ତୁ। Compiler ବିଲ୍ଡ ସମୟରେ ଅନୁବାଦଯୋଗ୍ୟ strings ଚିହ୍ନଟ କରେ ଏବଂ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୋକାଲାଇଜ୍ଡ variants ସୃଷ୍ଟି କରେ। କୌଣସି keys ନାହିଁ, କୌଣସି JSON ଫାଇଲ୍ ନାହିଁ, କୌଣସି wrapper functions ନାହିଁ - କେବଳ React code ଯାହା ଏକାଧିକ ଭାଷାରେ କାମ କରେ। @@ -431,7 +431,7 @@ export function LanguageSwitcher() { } ``` -**ଡେଭଲପମେଣ୍ଟ:** `npm run dev` (pseudotranslator ବ୍ୟବହାର କରେ, କୌଣସି API calls ନାହିଁ) +**ଡେଭଲପମେଣ୍ଟ:** `npm run dev` (pseudotranslator ବ୍ୟବହାର କରେ, କୌଣସି API call ନାହିଁ) **ପ୍ରଡକ୍ସନ୍:** `usePseudotranslator: false` ସେଟ୍ କରନ୍ତୁ, ତାପରେ `next build` @@ -440,19 +440,19 @@ export function LanguageSwitcher() { **ମୁଖ୍ୟ ବୈଶିଷ୍ଟ୍ୟଗୁଡ଼ିକ:** - ଶୂନ୍ୟ runtime performance cost -- କୌଣସି translation keys କିମ୍ବା JSON ଫାଇଲ୍ ନାହିଁ -- କୌଣସି `t()` functions କିମ୍ବା `` wrapper components ନାହିଁ +- କୌଣସି translation key କିମ୍ବା JSON ଫାଇଲ୍ ନାହିଁ +- କୌଣସି `t()` function କିମ୍ବା `` wrapper component ନାହିଁ - JSX ରେ ଅନୁବାଦଯୋଗ୍ୟ ଟେକ୍ସଟ୍ର ସ୍ୱୟଂଚାଳିତ ଚିହ୍ନଟ - TypeScript ସପୋର୍ଟ -- ବହୁବଚନ ପାଇଁ ICU MessageFormat -- `data-lingo-override` attribute ମାଧ୍ୟମରେ manual overrides -- ବିଲ୍ଟ-ଇନ୍ translation editor widget +- ଗଣନାରେ ସହିତ ICU MessageFormat +- `data-lingo-override` attribute ମାଧ୍ୟମରେ manual override +- ବିଲ୍ଟ-ଇନ୍ ଅନୁବାଦ ସ୍ପଷ୍ଟ ସମ୍ପାଦନ ସାଧନ **ବିଲ୍ଡ modes:** -- `pseudotranslator`: placeholder translations ସହିତ development mode (କୌଣସି API costs ନାହିଁ) -- `real`: LLMs ବ୍ୟବହାର କରି ପ୍ରକୃତ translations ସୃଷ୍ଟି କରେ -- `cache-only`: CI ରୁ pre-generated translations ବ୍ୟବହାର କରି production mode (କୌଣସି API calls ନାହିଁ) +- `pseudotranslator`: placeholder translation ସହିତ development mode (API ଖର୍ଚ୍ଚ ନାହିଁ) +- `real`: LLM ବ୍ୟବହାର କରି ପ୍ରକୃତ ଅନୁବାଦ ଉତ୍ପାଦନ କରନ୍ତୁ +- `cache-only`: CI ରୁ pre-generated translation ସହିତ production mode (API call ନାହିଁ) **ସପୋର୍ଟେଡ୍ frameworks:** @@ -471,12 +471,12 @@ 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`) - - ସବମିଟ୍ କରିବା ପୂର୍ବରୁ ଟେଷ୍ଟ ପାସ୍ ହେବା ନିଶ୍ଚିତ କରନ୍ତୁ -3. **ଡେଭଲପମେଣ୍ଟ:** ଏହା ଏକ pnpm + turborepo monorepo - - ଡିପେଣ୍ଡେନ୍ସି ଇନଷ୍ଟଲ୍ କରନ୍ତୁ: `pnpm install` - - ଟେଷ୍ଟ ଚଲାନ୍ତୁ: `pnpm test` - - ବିଲ୍ଡ: `pnpm build` + - ପ୍ରତ୍ୟେକ 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` **ସପୋର୍ଟ:** [Discord କମ୍ୟୁନିଟି](https://lingo.dev/go/discord) @@ -498,12 +498,12 @@ 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. ଏକ pull request ସବମିଟ୍ କରନ୍ତୁ +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 ଲୋକେଲ୍ ଫର୍ମାଟ:** `language[-Script][-REGION]` +**BCP-47 locale format:** `language[-Script][-REGION]` -- `language`: ISO 639-1/2/3 (lowercase): `en`, `zh`, `bho` +- `language`: ISO 639-1/2/3 (ସମସ୍ତେଉପରି ଛୋଟ): `en`, `zh`, `bho` - `Script`: ISO 15924 (title case): `Hans`, `Hant`, `Latn` -- `REGION`: ISO 3166-1 alpha-2 (uppercase): `US`, `CN`, `IN` +- `REGION`: ISO 3166-1 alpha-2 (ବଡ଼): `US`, `CN`, `IN` - ଉଦାହରଣ: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/pa-IN.md b/readme/pa-IN.md index bd86fe999..f7d646df8 100644 --- a/readme/pa-IN.md +++ b/readme/pa-IN.md @@ -72,8 +72,8 @@ | ਟੂਲ | ਵਰਤੋਂ ਦਾ ਮਾਮਲਾ | ਤੁਰੰਤ ਕਮਾਂਡ | | ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | | [**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` | +| [**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 | @@ -108,10 +108,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is ਸਹਾਇਕ ਇਹ ਕਰੇਗਾ: -1. ਲੋਕੇਲ-ਅਧਾਰਿਤ ਰਾਊਟਿੰਗ ਕੌਂਫਿਗਰ ਕਰੇਗਾ (ਜਿਵੇਂ ਕਿ `/en`, `/es`, `/pt-BR`) -2. ਭਾਸ਼ਾ ਸਵਿੱਚਿੰਗ ਕੰਪੋਨੈਂਟਸ ਸੈੱਟਅੱਪ ਕਰੇਗਾ -3. ਆਟੋਮੈਟਿਕ ਲੋਕੇਲ ਖੋਜ ਲਾਗੂ ਕਰੇਗਾ -4. ਲੋੜੀਂਦੀਆਂ ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ ਤਿਆਰ ਕਰੇਗਾ +1. ਲੋਕੇਲ-ਅਧਾਰਿਤ ਰਾਊਟਿੰਗ ਕੌਂਫਿਗਰ ਕਰੋ (ਉਦਾਹਰਨਵਾਂ ਵਾਂਗ `/en`, `/es`, `/pt-BR`) +2. ਭਾਸ਼ਾ ਸਵਿੱਚਿੰਗ ਕੰਪੋਨੈਂਟਸ ਸੈੱਟਅੱਪ ਕਰੋ +3. ਆਟੋਮੈਟਿਕ ਲੋਕੇਲ ਡਿਟੈਕਸ਼ਨ ਲਾਗੂ ਕਰੋ +4. ਲੋੜੀਂਦੀਆਂ ਕੌਂਫਿਗਰੇਸ਼ਨ ਫਾਈਲਾਂ ਤਿਆਰ ਕਰੋ **ਨੋਟ:** AI-ਸਹਾਇਤਾ ਪ੍ਰਾਪਤ ਕੋਡ ਜਨਰੇਸ਼ਨ ਗੈਰ-ਨਿਰਧਾਰਕ ਹੈ। ਕਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤਿਆਰ ਕੀਤੇ ਕੋਡ ਦੀ ਸਮੀਖਿਆ ਕਰੋ। @@ -137,14 +137,14 @@ npx lingo.dev@latest run **ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:** -1. ਕੌਂਫਿਗਰ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਤੋਂ ਅਨੁਵਾਦਯੋਗ ਸਮੱਗਰੀ ਕੱਢਦਾ ਹੈ -2. ਅਨੁਵਾਦ ਲਈ LLM ਪ੍ਰੋਵਾਈਡਰ ਨੂੰ ਸਮੱਗਰੀ ਭੇਜਦਾ ਹੈ -3. ਅਨੁਵਾਦਿਤ ਸਮੱਗਰੀ ਨੂੰ ਫਾਈਲਸਿਸਟਮ ਵਿੱਚ ਵਾਪਸ ਲਿਖਦਾ ਹੈ -4. ਪੂਰੇ ਹੋਏ ਅਨੁਵਾਦਾਂ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ `i18n.lock` ਫਾਈਲ ਬਣਾਉਂਦਾ ਹੈ (ਬੇਲੋੜੀ ਪ੍ਰੋਸੈਸਿੰਗ ਤੋਂ ਬਚਦਾ ਹੈ) +1. ਕੌਂਫਿਗਰ ਕੀਤੀਆਂ ਫਾਈਲਾਂ ਤੋਂ ਅਨੁਵਾਦਯੋਗ ਸਮੱਗਰੀ ਕੱਢੀ ਜਾਂਦੀ ਹੈ +2. ਅਨੁਵਾਦ ਲਈ ਸਮੱਗਰੀ LLM ਪ੍ਰੋਵਾਈਡਰ ਨੂੰ ਭੇਜੀ ਜਾਂਦੀ ਹੈ +3. ਅਨੁਵਾਦ ਹੋਈ ਸਮੱਗਰੀ ਫਾਇਲ ਸਿਸਟਮ ਵਿੱਚ ਵਾਪਸ ਲਿਖੀ ਜਾਂਦੀ ਹੈ +4. `i18n.lock` ਫਾਈਲ ਪੂਰੇ ਹੋਏ ਅਨੁਵਾਦਾਂ ਨੂੰ ਟ੍ਰੈਕ ਕਰਨ ਲਈ ਬਣਾਈ ਜਾਂਦੀ ਹੈ (ਬੇਲੋੜੀ ਪ੍ਰੋਸੈਸਿੰਗ ਤੋਂ ਬਚਾਵ) **ਕੌਂਫਿਗਰੇਸ਼ਨ:** -`init` ਕਮਾਂਡ ਇੱਕ `i18n.json` ਫਾਈਲ ਬਣਾਉਂਦੀ ਹੈ। ਲੋਕੇਲਾਂ ਅਤੇ ਬਕੇਟਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ: +`init` ਕਮਾਂਡ ਇੱਕ `i18n.json` ਫਾਈਲ ਤਿਆਰ ਕਰਦੀ ਹੈ। ਲੋਕੇਲਜ਼ ਅਤੇ ਬਕੇਟਸ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ: ```json { @@ -162,7 +162,7 @@ npx lingo.dev@latest run } ``` -`provider` ਫੀਲਡ ਵਿਕਲਪਿਕ ਹੈ (ਡਿਫਾਲਟ Lingo.dev Engine ਹੈ)। ਕਸਟਮ LLM ਪ੍ਰੋਵਾਈਡਰਾਂ ਲਈ: +`provider` ਫੀਲਡ ਵਿਕਲਪਿਕ ਹੈ (ਡਿਫ਼ਾਲਟ Lingo.dev Engine)। ਕਸਟਮ LLM ਪ੍ਰੋਵਾਈਡਰ ਲਈ: ```json { @@ -224,8 +224,8 @@ jobs: **ਸੈੱਟਅੱਪ ਲੋੜਾਂ:** -1. ਰਿਪੋਜ਼ਿਟਰੀ ਸੀਕਰੇਟਸ ਵਿੱਚ `LINGODOTDEV_API_KEY` ਸ਼ਾਮਲ ਕਰੋ (Settings > Secrets and variables > Actions) -2. PR ਵਰਕਫਲੋਜ਼ ਲਈ: Settings > Actions > General ਵਿੱਚ "Allow GitHub Actions to create and approve pull requests" ਨੂੰ ਸਮਰੱਥ ਕਰੋ +1. `LINGODOTDEV_API_KEY` ਨੂੰ ਰਿਪੋਸਿਟਰੀ ਸੀਕਰੇਟਸ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ (Settings > Secrets and variables > Actions) +2. PR ਵਰਕਫਲੋਜ਼ ਲਈ: Settings > Actions > General ਵਿੱਚ "Allow GitHub Actions to create and approve pull requests" ਸਮਰੱਥ ਕਰੋ **ਵਰਕਫਲੋ ਵਿਕਲਪ:** @@ -253,7 +253,7 @@ env: | ਇਨਪੁੱਟ | ਡਿਫਾਲਟ | ਵੇਰਵਾ | | -------------------- | ---------------------------------------------- | ------------------------------ | | `api-key` | (ਲੋੜੀਂਦਾ) | Lingo.dev API ਕੁੰਜੀ | -| `pull-request` | `false` | ਸਿੱਧੇ ਕਮਿਟ ਕਰਨ ਦੀ ਬਜਾਏ PR ਬਣਾਓ | +| `pull-request` | `false` | ਸਿੱਧਾ ਕਮਿਟ ਕਰਨ ਦੀ ਬਜਾਏ PR ਬਣਾਉ | | `commit-message` | `"feat: update translations via @LingoDotDev"` | ਕਸਟਮ ਕਮਿਟ ਸੁਨੇਹਾ | | `pull-request-title` | `"feat: update translations via @LingoDotDev"` | ਕਸਟਮ PR ਸਿਰਲੇਖ | | `working-directory` | `"."` | ਚਲਾਉਣ ਲਈ ਡਾਇਰੈਕਟਰੀ | @@ -333,7 +333,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -ਰਵਾਇਤੀ i18n ਦਖਲਅੰਦਾਜ਼ੀ ਵਾਲਾ ਹੈ। ਤੁਸੀਂ ਹਰ ਸਟ੍ਰਿੰਗ ਨੂੰ `t()` ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਲਪੇਟਦੇ ਹੋ, ਅਨੁਵਾਦ ਕੁੰਜੀਆਂ ਦੀ ਖੋਜ ਕਰਦੇ ਹੋ (`home.hero.title.v2`), ਸਮਾਨਾਂਤਰ JSON ਫਾਈਲਾਂ ਨੂੰ ਸੰਭਾਲਦੇ ਹੋ, ਅਤੇ ਆਪਣੇ ਕੰਪੋਨੈਂਟਸ ਨੂੰ ਸਥਾਨੀਕਰਨ ਬੋਇਲਰਪਲੇਟ ਨਾਲ ਫੁੱਲਦੇ ਦੇਖਦੇ ਹੋ। ਇਹ ਇੰਨਾ ਥਕਾਊ ਹੈ ਕਿ ਟੀਮਾਂ ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਨੂੰ ਉਦੋਂ ਤੱਕ ਮੁਲਤਵੀ ਕਰ ਦਿੰਦੀਆਂ ਹਨ ਜਦੋਂ ਤੱਕ ਇਹ ਇੱਕ ਵਿਸ਼ਾਲ ਰੀਫੈਕਟਰ ਨਹੀਂ ਬਣ ਜਾਂਦਾ। +ਪਰੰਪਰागत i18n ਘੁਸ਼ਪੈਠੀਕ ਹੈ। ਤੁਸੀਂ ਹਰ ਸਟ੍ਰਿੰਗ ਨੂੰ `t()` ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਲਪੇਟਦੇ ਹੋ, ਅਨੁਵਾਦ ਕੁੰਜੀਆਂ (`home.hero.title.v2`) ਬਣਾਉਂਦੇ ਹੋ, ਸਮਕਾਲੀ JSON ਫਾਈਲਾਂ ਰੱਖਦੇ ਹੋ, ਅਤੇ ਆਪਣੇ ਕੰਪੋਨੈਂਟਸ ਨੂੰ ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਬੋਇਲਰਪਲੇਟ ਨਾਲ ਵਧਦਾ ਹੋਇਆ ਵੇਖਦੇ ਹੋ। ਇਹ ਪੂਰੀ ਪ੍ਰਕਿਰਿਆ ਇੰਨੀ ਥਕਾਵਟੀ ਹੈ ਕਿ ਟੀਮਾਂ ਅੰਤਰਰਾਸ਼ਟਰੀਕਰਨ ਨੂੰ ਉਸ ਸਮੇਂ ਤੱਕ ਮੂਲ ਰੂਪ ਤੌਰ ਤੇ ਟਾਲਦੀਆਂ ਹਨ ਜਦ ਤੱਕ ਇਹ ਇੱਕ ਵਿਅਪਕ ਰੀਫੈਕਟਰ ਨਾ ਬਣ ਜਾਵੇ। Lingo.dev Compiler ਰਸਮੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਖਤਮ ਕਰਦਾ ਹੈ। ਸਾਦੇ ਅੰਗਰੇਜ਼ੀ ਟੈਕਸਟ ਨਾਲ React ਕੰਪੋਨੈਂਟਸ ਲਿਖੋ। Compiler ਬਿਲਡ ਟਾਈਮ 'ਤੇ ਅਨੁਵਾਦਯੋਗ ਸਟ੍ਰਿੰਗਾਂ ਦਾ ਪਤਾ ਲਗਾਉਂਦਾ ਹੈ ਅਤੇ ਸਥਾਨਿਕ ਰੂਪਾਂ ਨੂੰ ਆਪਣੇ-ਆਪ ਜਨਰੇਟ ਕਰਦਾ ਹੈ। ਕੋਈ keys ਨਹੀਂ, ਕੋਈ JSON ਫਾਈਲਾਂ ਨਹੀਂ, ਕੋਈ wrapper functions ਨਹੀਂ - ਸਿਰਫ਼ React ਕੋਡ ਜੋ ਕਈ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਕੰਮ ਕਰਦਾ ਹੈ। @@ -437,20 +437,20 @@ export function LanguageSwitcher() { **ਮੁੱਖ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ:** -- ਜ਼ੀਰੋ runtime performance cost -- ਕੋਈ translation keys ਜਾਂ JSON ਫਾਈਲਾਂ ਨਹੀਂ -- ਕੋਈ `t()` functions ਜਾਂ `` wrapper components ਨਹੀਂ -- JSX ਵਿੱਚ ਅਨੁਵਾਦਯੋਗ ਟੈਕਸਟ ਦਾ ਆਟੋਮੈਟਿਕ ਪਤਾ ਲਗਾਉਣਾ +- ਜ਼ੀਰੋ ਰਨਟਾਈਮ ਪਰਫਾਰਮੈਂਸ ਲਾਗਤ +- ਕੋਈ ਅਨੁਵਾਦ ਕੁੰਜੀਆਂ ਜਾਂ JSON ਫਾਈਲਾਂ ਨਹੀਂ +- ਕੋਈ `t()` ਫੰਕਸ਼ਨ ਜਾਂ `` ਵ੍ਰੈਪਰ ਕੰਪੋਨैंਟ ਨਹੀਂ +- JSX ਵਿੱਚ ਅਨੁਵਾਦਯੋਗ ਟੈਕਸਟ ਦੀ ਆਟੋਮੈਟਿਕ ਪਛਾਣ - TypeScript ਸਹਾਇਤਾ - ਬਹੁਵਚਨਾਂ ਲਈ ICU MessageFormat -- `data-lingo-override` attribute ਰਾਹੀਂ ਮੈਨੁਅਲ ਓਵਰਰਾਈਡਸ -- ਬਿਲਟ-ਇਨ translation editor widget +- `data-lingo-override` attribute ਰਾਹੀਂ ਮੈਨੁਅਲ ਓਵਰਰਾਈਡ +- ਇਨੇਬਲਡ translation editor widget **ਬਿਲਡ ਮੋਡਸ:** -- `pseudotranslator`: placeholder translations ਨਾਲ ਡਿਵੈਲਪਮੈਂਟ ਮੋਡ (ਕੋਈ API ਖਰਚੇ ਨਹੀਂ) -- `real`: LLMs ਵਰਤਦੇ ਹੋਏ ਅਸਲ ਅਨੁਵਾਦ ਜਨਰੇਟ ਕਰੋ -- `cache-only`: CI ਤੋਂ ਪਹਿਲਾਂ ਤੋਂ ਜਨਰੇਟ ਕੀਤੇ ਅਨੁਵਾਦਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ (ਕੋਈ API ਕਾਲਾਂ ਨਹੀਂ) +- `pseudotranslator`: placeholder translations ਨਾਲ ਡਿਵੈਲਪਮੈਂਟ ਮੋਡ (ਕੋਈ API ਖਰਚ ਨਹੀਂ) +- `real`: LLMs ਦੇ ਨਾਲ ਅਸਲ ਅਨੁਵਾਦ ਜਨਰੇਟ ਕਰੋ +- `cache-only`: CI ਤੋਂ ਪਹਿਲਾਂ ਤੋਂ ਉਤਪੰਨ ਕੀਤੀਆਂ ਅਨੁਵਾਦਾਂ ਨਾਲ ਪ੍ਰੋਡਕਸ਼ਨ ਮੋਡ (ਕੋਈ API ਕਾਲਾਂ ਨਹੀਂ) **ਸਮਰਥਿਤ ਫਰੇਮਵਰਕਸ:** @@ -468,11 +468,11 @@ 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`) - - ਸਬਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਟੈਸਟ ਪਾਸ ਹੋ ਜਾਣ -3. **ਡਿਵੈਲਪਮੈਂਟ:** ਇਹ ਇੱਕ pnpm + turborepo monorepo ਹੈ - - ਡਿਪੈਂਡੈਂਸੀਆਂ ਇੰਸਟਾਲ ਕਰੋ: `pnpm install` +2. **ਪੁੱਲ ਰਿਕੁਐਸਟਸ:** [ਤਬਦੀਲੀਆਂ ਸਬਮਿਟ ਕਰੋ](https://github.com/lingodotdev/lingo.dev/pulls) + - ਹਰੇਕ PR ਲਈ ਇੱਕ changeset ਦੀ ਲੋੜ ਹੈ: `pnpm new` (ਜਾਂ non-release ਤਬਦੀਲੀਆਂ ਲਈ `pnpm new:empty`) + - ਸਬਮਿਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਟੈਸਟ ਪਾਸ ਹੋਣ ਯਕੀਨੀ ਬਣਾਓ +3. **ਡਿਵੈਲਪਮੈਂਟ:** ਇਹ pnpm + turborepo ਮੋਨੋਰੇਪੋ ਹੈ + - ਡਿਪੈਂਡੈਂਸੀਜ਼ ਇੰਸਟਾਲ ਕਰੋ: `pnpm install` - ਟੈਸਟ ਚਲਾਓ: `pnpm test` - ਬਿਲਡ: `pnpm build` @@ -497,11 +497,11 @@ 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. ਇੱਕ ਪੁੱਲ ਰਿਕੁਐਸਟ ਸਬਮਿਟ ਕਰੋ +2. ਇੱਕ ਪੁੱਲ ਰੀਕੁਐਸਟ ਸਬਮਿਟ ਕਰੋ **BCP-47 ਲੋਕੇਲ ਫਾਰਮੈਟ:** `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` +- `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/pl.md b/readme/pl.md index 80f1f6c7b..8d09a3c28 100644 --- a/readme/pl.md +++ b/readme/pl.md @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is Asystent wykona następujące kroki: -1. Skonfiguruje routing oparty na lokalizacji (np. `/en`, `/es`, `/pt-BR`) -2. Skonfiguruje komponenty do przełączania języka -3. Wdroży automatyczne wykrywanie lokalizacji -4. Wygeneruje niezbędne pliki konfiguracyjne +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 **Uwaga:** Generowanie kodu przez AI jest niedeterministyczne. Przejrzyj wygenerowany kod przed zatwierdzeniem. @@ -139,9 +139,9 @@ npx lingo.dev@latest run **Jak to działa:** -1. Ekstrahuje treści do tłumaczenia z skonfigurowanych plików -2. Wysyła treści do dostawcy LLM w celu tłumaczenia -3. Zapisuje przetłumaczone treści z powrotem do systemu plików +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:** @@ -164,7 +164,7 @@ Polecenie `init` generuje plik `i18n.json`. Skonfiguruj lokalizacje i buckety: } ``` -Pole `provider` jest opcjonalne (domyślnie Lingo.dev Engine). Dla niestandardowych dostawców LLM: +Pole `provider` jest opcjonalne (domyślnie silnik Lingo.dev). Dla innych dostawców LLM: ```json { @@ -252,13 +252,13 @@ env: **Dostępne wejścia:** -| Wejście | Domyślna wartość | Opis | +| 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, w którym uruchomić | +| `working-directory` | `"."` | Katalog uruchomienia | | `parallel` | `false` | Włącz przetwarzanie równoległe | [Przeczytaj dokumentację →](https://lingo.dev/en/ci/github) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -Tradycyjne i18n jest inwazyjne. Każdy string opakowujesz w funkcje `t()`, wymyślasz klucze tłumaczeń (`home.hero.title.v2`), utrzymujesz równoległe pliki JSON i obserwujesz, jak komponenty puchną od boilerplate'u lokalizacyjnego. To tak żmudne, że zespoły odwlekają internacjonalizację, aż staje się to ogromnym refaktoringiem. +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. @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**Development:** `npm run dev` (używa pseudotranslatora, bez wywołań API) +**Development:** `npm run dev` (używa pseudotranslatora, brak wywołań API) **Production:** Ustaw `usePseudotranslator: false`, następnie `next build` -Dodaj katalog `.lingo/` do kontroli wersji. +Zacommituj katalog `.lingo/` do kontroli wersji. **Kluczowe funkcje:** -- Brak kosztów wydajności w runtime -- Bez kluczy tłumaczeń i plików JSON -- Bez funkcji `t()` ani wrapperów `` -- Automatyczne wykrywanie tekstów do tłumaczenia w JSX -- Wsparcie dla TypeScript -- ICU MessageFormat dla liczby mnogiej +- 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 (bez kosztów API) -- `real`: Generowanie rzeczywistych tłumaczeń przy użyciu LLM -- `cache-only`: Tryb produkcyjny z użyciem wygenerowanych tłumaczeń z CI (bez wywołań API) +- `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:** @@ -469,10 +469,10 @@ Planowane wsparcie dla kolejnych frameworków. Zapraszamy do współpracy. Prosimy o przestrzeganie poniższych wytycznych: -1. **Zgłoszenia:** [Zgłaszaj błędy lub prośby o 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 changesetu: `pnpm new` (lub `pnpm new:empty` dla zmian niewydaniowych) - - Przed wysłaniem upewnij się, że testy przechodzą poprawnie +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` @@ -498,7 +498,7 @@ Jeśli Lingo.dev jest dla Ciebie przydatne, daj nam gwiazdkę i pomóż osiągn **Dodawanie nowego języka:** -1. Dodaj kod języka 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) +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]` diff --git a/readme/pt-BR.md b/readme/pt-BR.md index 93aff81a4..4559ec887 100644 --- a/readme/pt-BR.md +++ b/readme/pt-BR.md @@ -75,9 +75,9 @@ | 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) | Traduzir arquivos JSON, YAML, markdown, CSV, PO | `npx lingo.dev@latest run` | +| [**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 em tempo de execução para conteúdo dinâmico | `npm install lingo.dev` | +| [**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()` | --- @@ -111,9 +111,9 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is O assistente irá: -1. Configurar roteamento baseado em locale (por exemplo, `/en`, `/es`, `/pt-BR`) +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 locale +3. Implementar detecção automática de localidade 4. Gerar arquivos de configuração necessários **Observação:** a geração de código assistida por IA é não-determinística. Revise o código gerado antes de fazer commit. @@ -142,12 +142,12 @@ npx lingo.dev@latest run 1. Extrai conteúdo traduzível dos arquivos configurados 2. Envia o conteúdo para o provedor LLM para tradução -3. Grava o conteúdo traduzido de volta no sistema de arquivos +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 locales e buckets: +O comando `init` gera um arquivo `i18n.json`. Configure os locales e buckets: ```json { @@ -227,7 +227,7 @@ jobs: **Requisitos de configuração:** -1. Adicione `LINGODOTDEV_API_KEY` aos secrets do repositório (Settings > Secrets and variables > Actions) +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:** @@ -256,10 +256,10 @@ env: | Input | Padrão | Descrição | | -------------------- | ---------------------------------------------- | -------------------------------------- | | `api-key` | (obrigatório) | Chave de API do Lingo.dev | -| `pull-request` | `false` | Criar PR em vez de fazer commit direto | +| `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 de PR personalizado | -| `working-directory` | `"."` | Diretório para executar | +| `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) @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -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 vê seus componentes incharem com boilerplate de localização. É tão tedioso que as equipes adiam a internacionalização até que ela se torne uma refatoração massiva. +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. 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. @@ -440,20 +440,20 @@ Faça commit do diretório `.lingo/` no controle de versão. **Recursos principais:** -- Custo zero de performance em runtime +- 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 -- Substituições manuais via atributo `data-lingo-override` -- Widget integrado de editor de traduções +- 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 usando traduções pré-geradas do CI (sem chamadas de API) +- `cache-only`: Modo de produção utilizando traduções pré-geradas do CI (sem chamadas de API) **Frameworks suportados:** @@ -472,8 +472,8 @@ Contribuições são bem-vindas. Siga estas diretrizes: 1. **Issues:** [Reporte bugs ou solicite recursos](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 alterações que não geram release) - - Certifique-se de que os testes passem antes de enviar + - 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 3. **Desenvolvimento:** Este é um monorepo pnpm + turborepo - Instale as dependências: `pnpm install` - Execute os testes: `pnpm test` @@ -502,7 +502,7 @@ 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 de locale BCP-47:** `language[-Script][-REGION]` +**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` diff --git a/readme/ru.md b/readme/ru.md index 7bbe06e31..17956fcca 100644 --- a/readme/ru.md +++ b/readme/ru.md @@ -110,10 +110,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is Ассистент сделает следующее: -1. Настроит роутинг по локали (например, `/en`, `/es`, `/pt-BR`) -2. Добавит компоненты для переключения языка -3. Реализует автоматическое определение локали -4. Сгенерирует нужные конфиги +1. Настроить роутинг по локалям (например, `/en`, `/es`, `/pt-BR`) +2. Добавить компоненты для переключения языка +3. Реализовать автоматическое определение локали +4. Сгенерировать необходимые конфигурационные файлы **Важно:** Генерация кода с помощью AI непредсказуема. Проверьте код перед коммитом. @@ -140,13 +140,13 @@ npx lingo.dev@latest run **Как это работает:** 1. Извлекает переводимый контент из настроенных файлов -2. Отправляет контент провайдеру LLM для перевода +2. Отправляет его провайдеру LLM для перевода 3. Записывает переведённый контент обратно в файловую систему -4. Создаёт файл `i18n.lock` для отслеживания завершённых переводов (чтобы избежать повторной обработки) +4. Создаёт файл `i18n.lock` для отслеживания завершённых переводов (предотвращает избыточную обработку) **Конфигурация:** -Команда `init` генерирует файл `i18n.json`. Настройте языки и бакеты: +Команда `init` генерирует файл `i18n.json`. Настройте локали и бакеты: ```json { @@ -164,7 +164,7 @@ npx lingo.dev@latest run } ``` -Поле `provider` необязательное (по умолчанию — Lingo.dev Engine). Для кастомных LLM-провайдеров: +Поле `provider` необязательно (по умолчанию — Lingo.dev Engine). Для индивидуальных LLM-провайдеров: ```json { @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -Классический i18n — это боль. Нужно оборачивать каждую строку в функции `t()`, придумывать ключи переводов (`home.hero.title.v2`), поддерживать параллельные JSON-файлы и наблюдать, как компоненты раздуваются от локализационного кода. Всё настолько муторно, что команды откладывают интернационализацию до последнего, пока не приходится делать огромный рефакторинг. +Классический i18n — это вмешательство везде. Каждую строку нужно оборачивать в функции `t()`, придумывать ключи переводов (`home.hero.title.v2`), держать параллельные JSON-файлы и наблюдать как компоненты обрастают локализационным шлаком. Это настолько муторно, что команды тянут с интернационализацией до огромного рефакторинга. Компилятор Lingo.dev убирает всю рутину. Пиши React-компоненты с обычным английским текстом — компилятор сам находит переводимые строки на этапе сборки и автоматически генерирует локализованные версии. Никаких ключей, JSON-файлов или обёрток — только React-код, который сразу работает на нескольких языках. @@ -431,18 +431,18 @@ export function LanguageSwitcher() { } ``` -**Разработка:** `npm run dev` (использует псевдопереводчик, без API-запросов) +**Разработка:** `npm run dev` (используется псевдопереводчик, без вызова API) -**Продакшн:** Установи `usePseudotranslator: false`, затем `next build` +**Продакшн:** Установите `usePseudotranslator: false`, затем `next build` -Добавь директорию `.lingo/` в систему контроля версий. +Добавьте директорию `.lingo/` в систему контроля версий. **Ключевые возможности:** -- Нулевая стоимость по производительности на рантайме -- Нет ключей перевода и JSON-файлов -- Нет функций `t()` или обёрток-компонентов `` -- Автоматическое определение переводимого текста в JSX +- Нулевая нагрузка на производительность рантайма +- Нет ключей переводов и JSON-файлов +- Нет функций `t()` или компонентов-обёрток `` +- Автоматическое определение переводимых строк в JSX - Поддержка TypeScript - ICU MessageFormat для плюрализации - Ручные правки через атрибут `data-lingo-override` @@ -450,9 +450,9 @@ export function LanguageSwitcher() { **Режимы сборки:** -- `pseudotranslator`: режим разработки с псевдопереводами (без затрат на API) -- `real`: генерация реальных переводов с помощью LLM -- `cache-only`: продакшн-режим с использованием заранее сгенерированных переводов из CI (без API-запросов) +- `pseudotranslator`: режим разработки с тестовыми переводами (без затрат на API) +- `real`: генерация реальных переводов с использованием LLM +- `cache-only`: продакшн-режим с использованием заранее сгенерированных переводов из CI (без запросов к API) **Поддерживаемые фреймворки:** @@ -469,14 +469,14 @@ export function LanguageSwitcher() { Будем рады вашим вкладом! Пожалуйста, следуйте этим рекомендациям: -1. **Issues:** [Сообщить об ошибках или предложить новые функции](https://github.com/lingodotdev/lingo.dev/issues) +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 + - Каждый PR требует changeset: `pnpm new` (или `pnpm new:empty` для нерелизных изменений) + - До отправки убедитесь, что все тесты проходят +3. **Разработка:** Это монорепозиторий pnpm + turborepo - Установить зависимости: `pnpm install` - Запустить тесты: `pnpm test` - - Собрать проект: `pnpm build` + - Собрать: `pnpm build` **Поддержка:** [Сообщество в Discord](https://lingo.dev/go/discord) @@ -499,11 +499,11 @@ 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. Отправьте pull request +2. Оформите pull request -**Формат локали BCP-47:** `language[-Script][-REGION]` +**Формат BCP-47 для локалей:** `language[-Script][-REGION]` -- `language`: ISO 639-1/2/3 (строчные): `en`, `zh`, `bho` -- `Script`: ISO 15924 (с заглавной буквы): `Hans`, `Hant`, `Latn` +- `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/si-LK.md b/readme/si-LK.md index 1c20897db..7620d386e 100644 --- a/readme/si-LK.md +++ b/readme/si-LK.md @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -සාම්ප්‍රදායික i18n ආක්‍රමණශීලී වේ. ඔබ සෑම string එකක්ම `t()` functions වලින් ඔතා, පරිවර්තන යතුරු නිර්මාණය කර (`home.hero.title.v2`), සමාන්තර JSON ගොනු නඩත්තු කර, ඔබේ components දේශීයකරණ boilerplate සමඟ විශාල වන ආකාරය නරඹයි. එය කෙතරම් කම්මැලි කාර්යයක්ද යත්, කණ්ඩායම් ජාත්‍යන්තරකරණය එය විශාල refactor එකක් බවට පත්වන තෙක් ප්‍රමාද කරයි. +සාම්ප්‍රදායික i18n ආක්‍රමණශීලී වේ. ඔබ සෑම string එකක්ම `t()` ශ්‍රිත වලින් ඔතා, පරිවර්තන යතුරු නිර්මාණය කරයි (`home.hero.title.v2`), සමාන්තර JSON ගොනු නඩත්තු කරයි, හා ඔබේ සංරචක ප්‍රාදේශීයකරණය boilerplate සමඟ විශාල වීමට නිරීක්ෂණය කරයි. මෙය එතරම් කම්මැලිද යත් කණ්ඩායම් ජාත්‍යන්තරකරණය විශාල refactor එකක් බවට පත්වන තෙක් ප්‍රමාද කරයි. Lingo.dev Compiler උත්සවය ඉවත් කරයි. සරල ඉංග්‍රීසි පාඨයෙන් React සංරචක ලියන්න. සම්පාදකය ගොඩනැගීමේ කාලයේදී පරිවර්තනය කළ හැකි තන්තු හඳුනාගෙන ස්වයංක්‍රීයව දේශීයකරණය කළ ප්‍රභේද ජනනය කරයි. යතුරු නැත, JSON ගොනු නැත, ආවරණ ශ්‍රිත නැත - බහු භාෂාවලින් ක්‍රියා කරන React කේතය පමණි. @@ -436,14 +436,14 @@ export function LanguageSwitcher() { **නිෂ්පාදනය:** `usePseudotranslator: false` සකසන්න, පසුව `next build` -`.lingo/` නාමාවලිය අනුවාද පාලනයට commit කරන්න. +`.lingo/` නාමාවලිය version control වෙත commit කරන්න. **ප්‍රධාන විශේෂාංග:** - ධාවන කාල කාර්ය සාධන පිරිවැය ශුන්‍යයි - පරිවර්තන යතුරු හෝ JSON ගොනු නැත - `t()` ශ්‍රිත හෝ `` ආවරණ සංරචක නැත -- JSX හි පරිවර්තනය කළ හැකි පාඨයේ ස්වයංක්‍රීය හඳුනාගැනීම +- JSX හි පරිවර්තනය කළ හැකි පාඨය ස්වයංක්‍රීයව හඳුනාගැනීම - TypeScript සහාය - බහු වචන සඳහා ICU MessageFormat - `data-lingo-override` ගුණාංගය හරහා අතින් අභිබවා යාම diff --git a/readme/ta-IN.md b/readme/ta-IN.md index 7643ac5cd..89237d774 100644 --- a/readme/ta-IN.md +++ b/readme/ta-IN.md @@ -143,7 +143,7 @@ npx lingo.dev@latest run 1. கட்டமைக்கப்பட்ட கோப்புகளிலிருந்து மொழிபெயர்க்கக்கூடிய உள்ளடக்கத்தை பிரித்தெடுக்கிறது 2. மொழிபெயர்ப்புக்காக உள்ளடக்கத்தை LLM provider-க்கு அனுப்புகிறது 3. மொழிபெயர்க்கப்பட்ட உள்ளடக்கத்தை filesystem-க்கு மீண்டும் எழுதுகிறது -4. முடிக்கப்பட்ட மொழிபெயர்ப்புகளைக் கண்காணிக்க `i18n.lock` கோப்பை உருவாக்குகிறது (தேவையற்ற செயலாக்கத்தைத் தவிர்க்கிறது) +4. முடிக்கப்பட்ட மொழிபெயர்ப்புகளை கண்காணிக்க `i18n.lock` கோப்பை உருவாக்குகிறது (தேவையற்ற செயலாக்கத்தைத் தவிர்கிறது) **கட்டமைப்பு:** @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -பாரம்பரிய i18n ஊடுருவக்கூடியது. ஒவ்வொரு string-ஐயும் `t()` functions-இல் wrap செய்கிறீர்கள், மொழிபெயர்ப்பு keys-ஐக் கண்டுபிடிக்கிறீர்கள் (`home.hero.title.v2`), இணையான JSON கோப்புகளைப் பராமரிக்கிறீர்கள், மேலும் localization boilerplate மூலம் உங்கள் components வீங்குவதைப் பார்க்கிறீர்கள். இது மிகவும் சலிப்பானது, அது பெரிய refactor ஆகும் வரை குழுக்கள் internationalization-ஐ தாமதப்படுத்துகின்றன. +பாரம்பரிய i18n ஊடுருவக்கூடியது. ஒவ்வொரு string-ஐயும் `t()` functions-இல் நிரப்ப வேண்டியிருக்கும், மொழிபெயர்ப்பு keys-ஐ உருவாக்க வேண்டும் (`home.hero.title.v2`), இணைப்புப் JSON கோப்புகளை பராமரிக்க வேண்டும், localization boilerplate காரணமாக உங்கள் components பெரிதாகும். இது மிகவும் சலிப்பானதாய் இருப்பதால், குழுக்கள் internationalization-ஐ பெரிய refactor ஆகும் வரை தாமதிக்கின்றன. Lingo.dev Compiler சடங்குகளை நீக்குகிறது. சாதாரண ஆங்கில உரையுடன் React components எழுதுங்கள். Compiler build நேரத்தில் மொழிபெயர்க்கக்கூடிய strings-ஐ கண்டறிந்து தானாகவே localized variants-ஐ உருவாக்குகிறது. Keys இல்லை, JSON கோப்புகள் இல்லை, wrapper functions இல்லை - பல மொழிகளில் வேலை செய்யும் React code மட்டுமே. @@ -432,28 +432,28 @@ export function LanguageSwitcher() { } ``` -**Development:** `npm run dev` (pseudotranslator-ஐ பயன்படுத்துகிறது, API calls இல்லை) +**Development:** `npm run dev` (pseudotranslator-ஐ பயன்படுத்துகிறது, API அழைப்புகள் இல்லை) **Production:** `usePseudotranslator: false`-ஐ அமைக்கவும், பின்னர் `next build` -`.lingo/` directory-ஐ version control-க்கு commit செய்யவும். +`.lingo/` அடைவை version control-க்கு commit செய்யவும். **முக்கிய அம்சங்கள்:** -- Zero runtime performance செலவு +- இயக்க நேரத்தில் முன்னிலைச் செலவு இல்லை - மொழிபெயர்ப்பு keys அல்லது JSON கோப்புகள் இல்லை - `t()` functions அல்லது `` wrapper components இல்லை -- JSX-இல் மொழிபெயர்க்கக்கூடிய உரையின் தானியங்கு கண்டறிதல் +- JSX-இல் மொழிபெயர்க்கக் கூடிய உரையை தானாக கண்டறிதல் - TypeScript ஆதரவு -- Plurals-க்கான ICU MessageFormat -- `data-lingo-override` attribute வழியாக manual overrides -- உள்ளமைக்கப்பட்ட மொழிபெயர்ப்பு editor widget +- பலவசை (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 calls இல்லை) +- `pseudotranslator`: Placeholder மொழிபெயர்ப்புகளுடன் Development mode (API செலவு இல்லை) +- `real`: LLMs பயன்படுத்தி உண்மையான மொழிபெயர்ப்பை உருவாக்கவும் +- `cache-only`: CI-யிலிருந்து முன்கூட்டியே உருவாக்கப்பட்ட மொழிபெயர்ப்புகளுடன் Production mode (API அழைப்புகள் இல்லை) **ஆதரிக்கப்படும் frameworks:** @@ -470,13 +470,13 @@ 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` (அல்லது release அல்லாத மாற்றங்களுக்கு `pnpm new:empty`) - - சமர்ப்பிப்பதற்கு முன் tests தேர்ச்சி பெறுவதை உறுதிசெய்யவும் +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` - - tests இயக்கவும்: `pnpm test` + - test-கள் இயக்கவும்: `pnpm test` - Build: `pnpm build` **ஆதரவு:** [Discord சமூகம்](https://lingo.dev/go/discord) @@ -499,12 +499,12 @@ 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 சேர்க்கவும் +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` +- `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 diff --git a/readme/te-IN.md b/readme/te-IN.md index 5202b017c..86782da29 100644 --- a/readme/te-IN.md +++ b/readme/te-IN.md @@ -141,12 +141,12 @@ npx lingo.dev@latest run 1. కాన్ఫిగర్ చేసిన ఫైల్స్ నుండి అనువదించదగిన కంటెంట్‌ను సేకరిస్తుంది 2. అనువాదం కోసం కంటెంట్‌ను LLM ప్రొవైడర్‌కు పంపుతుంది -3. అనువదించిన కంటెంట్‌ను తిరిగి ఫైల్‌సిస్టమ్‌కు వ్రాస్తుంది -4. పూర్తయిన అనువాదాలను ట్రాక్ చేయడానికి `i18n.lock` ఫైల్‌ను సృష్టిస్తుంది (అనవసర ప్రాసెసింగ్‌ను నివారిస్తుంది) +3. అనువదించిన కంటెంట్‌ను తిరిగి ఫైల్ సిస్టమ్‌కి వ్రాస్తుంది +4. పూర్తయిన అనువాదాలను ట్రాక్ చేయడానికి `i18n.lock` ఫైల్‌ను సృష్టిస్తుంది (అనవసర ప్రాసెసింగ్ నివారిస్తుంది) **కాన్ఫిగరేషన్:** -`init` కమాండ్ `i18n.json` ఫైల్‌ను జనరేట్ చేస్తుంది. లొకేల్స్ మరియు బకెట్‌లను కాన్ఫిగర్ చేయండి: +`init` కమాండ్ `i18n.json` ఫైల్‌ను జనరేట్ చేస్తుంది. లొకేల్‌లు మరియు బకెట్లను కాన్ఫిగర్ చేయండి: ```json { @@ -204,7 +204,7 @@ Lingo.dev CI/CD అనువాదాలను ఆటోమేటిక్‌గ **GitHub Actions సెటప్:** -`.github/workflows/translate.yml` సృష్టించండి: +`.github/workflows/translate.yml` ని సృష్టించండి: ```yaml name: Translate @@ -226,8 +226,8 @@ jobs: **సెటప్ అవసరాలు:** -1. రిపోజిటరీ సీక్రెట్స్‌కు `LINGODOTDEV_API_KEY` జోడించండి (Settings > Secrets and variables > Actions) -2. PR వర్క్‌ఫ్లోల కోసం: Settings > Actions > General లో "Allow GitHub Actions to create and approve pull requests" ఎనేబుల్ చేయండి +1. రిపోజిటరీ సీక్రెట్స్ (Settings > Secrets and variables > Actions) లో `LINGODOTDEV_API_KEY` ని జోడించండి +2. PR వర్క్‌ఫ్లో కోసం: Settings > Actions > General లో “Allow GitHub Actions to create and approve pull requests” ని ఎనేబుల్ చేయండి **వర్క్‌ఫ్లో ఆప్షన్స్:** @@ -252,14 +252,14 @@ env: **అందుబాటులో ఉన్న ఇన్‌పుట్‌లు:** -| ఇన్‌పుట్ | డిఫాల్ట్ | వివరణ | -| -------------------- | ---------------------------------------------- | ----------------------------------------------- | -| `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` | పారలెల్ ప్రాసెసింగ్‌ను ఎనేబుల్ చేయండి | +| ఇన్‌పుట్ | డిఫాల్ట్ | వివరణ | +| -------------------- | ---------------------------------------------- | ---------------------------------------- | +| `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) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev కంపైలర్ -సాంప్రదాయ i18n ఇన్వేసివ్‌గా ఉంటుంది. మీరు ప్రతి స్ట్రింగ్‌ను `t()` ఫంక్షన్లలో wrap చేస్తారు, అనువాద కీలను (`home.hero.title.v2`) ఇన్వెంట్ చేస్తారు, పారలెల్ JSON ఫైల్స్‌ను మెయింటెయిన్ చేస్తారు మరియు మీ కాంపోనెంట్లు లోకలైజేషన్ బాయిలర్‌ప్లేట్‌తో bloat అవడం చూస్తారు. ఇది చాలా టెడియస్‌గా ఉంటుంది కాబట్టి టీమ్‌లు ఇంటర్నేషనలైజేషన్‌ను అది మాసివ్ రీఫాక్టర్‌గా మారే వరకు ఆలస్యం చేస్తాయి. +సాంప్రదాయ i18n ఆదాగమీయంగా ఉంటుంది. మీరు ప్రతి స్ట్రింగ్‌ను `t()` ఫంక్షన్‌లలో పరిపూర్ణంగా ర్యాప్ చేస్తారు, అనువాద కీలు (`home.hero.title.v2`) సృష్టిస్తారు, అదనపు JSON ఫైళ్ళను నిర్వహిస్తారు, తుది ఫలితంగా మీ కంపోనెంట్లు స్థానికీకరణ బాయిలర్‌ప్లేట్‌తో మోతాదుగా పెరుగుతాయి. ఇది అత్యంత శ్రమాత్మకమైనది కాబట్టి టీమ్‌లు ఇంటర్నేషనలైజేషన్‌ను భారీ రీఫ్యాక్టర్‌గా మారే వరకు వాయిదా వేస్తారు. Lingo.dev కంపైలర్ సంప్రదాయాన్ని తొలగిస్తుంది. సాధారణ ఆంగ్ల టెక్స్ట్‌తో React కాంపోనెంట్‌లను రాయండి. కంపైలర్ బిల్డ్ టైమ్‌లో అనువదించదగిన స్ట్రింగ్‌లను గుర్తించి, స్వయంచాలకంగా స్థానికీకరించిన వేరియంట్‌లను జనరేట్ చేస్తుంది. కీలు లేవు, JSON ఫైల్స్ లేవు, రాపర్ ఫంక్షన్‌లు లేవు - బహుళ భాషలలో పనిచేసే React కోడ్ మాత్రమే. @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**డెవలప్‌మెంట్:** `npm run dev` (సూడోట్రాన్స్‌లేటర్‌ను ఉపయోగిస్తుంది, API కాల్స్ లేవు) +**డెవలప్‌మెంట్:** `npm run dev` (ప్యుసుడో ట్రాన్స్‌లేటర్ ఉపయోగించబడుతుంది, API కాల్స్ లేవు) **ప్రొడక్షన్:** `usePseudotranslator: false` సెట్ చేయండి, తర్వాత `next build` -`.lingo/` డైరెక్టరీని వెర్షన్ కంట్రోల్‌కు కమిట్ చేయండి. +`.lingo/` డైరెక్టరీని వర్షన్ కంట్రోల్‌కు కమిట్ చేయండి. **ముఖ్య ఫీచర్లు:** -- జీరో రన్‌టైమ్ పెర్ఫార్మెన్స్ కాస్ట్ -- అనువాద కీలు లేదా JSON ఫైల్స్ లేవు -- `t()` ఫంక్షన్‌లు లేదా `` రాపర్ కాంపోనెంట్‌లు లేవు -- JSXలో అనువదించదగిన టెక్స్ట్ యొక్క స్వయంచాలక గుర్తింపు +- రన్‌టైమ్ పెర్ఫార్మెన్స్ ఖర్చు లేదు +- అనువాద కీలు లేదా JSON ఫైళ్ళు లేవు +- `t()` ఫంక్షన్‌లు లేదా `` రాపర్ కంపోనెంట్లు లేవు +- JSXలో అనువదించదగిన టెక్స్‌ట్ను ఆటోమేటిక్‌గా గుర్తింపు - TypeScript సపోర్ట్ -- బహువచనాల కోసం ICU MessageFormat -- `data-lingo-override` అట్రిబ్యూట్ ద్వారా మాన్యువల్ ఓవర్‌రైడ్‌లు -- బిల్ట్-ఇన్ అనువాద ఎడిటర్ విడ్జెట్ +- బహుళ రూపాలకు ICU MessageFormat +- `data-lingo-override` అట్రిబ్యూట్ ద్వారా మానవీయ ఓవర్‌రైడ్‌లు +- ఇన్-బిల్ట్ ట్రాన్స్‌లేషన్ ఎడిటర్ విడ్జెట్ **బిల్డ్ మోడ్‌లు:** -- `pseudotranslator`: ప్లేస్‌హోల్డర్ అనువాదాలతో డెవలప్‌మెంట్ మోడ్ (API ఖర్చులు లేవు) -- `real`: LLMలను ఉపయోగించి వాస్తవ అనువాదాలను జనరేట్ చేయండి -- `cache-only`: CIలో ముందుగా జనరేట్ చేసిన అనువాదాలను ఉపయోగించి ప్రొడక్షన్ మోడ్ (API కాల్స్ లేవు) +- `pseudotranslator`: ప్లేస్‌హోల్డర్ అనువాదాలతో డెవలప్‌మెంట్ మోడ్ (API ఖర్చు లేదు) +- `real`: LLMలను ఉపయోగించి నిజమైన అనువాదాలను తరం చేయండి +- `cache-only`: CIనుంచి ముందుగా తయారుచేసిన అనువాదాలను ఉపయోగించే ప్రొడక్షన్ మోడ్ (API కాల్స్ లేవు) **సపోర్ట్ చేయబడిన ఫ్రేమ్‌వర్క్‌లు:** @@ -469,14 +469,14 @@ 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`) - - సబ్మిట్ చేసే ముందు టెస్ట్‌లు పాస్ అవుతున్నాయని నిర్ధారించుకోండి + - ప్రతి PRకి changeset అవసరం: `pnpm new` (లేదా రిలీజ్ కాని మార్పులకు `pnpm new:empty`) + - సబ్మిట్ చేసే ముందు టెస్ట్‌లు పాస్ అయినట్లు నిర్ధారించండి 3. **డెవలప్‌మెంట్:** ఇది pnpm + turborepo మోనోరెపో - డిపెండెన్సీలను ఇన్‌స్టాల్ చేయండి: `pnpm install` - - టెస్ట్‌లను రన్ చేయండి: `pnpm test` - - బిల్డ్: `pnpm build` + - టెస్ట్‌లు రన్ చేయండి: `pnpm test` + - బిల్డ్ చేయండి: `pnpm build` **సపోర్ట్:** [Discord కమ్యూనిటీ](https://lingo.dev/go/discord) @@ -498,12 +498,12 @@ Lingo.dev మీకు ఉపయోగకరంగా ఉంటే, మాకు **కొత్త భాషను జోడించడం:** -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. పుల్ రిక్వెస్ట్‌ను సబ్మిట్ చేయండి **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` +- `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` diff --git a/readme/tr.md b/readme/tr.md index c90a3f5ff..708f69af8 100644 --- a/readme/tr.md +++ b/readme/tr.md @@ -71,13 +71,13 @@ ## 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 pipeline'ı | `uses: lingodotdev/lingo.dev@main` | -| [**SDK**](#lingodev-sdk) | Dinamik içerik için runtime çevirisi | `npm install lingo.dev` | -| [**Compiler**](#lingodev-compiler) | i18n wrapper'ları olmadan build-time React yerelleştirmesi | `withLingo()` eklentisi | +| 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 | --- @@ -112,8 +112,8 @@ 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 tespitini uygular -4. Gerekli yapılandırma dosyalarını oluşturur +3. Otomatik yerel ayar tespiti uygular +4. Gerekli yapılandırma dosyalarını üretir **Not:** AI destekli kod üretimi deterministik değildir. Commit etmeden önce oluşturulan kodu gözden geçirin. @@ -139,10 +139,10 @@ npx lingo.dev@latest run **Nasıl çalışır:** -1. Yapılandırılmış dosyalardan çevrilebilir içeriği çıkarır -2. Çeviri için içeriği LLM sağlayıcısına gönderir +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 takip etmek için `i18n.lock` dosyası oluşturur (gereksiz işlemlerden kaçınır) +4. Tamamlanan çevirileri izlemek için `i18n.lock` dosyası oluşturur (gereksiz işlemleri önler) **Yapılandırma:** @@ -226,8 +226,8 @@ jobs: **Kurulum gereksinimleri:** -1. Repository secret'larına `LINGODOTDEV_API_KEY` ekleyin (Settings > Secrets and variables > Actions) -2. PR workflow'ları için: Settings > Actions > General bölümünden "Allow GitHub Actions to create and approve pull requests" seçeneğini etkinleştirin +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:** @@ -258,7 +258,7 @@ env: | `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ıştırılacak dizin | +| `working-directory` | `"."` | Çalışma dizini | | `parallel` | `false` | Paralel işlemeyi etkinleştir | [Dokümantasyonu okuyun →](https://lingo.dev/en/ci/github) @@ -335,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -Geleneksel i18n müdahaleci bir yaklaşımdır. Her string'i `t()` fonksiyonlarına sararsınız, çeviri anahtarları icat edersiniz (`home.hero.title.v2`), paralel JSON dosyaları yönetirsiniz ve bileşenlerinizin yerelleştirme boilerplate'i ile şiştiğini izlersiniz. O kadar sıkıcıdır ki ekipler uluslararasılaştırmayı büyük bir refactor haline gelene kadar erteler. +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. 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. @@ -431,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**Geliştirme:** `npm run dev` (pseudotranslator kullanır, API çağrısı yok) +**Geliştirme:** `npm run dev` (pseudotranslator kullanır, API çağrısı yoktur) -**Üretim:** `usePseudotranslator: false` ayarlayın, ardından `next build` +**Üretim:** `usePseudotranslator: false` ayarlayın, sonra `next build` çalıştırın -`.lingo/` dizinini sürüm kontrolüne commit edin. +`.lingo/` dizinini sürüm kontrolüne ekleyin. **Temel özellikler:** -- Sıfır runtime performans maliyeti -- Çeviri anahtarı veya JSON dosyası yok -- `t()` fonksiyonu veya `` sarmalayıcı bileşeni yok -- JSX'te çevrilebilir metnin otomatik algılanması +- 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 -- Yerleşik çeviri düzenleyici widget'ı +- Dahili çeviri düzenleyici aracı **Derleme modları:** - `pseudotranslator`: Yer tutucu çevirilerle geliştirme modu (API maliyeti yok) -- `real`: LLM'ler kullanarak gerçek çeviriler oluştur -- `cache-only`: CI'dan önceden oluşturulmuş çevirileri kullanan üretim modu (API çağrısı 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:** @@ -469,14 +469,14 @@ Ek framework desteği planlanmaktadır. Katkılarınızı bekliyoruz. Lütfen şu yönergeleri izleyin: -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 yayınlanmayacak değişiklikler için `pnpm new:empty`) +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`) - 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` - Testleri çalıştırın: `pnpm test` - - Build edin: `pnpm build` + - Derleyin: `pnpm build` **Destek:** [Discord topluluğu](https://lingo.dev/go/discord) @@ -498,12 +498,12 @@ 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 kodu ekleyin +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 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şlık harfi büyük): `Hans`, `Hant`, `Latn` +- `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 881a50404..2f5f9aa4c 100644 --- a/readme/uk-UA.md +++ b/readme/uk-UA.md @@ -72,13 +72,13 @@ ## Швидкий старт -| Інструмент | Випадок використання | Швидка команда | -| ---------------------------------- | --------------------------------------------------- | ---------------------------------- | -| [**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()` | +| Інструмент | Випадок використання | Швидка команда | +| ---------------------------------- | ---------------------------------------------------- | ---------------------------------- | +| [**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 | --- @@ -111,10 +111,10 @@ Set up i18n with the following locales: en, es, and pt-BR. The default locale is Асистент: -1. Налаштує маршрутизацію на основі локалі (наприклад, `/en`, `/es`, `/pt-BR`) -2. Налаштує компоненти перемикання мови -3. Реалізує автоматичне визначення локалі -4. Згенерує необхідні конфігураційні файли +1. Налаштувати маршрутизацію на основі локалі (наприклад, `/en`, `/es`, `/pt-BR`) +2. Налаштувати компоненти перемикання мови +3. Реалізувати автоматичне визначення локалі +4. Згенерувати необхідні конфігураційні файли **Примітка:** генерація коду за допомогою AI є недетермінованою. Перевіряйте згенерований код перед комітом. @@ -141,9 +141,9 @@ npx lingo.dev@latest run **Як це працює:** 1. Витягує контент для перекладу з налаштованих файлів -2. Надсилає контент до провайдера LLM для перекладу +2. Надсилає контент провайдеру LLM для перекладу 3. Записує перекладений контент назад у файлову систему -4. Створює файл `i18n.lock` для відстеження завершених перекладів (уникає надмірної обробки) +4. Створює файл `i18n.lock` для відстеження завершених перекладів (уникаючи зайвої обробки) **Конфігурація:** @@ -165,7 +165,7 @@ npx lingo.dev@latest run } ``` -Поле `provider` є необов'язковим (за замовчуванням використовується Lingo.dev Engine). Для власних провайдерів LLM: +Поле `provider` є необов'язковим (типово використовується Lingo.dev Engine). Для власних LLM-провайдерів: ```json { @@ -228,7 +228,7 @@ jobs: **Вимоги до налаштування:** 1. Додайте `LINGODOTDEV_API_KEY` до секретів репозиторію (Settings > Secrets and variables > Actions) -2. Для робочих процесів PR: увімкніть «Allow GitHub Actions to create and approve pull requests» у Settings > Actions > General +2. Для PR-воркфлоу: Увімкніть "Allow GitHub Actions to create and approve pull requests" у Settings > Actions > General **Опції робочого процесу:** @@ -255,11 +255,11 @@ env: | Параметр | Значення за замовчуванням | Опис | | -------------------- | ---------------------------------------------- | ---------------------------------- | -| `api-key` | (обов'язковий) | API-ключ Lingo.dev | +| `api-key` | (обов'язково) | API-ключ Lingo.dev | | `pull-request` | `false` | Створити PR замість прямого коміту | -| `commit-message` | `"feat: update translations via @LingoDotDev"` | Власне повідомлення коміту | +| `commit-message` | `"feat: update translations via @LingoDotDev"` | Користувацьке повідомлення коміту | | `pull-request-title` | `"feat: update translations via @LingoDotDev"` | Власний заголовок PR | -| `working-directory` | `"."` | Директорія для виконання | +| `working-directory` | `"."` | Директорія для запуску | | `parallel` | `false` | Увімкнути паралельну обробку | [Читати документацію →](https://lingo.dev/en/ci/github) @@ -336,7 +336,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -Традиційна інтернаціоналізація є інвазивною. Ви обгортаєте кожен рядок у функції `t()`, вигадуєте ключі перекладу (`home.hero.title.v2`), підтримуєте паралельні JSON-файли та спостерігаєте, як ваші компоненти роздуваються від шаблонного коду локалізації. Це настільки виснажливо, що команди відкладають інтернаціоналізацію, доки вона не перетворюється на масштабний рефакторинг. +Традиційна інтернаціоналізація є інвазивною. Ви обгортаєте кожен рядок у функції `t()`, вигадуєте ключі перекладу (`home.hero.title.v2`), підтримуєте паралельні JSON-файли і спостерігаєте, як ваші компоненти роздуваються через шаблонний код локалізації. Це настільки виснажливо, що команди відкладають інтернаціоналізацію, доки вона не перетвориться на масштабний рефакторинг. Lingo.dev Compiler усуває зайві церемонії. Пишіть React-компоненти зі звичайним англійським текстом. Компілятор виявляє рядки для перекладу під час збірки та автоматично генерує локалізовані варіанти. Ніяких ключів, JSON-файлів чи функцій-обгорток — лише React-код, який працює кількома мовами. @@ -432,28 +432,28 @@ export function LanguageSwitcher() { } ``` -**Розробка:** `npm run dev` (використовує псевдоперекладач, без API-викликів) +**Розробка:** `npm run dev` (використовується псевдоперекладач, без API-викликів) **Продакшн:** Встановіть `usePseudotranslator: false`, потім `next build` -Закомітьте директорію `.lingo/` до системи контролю версій. +Закомітьте директорію `.lingo/` у систему контролю версій. **Ключові можливості:** -- Нульові витрати продуктивності під час виконання +- Нульове навантаження на продуктивність у runtime - Без ключів перекладу чи JSON-файлів -- Без функцій `t()` або компонентів-обгорток `` -- Автоматичне виявлення тексту для перекладу в JSX +- Без функцій `t()` або обгорток `` +- Автоматичне виявлення тексту для перекладу у JSX - Підтримка TypeScript -- ICU MessageFormat для множини +- ICU MessageFormat для роботи з множиною - Ручне перевизначення через атрибут `data-lingo-override` - Вбудований віджет редактора перекладів **Режими збірки:** -- `pseudotranslator`: режим розробки з перекладами-заповнювачами (без витрат на API) -- `real`: генерація справжніх перекладів за допомогою LLM -- `cache-only`: продакшн-режим із використанням попередньо згенерованих перекладів з CI (без API-викликів) +- `pseudotranslator`: режим розробки із перекладами-заповнювачами (без витрат на API) +- `real`: генерація реальних перекладів за допомогою LLM +- `cache-only`: production-режим із попередньо згенерованими перекладами з CI (без API-викликів) **Підтримувані фреймворки:** @@ -470,14 +470,14 @@ export function LanguageSwitcher() { Ми вітаємо ваш внесок. Будь ласка, дотримуйтесь цих рекомендацій: -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. **Проблеми:** [Повідомити про баг або запропонувати функцію](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) @@ -499,7 +499,7 @@ 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]` @@ -507,4 +507,4 @@ export function LanguageSwitcher() { - `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`, {/_ INLINE_CODE_PLACEHOLDER_6e553bb40a655db7be211ded60744c98 _/ +- Приклади: `en`, `pt-BR`, `zh-Hans`, `sr-Cyrl-RS` diff --git a/readme/ur.md b/readme/ur.md index ff431af24..1172a2b1f 100644 --- a/readme/ur.md +++ b/readme/ur.md @@ -233,7 +233,11 @@ jobs: تراجم براہ راست commit کریں: -GitHub Actions workflow میں شامل کریں: +```yaml +uses: lingodotdev/lingo.dev@main +with: + api-key: ${{ secrets.LINGODOTDEV_API_KEY }} +``` تراجم کے ساتھ pull requests بنائیں: @@ -331,7 +335,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -روایتی i18n مداخلت آمیز ہے۔ آپ ہر string کو `t()` functions میں wrap کرتے ہیں، ترجمہ keys ایجاد کرتے ہیں (`home.hero.title.v2`)، متوازی JSON فائلیں برقرار رکھتے ہیں، اور اپنے components کو localization boilerplate سے بھرا ہوا دیکھتے ہیں۔ یہ اتنا تکلیف دہ ہے کہ ٹیمیں internationalization کو اس وقت تک ملتوی کرتی ہیں جب تک یہ ایک بڑا refactor نہ بن جائے۔ +روایتی i18n مداخلت آمیز ہوتی ہے۔ آپ ہر سٹرنگ کو `t()` فنکشنز میں لپیٹتے ہیں، ترجمہ keys ایجاد کرتے ہیں (`home.hero.title.v2`)، متوازی JSON فائلیں برقرار رکھتے ہیں، اور اپنے کمپوننٹس کو localization boilerplate سے پھولا ہوا پاتے ہیں۔ یہ اتنا محنت طلب ہے کہ ٹیمیں internationalization میں اس وقت تک تاخیر کرتی ہیں جب تک کہ یہ ایک بڑا refactor نہ بن جائے۔ Lingo.dev Compiler رسمی کاموں کو ختم کرتا ہے۔ سادہ انگریزی متن کے ساتھ React components لکھیں۔ Compiler build time پر قابل ترجمہ strings کا پتہ لگاتا ہے اور خودکار طور پر مقامی variants تیار کرتا ہے۔ کوئی keys نہیں، کوئی JSON فائلیں نہیں، کوئی wrapper functions نہیں - صرف React code جو متعدد زبانوں میں کام کرتا ہے۔ @@ -427,28 +431,28 @@ export function LanguageSwitcher() { } ``` -**Development:** `npm run dev` (pseudotranslator استعمال کرتا ہے، کوئی API calls نہیں) +**Development:** `npm run dev` (pseudotranslator استعمال کرتا ہے، کوئی API کالز نہیں) **Production:** `usePseudotranslator: false` سیٹ کریں، پھر `next build` -`.lingo/` directory کو version control میں commit کریں۔ +`.lingo/` ڈائریکٹری کو ورژن کنٹرول میں commit کریں۔ **اہم خصوصیات:** -- صفر runtime performance cost -- کوئی translation keys یا JSON فائلیں نہیں -- کوئی `t()` functions یا `` wrapper components نہیں +- صفر runtime کارکردگی لاگت +- کوئی ترجمہ keys یا JSON فائلیں نہیں +- کوئی `t()` فنکشنز یا `` wrapper کمپوننٹس نہیں - JSX میں قابل ترجمہ متن کی خودکار شناخت - TypeScript سپورٹ - plurals کے لیے ICU MessageFormat - `data-lingo-override` attribute کے ذریعے دستی overrides -- Built-in translation editor widget +- بلٹ ان ترجمہ ایڈیٹر وجیٹ **Build modes:** -- `pseudotranslator`: placeholder translations کے ساتھ development mode (کوئی API costs نہیں) -- `real`: LLMs استعمال کرتے ہوئے حقیقی تراجم تیار کریں -- `cache-only`: CI سے پہلے سے تیار شدہ تراجم استعمال کرتے ہوئے production mode (کوئی API calls نہیں) +- `pseudotranslator`: placeholder ترجمہ جات کے ساتھ development mode (کوئی API لاگت نہیں) +- `real`: LLMs کے ذریعے اصل ترجمے تیار کریں +- `cache-only`: CI سے پہلے سے تیار شدہ ترجمہ جات کے ساتھ production mode (کوئی API کالز نہیں) **معاون frameworks:** @@ -465,14 +469,14 @@ export function LanguageSwitcher() { تعاون کی خوش آمدید۔ براہ کرم ان رہنما خطوط پر عمل کریں: -1. **مسائل:** [bugs کی اطلاع دیں یا features کی درخواست کریں](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` (یا `pnpm new:empty` non-release تبدیلیوں کے لیے) - - جمع کروانے سے پہلے یقینی بنائیں کہ tests پاس ہو جائیں + - ہر PR کے لیے changeset ضروری ہے: `pnpm new` (یا غیر ریلیز تبدیلیوں کے لیے `pnpm new:empty`) + - سبمٹ کرنے سے پہلے یقینی بنائیں کہ تمام ٹیسٹ پاس ہو جائیں 3. **Development:** یہ pnpm + turborepo monorepo ہے - dependencies انسٹال کریں: `pnpm install` - - tests چلائیں: `pnpm test` - - Build کریں: `pnpm build` + - ٹیسٹ چلائیں: `pnpm test` + - بلڈ کریں: `pnpm build` **سپورٹ:** [Discord community](https://lingo.dev/go/discord) @@ -497,9 +501,9 @@ 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]` +**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` +- `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/zh-Hans.md b/readme/zh-Hans.md index b058a0c2a..3bcbdaf6b 100644 --- a/readme/zh-Hans.md +++ b/readme/zh-Hans.md @@ -73,9 +73,9 @@ | ---------------------------------- | --------------------------------------- | ---------------------------------- | | [**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` | +| [**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 | +| [**Compiler**](#lingodev-compiler) | 构建时 React 本地化,无需 i18n 包装器 | `withLingo()` plugin | --- @@ -137,14 +137,14 @@ npx lingo.dev@latest run **工作原理:** -1. 从已配置的文件中提取可翻译内容 -2. 将内容发送到 LLM 提供商进行翻译 -3. 将翻译后的内容写回文件系统 -4. 创建 `i18n.lock` 文件以跟踪已完成的翻译(避免重复处理) +1. 从配置的文件中提取可翻译内容 +2. 发送内容到 LLM 提供商进行翻译 +3. 将翻译结果写回文件系统 +4. 创建 `i18n.lock` 文件以追踪已翻译内容(避免重复处理) **配置:** -`init` 命令会生成一个 `i18n.json` 文件。请配置 locales 和 buckets: +`init` 命令会生成 `i18n.json` 文件。请配置 locales 和 buckets: ```json { @@ -162,7 +162,7 @@ npx lingo.dev@latest run } ``` -`provider` 字段为可选项(默认为 Lingo.dev Engine)。如需自定义 LLM 提供商: +`provider` 字段为可选(默认为 Lingo.dev Engine)。如需自定义 LLM 提供商: ```json { @@ -224,7 +224,7 @@ jobs: **设置要求:** -1. 将 `LINGODOTDEV_API_KEY` 添加到仓库密钥(设置 > Secrets and variables > Actions) +1. 将 `LINGODOTDEV_API_KEY` 添加到仓库机密(设置 > Secrets and variables > Actions) 2. 针对 PR 工作流:在设置 > Actions > General 中启用“允许 GitHub Actions 创建和批准拉取请求” **工作流选项:** @@ -250,14 +250,14 @@ env: **可用输入:** -| 输入 | 默认值 | 描述 | -| -------------------- | ---------------------------------------------- | ---------------------- | -| `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` | 启用并行处理 | +| 输入 | 默认值 | 描述 | +| -------------------- | ---------------------------------------------- | -------------------- | +| `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) @@ -333,7 +333,7 @@ const locale = await lingoDotDev.recognizeLocale("Bonjour le monde"); ### Lingo.dev Compiler -传统 i18n 方式非常繁琐。你需要用 `t()` 函数包裹每个字符串,创建翻译 key(`home.hero.title.v2`),维护多份 JSON 文件,还要忍受组件被本地化样板代码拖慢。如此繁琐,团队往往拖延国际化,直到变成一次大规模重构。 +传统 i18n 十分侵入。你需要用 `t()` 函数包裹每个字符串,创建翻译 key(`home.hero.title.v2`),维护并行的 JSON 文件,还要忍受因本地化样板代码导致的组件臃肿。如此繁琐,团队往往拖延国际化,直到变成大规模重构。 **配置(Next.js):** @@ -355,7 +355,9 @@ export default async function (): Promise { } ``` -**配置(Vite):** +```bash +pnpm install @lingo.dev/compiler +``` ```ts // vite.config.ts @@ -375,7 +377,16 @@ export default defineConfig({ }); ``` -**Provider 设置:** +```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 +``` ```tsx // app/layout.tsx (Next.js) @@ -392,7 +403,74 @@ export default function RootLayout({ 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(), + ], +}); +``` + +**生产环境:** 设置 `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"; @@ -414,7 +492,8 @@ export function LanguageSwitcher() { 将 `.lingo/` 目录提交到版本控制。 -**主要特性:** +- Next.js(App Router,支持 React Server Components) +- Vite + React(SPA 和 SSR) - 零运行时性能损耗 - 无需翻译 key 或 JSON 文件 @@ -425,23 +504,12 @@ export function LanguageSwitcher() { - 通过 `data-lingo-override` 属性手动覆盖 - 内置翻译编辑器小部件 -**构建模式:** +[阅读文档 →](https://lingo.dev/en/compiler) - `pseudotranslator`:开发模式,使用占位翻译(无 API 成本) - `real`:使用 LLM 生成实际翻译 - `cache-only`:生产模式,使用 CI 预生成的翻译(无 API 调用) -**支持的框架:** - -- Next.js(App Router,支持 React Server Components) -- Vite + React(SPA 和 SSR) - -计划支持更多框架。 - -[阅读文档 →](https://lingo.dev/en/compiler) - ---- - ## 参与贡献 欢迎贡献。请遵循以下指南: @@ -463,7 +531,14 @@ export function LanguageSwitcher() { [ -![Star 历史图表](https://api.star-history.com/svg?repos=lingodotdev/lingo.dev&type=Date) +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` ](https://www.star-history.com/#lingodotdev/lingo.dev&Date) @@ -489,10 +564,10 @@ 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. 提交 pull request +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 语言代码格式:** `language[-Script][-REGION]` +**BCP-47 locale 格式:** `language[-Script][-REGION]` - `language`:ISO 639-1/2/3(小写):`en`、`zh`、`bho` - `Script`:ISO 15924(首字母大写):`Hans`、`Hant`、`Latn`