अनुवाद रखरखाव कार्यप्रवाह
सामान्य प्रलेखन आदेशों (बिल्ड, डिप्लॉय, स्क्रीनशॉट, रीडमी जनरेशन) के लिए, देखें प्रलेखन उपकरण।
अवलोकन
प्रलेखन डोकूसॉरस आई18एन का उपयोग करता है जहां अंग्रेजी डिफ़ॉल्ट स्थान है। स्रोत प्रलेखन में रहता है docs/; अनुवाद के तहत लिखे जाते हैं i18n/{locale}/। समर्थित स्थान: इंग्लिश-जीबी (डिफ़ॉल्ट), फ्रेंच, जर्मन, स्पेनिश, पीटी-बीआर, हिंदी, जेड-हैंस।
एआई अनुवाद ऐप यूआई, डोकूसॉरस मार्कडाउन/जेएसओएन, एसवीजी संपत्ति और डिफ़ॉल्ट अधिसूचना टेम्पलेट के लिए एआई-आई18एन-टूल्स द्वारा संभाला जाता है रिपॉजिटरी रूट से, में कॉन्फ़िगर किया गया ai-i18n-tools.config.json (के अंदर नहीं documentation/)। सेट करें OPENROUTER_API_KEY जब अनुवाद आदेश चला रहे हों।
एक ही मशीन पर एक अप्रकाशित चेकआउट को आज़माने के लिए (डिफ़ॉल्ट ../ai-i18n-tools), निर्भरता को pnpm i18n:tools --local या ./scripts/link-ai-i18n-tools.sh --local के साथ स्विच करें। यह दोनों सीएलआई (pnpm i18n:*) और ai-i18n-tools/runtime आयात को लिंक करता है। स्रोत परिवर्तनों के बाद उपकरण पैकेज को पुनर्निर्माण करें (उस चेकआउट में pnpm build)। नवीनतम एनपीएम पैकेज को --remote के साथ पुनर्स्थापित करें। link: स्पेसिफायर को कमिट न करें।
जब अंग्रेजी प्रलेखन बदलता है
documentation/docs/में सोर्स संपादित करें (केवल अंग्रेज़ी)। लैंडिंग-पेज की कॉपीdocumentation/src/landing/landing.htmlहै।- Docusaurus UI स्ट्रिंग्स (थीम लेबल, navbar, आदि): यदि आवश्यक हो, तो
documentation/मेंpnpm write-translationsचलाएं ताकिi18n/en/*.jsonनई कुंजियों को ले सके। - हेडिंग ID:
pnpm write-heading-ids(documentation/से)। - रिपो रूट से अनुवाद करें (या
documentation/से नीचे दिए गए शॉर्टकट का उपयोग करें):pnpm i18n:extract— Next.js ऐप मेंt('…')सेsrc/locales/strings.jsonको रीफ्रेश करें।pnpm i18n:translate:docs— कॉन्फ़िगरेशन के अनुसार मार्कडाउन, Docusaurus शेल JSON और लैंडिंग HTML काdocumentation/i18n/औरdocumentation/src/landing/i18n/में अनुवाद करें।pnpm i18n:translate:svg— कॉन्फ़िगरेशन के अनुसारdocumentation/static/imgके अंतर्गत SVG का अनुवाद करें।pnpm i18n:translate:json—en-GB.jsonसेsrc/locales/templates/में डिफ़ॉल्ट नोटिफ़िकेशन टेम्पलेट का अनुवाद करें।- या सब कुछ चलाएं:
pnpm i18n:translate।
- बिल्ड:
cd documentation && pnpm build(सभी स्थान)।
के अंदर से documentation/, वही प्रवाह तारबद्ध हैं जैसे pnpm translate → रूट i18n:translate, प्लस pnpm translate:docs, translate:ui, translate:svg, translate:status, i18n:extract, i18n:sync।
यूआई बहुवचन
अगला.जेएस ऐप में कार्डिनल बहुवचन एआई-आई18एन-टूल्स का उपयोग करते हैं, हाथ से लिखे गए _one / _other कुंजियाँ नहीं।
एक अंग्रेजी स्रोत स्ट्रिंग लिखें (आमतौर पर बहुवचन) और एक सादा ऑब्जेक्ट लिटरल पास करें जिसमें plurals: true और एक संख्यात्मक count:
t("{{count}} backups selected", { plurals: true, count: selectedBackups.size })
नियम:
item(s)हेज याcount === 1 ? t('…') : t('…')जोड़े का उपयोग न करें।- स्वतंत्र संख्यात्मक गणना को अलग-अलग
t()कॉल की आवश्यकता है — एक बहुवचन अक्ष दो संख्याओं को नहीं मोड़ सकता (उदाहरण के लिए 1 सफल और 2 विफल)। टुकड़ों को जोड़ें:
`${t("Tested {{count}} connections:", { plurals: true, count: total })} ` +
`${t("{{count}} successful,", { plurals: true, count: successCount })} ` +
`${t("{{count}} failed", { plurals: true, count: failureCount })}`
- गैर-संख्यात्मक अंतर्वेशन (नाम, लेबल, आदि) उसी बहुवचन स्ट्रिंग में
{{count}}के साथ ठीक है। pnpm i18n:extractकैटलॉग पंक्ति को"plural": trueके रूप में चिह्नित करता है।pnpm i18n:translate:uiसीएलडीआर फॉर्म भरता है औरsrc/locales/en-GB.jsonलिखता है (केवल बहुवचन कुंजियाँ)।src/i18n.tsऔरsrc/lib/i18n-server.tsउस फ़ाइल कोsourcePluralFlatBundleके रूप में लोड करते हैं ताकि अंग्रेजी एकवचन/बहुवचन रनटाइम पर हल हो सके।
डिफ़ॉल्ट अधिसूचना टेम्पलेट
सेटिंग्स → टेम्पलेट → रीसेट डिफ़ॉल्ट को src/locales/templates/{locale}.json से लोड करता है (में तारबद्ध src/lib/default-notification-templates.ts)।
- केवल
src/locales/templates/en-GB.jsonसंपादित करें (अंग्रेजी स्रोत)। - रेपो रूट से
pnpm i18n:translate:json(याpnpm i18n:translate) चलाएं। - डिफ़्स की समीक्षा करें — प्लेसहोल्डर जैसे
{backup_name}और{problem_table}अपरिवर्तित रहना चाहिए;priorityऔरtagsकोkeyPolicyद्वाराai-i18n-tools.config.jsonमें छोड़ दिया जाता है। - जेएसओएन ब्लॉक कवरेज देखने के लिए
pnpm i18n:statusचलाएं।
झंडे के लिए एआई-आई18एन-टूल्स जेएसओएन गाइड देखें (--locale, --force, आदि)।
लैंडिंग पेज HTML
दस्तावेज़ों का होमपेज मुख्य भाग (body) एक एकल अंग्रेज़ी HTML फ़ाइल है, न कि React सेक्शन कॉम्पोनेन्ट।
documentation/src/landing/landing.htmlसंपादित करें (और लेआउट के लिएdocumentation/src/landing/landing.css)। हैश IDfeatures,dashboard,workflow,securityऔरinstallको बनाए रखें।- रिपो रूट से
pnpm i18n:translate:docsचलाएं (याdocumentation/सेpnpm translate:docs)। - जनरेट की गई प्रतियां
documentation/src/landing/i18n/{locale}/landing.htmlमें लिखी जाती हैं। उन फ़ाइलों को मैन्युअल रूप से संपादित न करें।
translate-docs HTML पृष्ठ पाइपलाइन का उपयोग करता है: दृश्यमान पाठ और alt / title / aria-label का अनुवाद किया जाता है; <pre> और <code> अंग्रेज़ी में रहते हैं। Navbar लेबल और पृष्ठ शीर्षक Docusaurus Translate (homepage.nav.*, homepage.meta.*) में रहते हैं।
इस फ़ाइल में data-i18n मार्कर न जोड़ें, और इसे ui.sourceRoots के अंतर्गत सूचीबद्ध न करें। एक ही HTML फ़ाइल दस्तावेज़ पाइपलाइन और UI-स्ट्रिंग्स पाइपलाइन दोनों में नहीं होनी चाहिए।
शब्दकोश
- दस्तावेज़ों के लिए UI शब्दावली प्रत्येक
ui[]कैटलॉग से आती है जिसमेंuiGlossaryचालू रहता है (डिफ़ॉल्ट)। Next.js ऐप कैटलॉगsrc/locales/strings.jsonहै (pnpm i18n:extractद्वारा निर्मित)।glossary.uiGlossaryसेट न करें; वह कुंजी अस्वीकार कर दी जाती है। - ओवरराइड
documentation/glossary-user.csv(कॉन्फ़िगरेशन मेंglossary.userGlossary) में रहते हैं। कॉलम प्रारूप के लिए ai-i18n-tools शब्दावली दस्तावेज़ देखें। - एक CSV टेम्पलेट जनरेट करें:
pnpm i18n:glossary-generate(रूट)।
कैश
ai-i18n-tools के लिए अनुवाद कैश रिपॉजिटरी रूट पर .translation-cache/ के अंतर्गत होता है (ai-i18n-tools.config.json में cacheDir)। इसे गिट द्वारा अनदेखा किया जाता है। जब आपको पूर्ण रीफ्रेश की आवश्यकता हो तो ai-i18n-tools प्रलेखन के अनुसार pnpm i18n:status और CLI के --force / कैश फ्लैग का उपयोग करें।
शीर्षक ID और लंगर
स्पष्ट ID का उपयोग करें ताकि भाषाओं के पार लिंक स्थिर रहें। MDX टिप्पणी सिंटैक्स को प्राथमिकता दें (pnpm write-heading-ids --syntax mdx-comment का उपयोग करता है):
## This is a heading {/* #this-is-a-heading */}
h2 और उसके नीचे के स्तर पर ID डालें। डॉक्यूसॉरस write-heading-ids h1 को छोड़ देता है (पृष्ठ/साइडबार शीर्षक)। documentation/docusaurus.config.ts अनुमानित शीर्षकों से शीर्षक-आईडी टिप्पणियों को भी हटा देता है, क्योंकि डॉक्यूसॉरस मेटाडेटा निष्कर्षण अभी भी केवल क्लासिक {#id} को हटाता है।
cd documentation
pnpm write-heading-ids
अनदेखा सूचियाँ
यदि आप अपने कार्यप्रवाह के लिए एक जोड़ते हैं तो डॉक अनुवादक द्वारा छोड़े जाने वाले पथों के लिए रिपॉजिटरी रूट पर .translate-ignore का उपयोग करें (.gitignore की तरह समान अवधारणा)।
डॉक्यूसॉरस थीम JSON
pnpm write-translations डॉक्यूसॉरस UI स्ट्रिंग को documentation/i18n/en/ में निकालता है। ai-i18n-tools translate-docs चरण (markdownOutput.style: "docusaurus" के साथ) प्रत्येक भाषा के अनुवादित JSON को markdown के साथ-साथ ai-i18n-tools.config.json के अनुसार भरता है।
समस्या निवारण
OPENROUTER_API_KEYसेट नहीं है — इसे निर्यात करें या रिपॉजिटरी रूट पर.env.localमें जोड़ें।- मॉडल / गुणवत्ता —
ai-i18n-tools.config.jsonमेंopenrouter.translationModelsऔर संबंधित विकल्पों को समायोजित करें। - शब्दकोश —
documentation/glossary-user.csvको संपादित करें या UI स्ट्रिंग को पुनः उत्पन्न करें और निष्कर्षण + अनुवाद कमांड को पुनः चलाएँ।
एक नई भाषा जोड़ना
documentation/docusaurus.config.tsमें डॉक्यूसॉरसi18n.localesऔरlocaleConfigsमें भाषा जोड़ें।ai-i18n-tools.config.json(रिपॉजिटरी रूट) मेंtargetLocalesमें समान भाषा जोड़ें।- रूट पर
pnpm i18n:generate-ui-languagesचलाएँ, फिर आवश्यकतानुसारpnpm i18n:extract/ अनुवाद कमांड चलाएँ।