Intlayer का यथावत अनुवाद
Intlayer उन ऐप्लिकेशनों के लिए एक अच्छा समाधान है जो अनुवादों को टाइप किए गए सामग्री शब्दकोशों में रखते हैं, या जो अनुवाद प्रबंधन प्रणाली और मानव अनुवाद का उपयोग करते हैं। translate-intlayer उस दर्शक वर्ग के लिए है। यह आपके *.content.ts शब्दकोशों के अंदर छूटे हुए और पुराने लोकेल लीफ को यथास्थान भरता है। शब्दकोश सत्य का स्रोत बने रहते हैं, Intlayer रनटाइम पर रहता है, और ai-i18n-tools अनुवाद इंजन (प्रदाता चयन, शब्दावली, अनुवाद संदर्भ और मॉडल फ़ॉलबैक) के रूप में कार्य करता है।
Intlayer को बनाए रखें या स्रोत-स्ट्रिंग कॉल पर जाएँ?
| आपके दर्शक | कमांड | गाइड |
|---|---|---|
| टाइप किए गए सामग्री शब्दकोश, एक अनुवाद प्रबंधन प्रणाली, या मानव अनुवाद। Intlayer रनटाइम पर रहता है। | translate-intlayer | यह पृष्ठ |
स्रोत-स्ट्रिंग कॉल, t('…'), जिसमें स्रोत-भाषा का टेक्स्ट उस कोड के साथ रखा जाता है जो इसका उपयोग करता है। स्रोत भाषा कोई भी भाषा हो सकती है। | migrate-intlayer | Intlayer से स्रोत-स्ट्रिंग कॉल में माइग्रेट करना |
translate-intlayer एक चल रहा कार्य है जिसे आप जब भी स्रोत स्ट्रिंग जोड़ते हैं या मौजूदा स्ट्रिंग को संपादित करते हैं तो फिर से चलाते हैं। migrate-intlayer दूसरे दर्शक वर्ग के लिए एक बार का बदलाव है। प्रत्येक फिर से लिखी गई कॉल स्रोत-भाषा स्ट्रिंग को उस कोड के साथ ले जाती है जो इसका उपयोग करता है, जिससे रखरखाव सरल हो जाता है और उस कोड की जटिलता कम हो जाती है। वह भाषा sourceLocale है, और यह कोई भी भाषा हो सकती है।
translate-intlayer क्या करता है
*.content.tsडिफ़ॉल्ट एक्सपोर्ट्स को पार्स करता है और हरt({ locale: '…' })लीफ को एकत्र करता है। लोकेल मान साधारण स्ट्रिंग या Intlayerinsert('…')इंसर्शन नोड हो सकते हैं।- UI ब्लॉक के
ui.stringsJsonको स्रोत टेक्स्ट से भरता है, फिर छूटे हुए और पुराने लोकेल के लिएtranslate-uiके समान इंजन चलाता है। - प्रत्येक
t({ … })ऑब्जेक्ट में नए प्रति-लोकेल स्ट्रिंग को वापस लिखता है। संपादन सर्जिकल होते हैं: केवल छूटी हुई या पुरानी लोकेल लाइनें बदलती हैं, इसलिए आपकी फ़ॉर्मेटिंग, कुंजी क्रम और टिप्पणियाँ संरक्षित रहती हैं। मौजूदा अनुवादों को जैसा लिखा गया है वैसा ही छोड़ दिया जाता है। जब कोई लीफinsert('…')का उपयोग करती है, तो नए लोकेल मान भीinsert(…)में लपेटे जाते हैं, ताकि लीफ रनटाइम पर कॉल करने योग्य बनी रहे। - प्लेसहोल्डर को संरक्षित रखता है। Intlayer का इंसर्शन सिंटैक्स
{{token}}अपरिवर्तित रहता है। सिंगल-ब्रेस{token}प्लेसहोल्डर भी समर्थित हैं: वे अनुवाद के लिए{{token}}बन जाते हैं और लिखने पर{token}पर वापस आ जाते हैं। --dry-runके साथ ड्राई रन करें: यह LLM को कॉल किए बिना या कुछ भी लिखे बिना छूटे हुए/पुराने काउंट की रिपोर्ट करता है।
छूटे हुए बनाम पुराने
एक लीफ + लोकेल का अनुवाद तब किया जाता है जब:
- लोकेल लीफ से अनुपस्थित है (छूटा हुआ), या
- उस लोकेल के लिए पिछली बार चलाने के बाद से स्रोत-लोकेल टेक्स्ट बदल गया है (पुराना)। स्रोत भाषा
sourceLocaleहै और कोई भी भाषा हो सकती है।
cacheDir में प्रति लीफ के अनुसार पुरानापन ट्रैक किया जाता है, इसलिए एक अंग्रेजी स्ट्रिंग को संपादित करने से अगली बार चलाने पर केवल वही लीफ फिर से अनुवादित होती है; बाकी सब कुछ कैश में रहता है। एक अनुवाद जो पहली बार चलाने पर पहले से ही पुराना था, उसे वर्तमान के रूप में स्वीकार किया जाता है — केवल बाद के संपादन ही उसे पुराना चिह्नित करते हैं।
अपनी परियोजना का अनुवाद करें
ai-i18n-toolsइंस्टॉल करें (इंस्टॉलेशन देखें)। यदि आपके प्रोजेक्ट में अभी तक कोईai-i18n-tools.config.jsonनहीं है, तो एक स्केफोल्ड करें:bashai-i18n-tools init -P gemini
sourceLocale और targetLocales को उन लोकेल पर सेट करें जिनका आपके शब्दकोश उपयोग करते हैं, और ui.sourceRoots, ui.stringsJson, और ui.flatOutputDir को अपने स्रोत और एक कैटलॉग पथ पर इंगित करें — वही कुंजियाँ जिनका translate-ui उपयोग करता है, UI स्ट्रिंग — चरण 1: आरंभ करें देखें। कैटलॉग एक स्क्रैच डायरेक्टरी (उदाहरण के लिए .i18n/) में रह सकता है; इसका उपयोग अनुवाद कैश के रूप में किया जाता है और आप इसे कभी भी मैन्युअल रूप से संपादित नहीं करते हैं। 2. पहले यह देखने के लिए ड्राई रन करें कि क्या भरा जाएगा:
ai-i18n-tools translate-intlayer src --dry-runइसे लागू करें (एक प्रदाता API कुंजी की आवश्यकता है):
bashai-i18n-tools translate-intlayer srcजब भी आप कोई नई स्ट्रिंग जोड़ें या किसी अंग्रेजी स्ट्रिंग को संपादित करें तो फिर से चलाएँ। केवल नई या बदली हुई लीफ का अनुवाद किया जाता है। आवश्यकता पड़ने पर
-l de,frया--ui-blockके साथ एक रन को स्कोप करें।
उदाहरण चलाएँ
intlayer-translate उदाहरण एक छोटा Vite + React ऐप है जिसके शब्दकोश अंग्रेजी और ब्राज़ीलियाई पुर्तगाली के साथ आते हैं; स्पेनिश और सरलीकृत चीनी जानबूझकर गायब हैं। pristine/ एक रीड-ओनली संदर्भ है; src/ कार्यशील प्रति है। pnpm reset src/ को उस प्रारंभिक स्थिति में लौटाता है (और कैटलॉग और कैश को साफ़ करता है) ताकि आप अभ्यास दोहरा सकें।
npx degit wsj-br/ai-i18n-tools/examples/intlayer-translate intlayer-translate
cd intlayer-translate
pnpm install
pnpm reset
pnpm translate:dry
pnpm translatepnpm dev ऐप को http://localhost:3093 पर चलाता है। अनुवाद करने से पहले लोकले को es या zh-Hans पर स्विच करें और स्ट्रिंग अंग्रेज़ी में वापस आ जाती हैं; pnpm translate के बाद भरे हुए अनुवाद दिखाई देते हैं। एक अंग्रेज़ी स्ट्रिंग को संपादित करें और केवल उस लीफ को रीफ़्रेश होते देखने के लिए pnpm translate को फिर से चलाएँ।
पूर्ण विवरण: examples/intlayer-translate/README.md.
कमांड
ai-i18n-tools translate-intlayer [paths...] [-l <codes>] [--ui-block <selector>] [--dry-run] [-j <n>]features.translateUIStrings और UI ब्लॉक के ui.stringsJson (translate-ui के समान) की आवश्यकता है। --dry-run किसी LLM को कॉल नहीं करता है।
| विकल्प | अर्थ |
|---|---|
[paths...] | स्कैन करने के लिए फ़ाइलें/डिर/ग्लोब (डिफ़ॉल्ट: ui.sourceRoots) |
-l, --locale <codes> | भरने के लिए कॉमा-सेपरेटेड लक्ष्य लोकले (डिफ़ॉल्ट: ब्लॉक का targetLocales) |
--ui-block <selector> | UI ब्लॉक: शून्य-आधारित इंडेक्स, विवरण, या stringsJson पाथ (डिफ़ॉल्ट: ब्लॉक 0) |
--dry-run | केवल गुम/पुरानी गणनाओं की रिपोर्ट करें; कोई LLM कॉल नहीं, कोई राइट्स नहीं |
-j, --concurrency <n> | अधिकतम समानांतर लक्ष्य लोकले (डिफ़ॉल्ट: कॉन्फ़िग concurrency या 4) |
यह भी देखें: CLI — UI स्ट्रिंग, इंटलेयर से स्रोत-स्ट्रिंग कॉल में माइग्रेट करना