विकास
विकास गाइड
दस्तावेज़ीकरण केवल website/docs (English) के अंतर्गत अपडेट करें। website/i18n/<locale>/… के अंतर्गत अनुवाद जनरेट होते हैं और इन्हें मैन्युअली संपादित नहीं करना चाहिए। लोकलाइज़्ड सामग्री को रिफ्रेश करने के लिए अनुवाद कार्यों का उपयोग करें (जैसे, make translate_web_docs_batch)।
पूर्वापेक्षाएँ
- Node.js 22+ और npm (Node 22 के साथ परीक्षण किया गया)
- Thunderbird 128 ESR या नया (मैन्युअल परीक्षण के लिए)
प्रोजेक्ट लेआउट (हाई‑लेवल)
- रूट: पैकेजिंग स्क्रिप्ट
distribution_zip_packer.sh, डॉक्स, स्क्रीनशॉट्स sources/: मुख्य ऐड‑ऑन कोड (बैकग्राउंड, विकल्प/पॉपअप UI, मैनिफेस्ट, आइकन)tests/: Vitest सूटwebsite/: Docusaurus डॉक्स (i18nwebsite/i18n/de/...के अंतर्गत)
इंस्टॉल और टूलिंग
- रूट डिपेंडेंसी इंस्टॉल करें:
npm ci - डॉक्स (वैकल्पिक):
cd website && npm ci - टार्गेट्स देखें:
make help
लाइव डेवलपमेंट (web‑ext run)
- Firefox डेस्कटॉप में त्वरित लूप (केवल UI स्मोक‑टेस्ट):
npx web-ext run --source-dir sources --target=firefox-desktop- Thunderbird में चलाएँ (MailExtensions के लिए प्राथमिक):
npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"- टिप्स:
- Thunderbird की Error Console खुली रखें (Tools → Developer Tools → Error Console)।
- MV3 इवेंट पेज निष्क्रिय होने पर निलंबित रहते हैं; कोड बदलने के बाद ऐड‑ऑन को रीलोड करें, या web‑ext को ऑटो‑रीलोड करने दें।
- कुछ केवल‑Firefox व्यवहार अलग हो सकते हैं; API समानता के लिए हमेशा Thunderbird में सत्यापित करें।
- Thunderbird बाइनरी पाथ (उदाहरण):
- Linux:
thunderbird(जैसे,/usr/bin/thunderbird) - macOS:
/Applications/Thunderbird.app/Contents/MacOS/thunderbird - Windows:
"C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe" - प्रोफ़ाइल आइसोलेशन: अपनी दैनिक सेटअप पर प्रभाव से बचने के लिए डेवलपमेंट हेतु अलग Thunderbird प्रोफ़ाइल का उपयोग करें।
Make टार्गेट्स (वर्णक्रमानुसार)
Makefile सामान्य डेवलपमेंट फ्लो को मानकीकृत करता है। हर टार्गेट का एक‑लाइन सारांश पाने के लिए कभी भी make help चलाएँ।
टिप: बिना टार्गेट के make चलाने पर टार्गेट चुनने हेतु एक साधारण Whiptail मेन्यू खुलता है।
| टार्गेट | एक‑लाइन विवरण |
|---|---|
clean | लोकल बिल्ड/प्रीव्यू आर्टिफैक्ट्स हटाएँ (tmp/, web-local-preview/, website/build/). |
commit | फॉर्मेट करें, टेस्ट चलाएँ (i18n सहित), चेंजलॉग अपडेट करें, कमिट करें और पुश करें। |
eslint | फ्लैट कॉन्फ़िग (npm run -s lint:eslint) के जरिए ESLint चलाएँ। |
help | एक‑लाइन डॉक्स के साथ सभी टार्गेट्स सूचीबद्ध करें (सॉर्टेड)। |
lint | sources/ पर web‑ext lint (अस्थायी मैनिफेस्ट; ZIPs को नज़रअंदाज़; नॉन‑फेटल)। |
menu | टार्गेट और वैकल्पिक आर्ग्युमेंट चुनने के लिए इंटरैक्टिव मेन्यू। |
pack | ATN और LOCAL ZIPs बनाता है (लिंटर चलाता है; पैकर स्क्रिप्ट कॉल करता है)। |
prettier | रिपॉज़िटरी को वहीं फॉर्मेट करें (परिवर्तन लिखे जाते हैं)। |
prettier_check | Prettier चेक मोड में (कोई लिखाई नहीं); रिफॉर्मेट की ज़रूरत हो तो विफल। |
prettier_write | prettier का उपनाम। |
test | Prettier (लिखाई), फिर ESLint, फिर Vitest (यदि कॉन्फ़िगर किया हो तो कवरेज)। |
test_i18n | केवल i18n टेस्ट: ऐड‑ऑन प्लेसहोल्डर/पैरिटी + वेबसाइट पैरिटी। |
translate_app | translation_app का उपनाम। |
translation_app | ऐप UI स्ट्रिंग्स को sources/_locales/en/messages.json से अनुवादित करें। |
translate_web_docs_batch | OpenAI Batch API के माध्यम से वेबसाइट डॉक्स का अनुवाद (प्राथमिक)। |
translate_web_docs_sync | वेबसाइट ड ॉक्स को सिंक्रोनस रूप से अनुवादित करें (लीगेसी, नॉन‑बैच)। |
translate_web_index | translation_web_index का उपनाम। |
translation_web_index | होमपेज/नेवबार/फूटर UI का अनुवाद (website/i18n/en/code.json → .../<lang>/code.json)। |
web_build | डॉक्स को website/build में बिल्ड करें (--locales / BUILD_LOCALES समर्थित)। |
web_build_linkcheck | ऑफ़लाइन‑सेफ लिंक चेक (रिमोट HTTP[S] को छोड़ता है)। |
web_build_local_preview | लोकल gh‑pages प्रीव्यू; 8080–8090 पर ऑटो‑सर्व; वैकल्पिक टेस्ट/लिंक‑चेक। |
web_push_github | website/build को gh-pages ब्रांच पर पुश करें। |
विकल्पों के लिए सिन्टैक्स
- विकल्प पास करने के लिए
make <command> OPTS="…"का उपयोग करें (कोट्स अनुशंसित)। नीचे प्रत्येक टार्गेट उदाहरण उपयोग दिखाता है।
--
लोकैल बिल्ड टिप्स
- लोकैलों का एक सबसेट बिल्ड करें:
BUILD_LOCALES="en de"सेट करें या वेब टार्गेट्स कोOPTS="--locales en,de"पास करें। - किसी विशिष्ट लोकैल का प्रीव्यू:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.
बिल्ड और पैकेज
- ZIPs बनाएं:
make pack - रेपो रूट में ATN और LOCAL ZIPs उत्पन्न करता है (आर्टिफैक्ट्स को हाथ से संपादित न करें)
- टिप: पैकेजिंग से पहले
sources/manifest_ATN.jsonऔरsources/manifest_LOCAL.jsonदोनों में संस्करण अपडेट करें - मैन्युअल इंस्टॉल (डेव): Thunderbird → Tools → Add‑ons and Themes → गियर → Install Add‑on From File… → बनी हुई ZIP चुनें
टेस्ट
- पूर्ण सूट:
make test(Vitest) - कवरेज (वैकल्पिक):
npm i -D @vitest/coverage-v8make testचलाएँ; HTML रिपोर्ट के लिएcoverage/index.htmlखोलें- केवल i18n:
make test_i18n(UI keys/placeholders/titles + वेबसाइट प्रति‑लोकैल प्रति‑डॉक पैरिटी, id/title/sidebar_label जाँच सहित)
डीबगिंग और लॉग्स
- Error Console: Tools → Developer Tools → Error Console
- रनटाइम पर वर्बोज़ लॉग टॉगल करें:
- सक्रिय करें:
messenger.storage.local.set({ debug: true }) - निष्क्रिय करें:
messenger.storage.local.set({ debug: false }) - लॉग उत्तर लिखते/भेजते समय दिखाई देते हैं
डॉक्स (वेबसाइट)
- डेव सर्वर:
cd website && npm run start - स्टैटिक साइट बनाएं:
cd website && npm run build - Make समकक्ष (वर्णक्रमानुसार):
make web_build,make web_build_linkcheck,make web_build_local_preview,make web_push_github - उपयोग उदाहरण:
- केवल EN, टेस्ट/लिंक‑चेक छोड़ें, कोई पुश नहीं:
make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run" - सभी लोकैल, टेस्ट/लिंक‑चेक सहित, फिर पुश:
make web_build_local_preview && make web_push_github - प्रकाशित करने से पहले, ऑफ़लाइन‑सेफ लिंक चेक चलाएँ:
make web_build_linkcheck. - i18n: अंग्रेज़ी
website/docs/*.mdमें है; जर्मन अनुवादwebsite/i18n/de/docusaurus-plugin-content-docs/current/*.mdमें हैं - खोज: यदि Algolia DocSearch env वेरिएबल CI में सेट हैं (
DOCSEARCH_APP_ID,DOCSEARCH_API_KEY,DOCSEARCH_INDEX_NAME), तो साइट Algolia सर्च का उपयोग करती है; अन्यथा यह लोकल सर्च पर फॉलबैक करती है। होमपेज पर, सर्च बॉक्स खोलने के लिए/याCtrl+Kदबाएँ।
दान रीडायरेक्ट रूट
website/src/pages/donate.js- रूट:
/donate(और/<locale>/donate) - व्यवहार:
- यदि वर्तमान रूट में कोई लोकैल है (जैसे,
/de/donate), तो उसी का उपयोग करें - अन्यथा,
navigator.languagesबनाम कॉन्फ़िगर्ड लोकैल में से सर्वश्रेष्ठ मेल चुनें; डिफ़ॉल्ट लोकैल पर फॉलबैक करें - यहाँ रीडायरेक्ट करता है:
en→/docs/donation- अन्य →
/<locale>/docs/donation - उपयुक्त baseUrl हैंडलिंग के लिए
useBaseUrlका उपयोग करता है - फॉलबैक के रूप में meta refresh +
noscriptलिंक शामिल है
प्रीव्यू टिप्स
- Node प्रीव्यू को साफ़ तरीके से रोकें:
http://localhost:<port>/__stopखोलें (Local server startedके बाद प्रिंट होता है)। - यदि MDX/JSX में इमेज लोड नहीं होतीं, तो साइट
baseUrlका सम्मान करने के लिएuseBaseUrl('/img/...')का उपयोग करें। - प्रीव्यू पहले शुरू होता है; लिंक चेक बाद में चलता है और नॉन‑ब्लॉकिंग है (टूटी बाहरी लिंक प्रीव्यू को नहीं रोकेंगी)।
- उदाहरण प्रीव्यू URL:
http://localhost:<port>/Thunderbird-Reply-with-Attachments/(“Local server started” के बाद प्रिंट होता है)। - लिंक‑चेक में बाहरी लिंक: कुछ बाहरी साइटें (जैसे, addons.thunderbird.net) स्वचालित क्रॉलर को ब्लॉक करती हैं और लिंक चेक में 403 दिखा सकती हैं। प्रीव्यू फिर भी शुरू होता है; इन्हें नज़रअंदाज़ करना सुरक्षित है।
वेबसाइट का अनुवाद करें
आप क्या अनुवाद कर सकते हैं
- केवल वेबसाइट UI: होमपेज, नेवबार, फूटर, और अन्य UI स् ट्रिंग्स। फिलहाल डॉक्स सामग्री अंग्रेज़ी‑मात्र रहेगी।
कहाँ संपादित करें
website/i18n/<locale>/code.jsonसंपादित करें (संदर्भ के रूप मेंenका उपयोग करें)।{year},{slash},{ctrl},{k},{code1}जैसे प्लेसहोल्डर अपरिवर्तित रखें।
फ़ाइलें जनरेट या रिफ्रेश करें
- सभी लोकैल के लिए मिसिंग स्टब बनाएँ:
npm --prefix website run i18n:stubs - अंग्रेज़ी से स्टब ओवरराइट करें (नई स्ट्रिंग्स जोड़ने के बाद):
npm --prefix website run i18n:stubs:force - एक ही लोकैल के लिए वैकल्पिक:
npx --prefix website docusaurus write-translations --locale <locale>
होमपेज/नेवबार/फूटर UI स्ट्रिंग्स का अनुवाद (OpenAI)
- क्रेडेंशियल्स एक बार सेट करें (शेल या .env):
export OPENAI_API_KEY=sk-...- वैकल्पिक:
export OPENAI_MODEL=gpt-4o-mini - एक‑बार में (सभी लोकैल, en छोड़ें):
make translate_web_index - विशिष्ट लोकैल तक सीमित करें:
make translate_web_index OPTS="--locales de,fr" - मौजूदा मान ओवरराइट करें:
make translate_web_index OPTS="--force"
मान्यकरण और पुनर्प्रयास
- अनुवाद स्क्रिप्ट JSON संरचना को वैध करती है, कर्ली‑ब्रेस प्लेसहोल्डर सुरक्षित रखती है, और सुनिश्चित करती है कि URLs अपरिवर्तित रहें।
- वैलिडेशन विफल होने पर, यह मौजूदा मान रखने से पहले फीडबैक के साथ अधिकतम 2 बार पुनः प्रयास करती है।
अपना लोकैल प्रीव्यू करें
- डेव सर्वर:
npm --prefix website run start - यहाँ जाएँ:
http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/
सबमिट करना
- संपादित
code.jsonफ़ाइल(फ़ाइलों) के साथ एक PR खोलें। बदलाव केंद्रित रखें और संभव हो तो एक त्वरित स्क्रीनशॉट शामिल करें।
सुरक्षा और कॉन्फ़िगरेशन टिप्स
sources/manifest.jsonकमिट न करें (बिल्ड द्वारा अस्थायी रूप से बनाया जाता है)- अपडेट चैनल सुरक्षित रखने के लिए
browser_specific_settings.gecko.idको स्थिर रखें
सेटिंग्स स्थायित्व
- स्टोरेज: सभी यूज़र सेटिंग्स
storage.localमें रहती हैं और ऐड‑ऑन अपडेट्स के बीच सुरक्षित रहती हैं। - इंस्टॉल: डिफ़ॉल्ट केवल तब लागू होते हैं जब कोई कुंजी सख़्ती से गुम हो (undefined)।
- अपडेट: माइग्रेशन केवल गुम कुंजियों को भरता है; मौजूदा मान कभी ओवरराइट नहीं होते।
- स्कीमा मार्कर:
settingsVersion(वर्तमान में1)। - कुंजियाँ और डिफ़ॉल्ट:
blacklistPatterns: string[]→['*intern*', '*secret*', '*passwor*']confirmBeforeAdd: boolean→falseconfirmDefaultChoice: 'yes'|'no'→'yes'warnOnBlacklistExcluded: boolean→true- कोड: देखें
sources/background.js→initializeOrMigrateSettings()औरSCHEMA_VERSION.
डेव वर्कफ़्लो (नई सेटिंग जोड़ना)
sources/background.jsमेंSCHEMA_VERSIONबढ़ाएँ।- नई कुंजी + डिफ़ॉल्ट को
initializeOrMigrateSettings()मेंDEFAULTSऑब्जेक्ट में जोड़ें। - डिफ़ॉल्ट भरते समय "only-if-undefined" नियम का उपयोग करें; मौजूदा मान ओवरराइट न करें।
- यदि सेटिंग यूज़र‑दृश्य है, तो उसे
sources/options.jsमें वायर करें और लोकलाइज़्ड स्ट्रिंग्स जोड़ें। - टेस्ट जोड़ें/समायोजित करें (देखें
tests/background.settings.migration.test.js)।
मैन्युअल परीक्षण टिप्स
- फ़्रेश इंस्टॉल का सिमुलेशन करें: एक्सटेंशन की डेटा डायरेक्टरी साफ़ करें या नई प्रोफ़ाइल से शुरू करें।
- अपडेट का सिमुलेशन करें:
storage.localमेंsettingsVersionको0पर सेट करें और पुनः लोड करें; सुनिश्चित करें कि मौजूदा मान अपरिवर्तित रहें और केवल ग ुम कुंजियाँ जोड़ी जाएँ।
समस्या निवारण
- सुनिश्चित करें कि Thunderbird 128 ESR या नया हो
- रनटाइम समस्याओं के लिए Error Console का उपयोग करें
- यदि संग्रहित सेटिंग्स ठीक से लागू नहीं लगतीं, तो Thunderbird पुनरारंभ करें और फिर से प्रयास करें। (Thunderbird सत्रों के बीच स्टेट कैश कर सकता है; पुनरारंभ से ताज़ा सेटिंग्स लोड होती हैं।)
CI और कवरेज
- GitHub Actions (
CI — Tests) vitest को कवरेज थ्रेशहोल्ड (85% lines/functions/branches/statements) के साथ चलाता है। यदि थ्रेशहोल्ड पूरे नहीं होते, तो जॉब विफल हो जाता है। - वर्कफ़्लो HTML रिपोर्ट के साथ
coverage-htmlनामक आर्टिफैक्ट अपलोड करता है; रन पेज से डाउनलोड करें (Actions → नवीनतम रन → Artifacts)।
योगदान
- ब्रांच/कमिट/PR दिशानिर्देशों के लिए CONTRIBUTING.md देखें
- टिप: अपने दैनिक प्रोफ़ाइल पर प्रभाव से बचने के लिए परीक्षण हेतु अलग Thunderbird डेवलपमेंट प्रोफ़ाइल बनाएँ।
अनुवाद
- बड़े “all → all” अनुवाद कार्य धीमे और महँगे हो सकते हैं। किसी सबसेट से शुरू करें (जैसे, कुछ डॉक्स और 1–2 लोकैल), परिणाम की समीक्षा करें, फिर विस्तार करें।
- पुनर्प्रयास नीति: अनुवाद कार्य API त्रुटियों पर अधिकतम 3 पुनर्प्रयास एक्सपोनेंशियल बैकऑफ़ के साथ करते हैं;
scripts/translate_web_docs_batch.jsऔरscripts/translate_web_docs_sync.jsदेखें।
डॉक्स हेतु स्क्रीनशॉट्स
-
इमे जेस को
website/static/img/के अंतर्गत रखें। -
उन्हें MD/MDX में
useBaseUrl('/img/<filename>')के माध्यम से संदर्भित करें ताकि पाथ साइटbaseUrlके साथ काम करें। -
website/static/img/के अंतर्गत इमेज जोड़ने या नाम बदलने के बाद, सुनिश्चित करें कि सभी संदर्भ अब भीuseBaseUrl('/img/…')का उपयोग करते हैं और लोकल प्रीव्यू में रेंडर होते हैं। फ़ेविकॉन -
मल्टी‑साइज़
favicon.icoसभी बिल्ड पाथ (Make + स्क्रिप्ट्स) मेंwebsite/scripts/build-favicon.mjsके ज़रिए स्वतः जनरेट होता है। -
कोई मैन्युअल कदम आवश्यक नहीं;
icon-*.pngअपडेट करना पर्याप्त है। समीक्षा टिप -
अनुवादित डॉक्स में फ्रंट‑मैटर
idअपरिवर्तित रखें; जब मौजूद हो तो केवलtitleऔरsidebar_labelका अनुवाद करें।
clean
- उद्देश्य: लोकल बिल्ड/प्रीव्यू आर्टिफैक्ट्स हटाना।
- उपयोग:
make clean - हटाता है (यदि मौजूद हो):
tmp/web-local-preview/website/build/
commit
- उद्देश्य: फॉर्मेट, टेस्ट, चेंजलॉग अपडेट, कमिट, और पुश।
- उपयोग:
make commit - विवरण: Prettier (लिखाई),
make test,make test_i18nचलाता है; स्टेज्ड डिफ़ होने पर चेंजलॉग जोड़ता है;origin/<branch>पर पुश करता है।
eslint
- उद्देश्य: फ्लैट कॉन्फ़िग के जरिए ESLint चलाना।
- उपयोग:
make eslint
help
- उद्देश्य: एक‑लाइन डॉक्स के साथ सभी टार्गेट्स सूचीबद्ध करना।
- उपयोग:
make help
lint
- उद्देश्य:
web-extका उपयोग करके MailExtension को लिंट करना। - उपयोग:
make lint - नोट्स:
sources/manifest_LOCAL.json→sources/manifest.jsonअस्थायी‑कॉपी करता है; बनी हुई ZIPs को नज़रअंदाज़ करता है; चेतावनियाँ पाइपलाइन को विफल नहीं करतीं।
menu
- उद्देश्य: Make टार्गेट और वैकल्पिक आर्ग्युमेंट चुनने के लिए इंटरैक्टिव मेन्यू।
- उपयोग: बिना आर्ग्युमेंट्स के
makeचलाएँ। - नोट्स: यदि
whiptailउपलब्ध नहीं है, तो मेन्यूmake helpपर फॉलबैक करता है।
pack
- उद्देश्य: ATN और LOCAL ZIPs बनाना (
lintपर निर्भर)। - उपयोग:
make pack - टिप: पैकेजिंग से पहले दोनों
sources/manifest_*.jsonमें वर्ज़न बढ़ाएँ।
prettier
- उद्देश्य: रेपो को वहीं फॉर्मेट करना।
- उपयोग:
make prettier
prettier_check
- उद्देश्य: फ़ॉर्मैटिंग सत्यापित करना (कोई लिखाई नहीं)।
- उपयोग:
make prettier_check
prettier_write
- उद्देश्य:
prettierका उपनाम। - उपयोग:
make prettier_write
test
- उद्देश्य: Prettier (लिखाई), ESLint, फिर Vitest (यदि इंस्टॉल हो तो कवरेज) चलाना।
- उपयोग:
make test
test_i18n
- उद्देश्य: ऐड‑ऑन स्ट्रिंग्स और वेबसाइट डॉक्स के लिए i18n‑केंद्रित टेस्ट।
- उपयोग:
make test_i18n - चलाता है:
npm run test:i18nऔरnpm run -s test:website-i18n.
translate_app / translation_app
- उद्देश्य: EN से अन्य लोकैलों में ऐड‑ऑन UI स्ट्रिंग्स का अनुवाद।
- उपयोग:
make translation_app OPTS="--locales all|de,fr" - नोट्स: कुंजी संरचना और प्लेसहोल्डर सुरक्षित रखता है;
translation_app.logमें लॉग करता है। स्क्रिप्ट रूप:node scripts/translate_app.js --locales ….
translate_web_docs_batch / translate_web_docs_sync
- उद्देश्य: वेबसाइट डॉक्स को
website/docs/*.mdसेwebsite/i18n/<locale>/...में अनुवादित करना। - प्राथमिक:
translate_web_docs_batch(OpenAI Batch API)- उपयोग (फ्लैग्स):
make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - लीगेसी पॉज़िशनल अब भी स्वीकार्य है:
OPTS="<doc|all> <lang|all>"
- उपयोग (फ्लैग्स):
- व्यवहार: JSONL बनाता है, अपलोड करता है, हर 30s पर पोल करता है, परिणाम डाउनलोड करता है, फ़ाइलें लिखता है।
- नोट: बैच जॉब को पूरा होने में 24 घंटे तक लग सकते हैं (OpenAI के बैच विंडो अनुसार)। कंसोल प्रत्येक पोल पर बीता समय दिखाता है।
- पर्यावरण:
OPENAI_API_KEY(अनिवार्य), वैकल्पिकOPENAI_MODEL,OPENAI_TEMPERATURE,OPENAI_BATCH_WINDOW(डिफ़ॉल्ट 24h),BATCH_POLL_INTERVAL_MS. - लीगेसी:
translate_web_docs_sync- उपयोग (फ्लैग्स):
make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>" - लीगेसी पॉज़िशनल अब भी स्वीकार्य है:
OPTS="<doc|all> <lang|all>"
- उपयोग (फ्लैग्स):
- व्यवह ार: प्रति‑युग्म सिंक्रोनस अनुरोध (कोई बैच एग्रीगेशन नहीं)।
- नोट्स:
OPTSछोड़े जाने पर इंटरैक्टिव प्रॉम्प्ट्स। दोनों मोड कोड ब्लॉक्स/इनलाइन कोड सुरक्षित रखते हैं और फ्रंट‑मैटरidअपरिवर्तित रखते हैं; लॉगtranslation_web_batch.log(बैच) याtranslation_web_sync.log(सिंक) में होता है।
translate_web_index / translation_web_index
- उद्देश्य: वेबसाइट UI स्ट्रिंग्स (होमपेज, नेवबार, फूटर) को
website/i18n/en/code.jsonसेwebsite/i18n/<locale>/code.jsonके अंतर्गत सभी लोकैलों में अनुवाद करना (enको छोड़कर)। - उपयोग:
make translate_web_indexयाmake translate_web_index OPTS="--locales de,fr [--force]" - आवश्यकताएँ:
OPENAI_API_KEYएक्सपोर्ट करें (वैकल्पिक:OPENAI_MODEL=gpt-4o-mini)। - व्यवहार: JSON संरचना वैध करता है, कर्ली‑ब्रेस प्लेसहोल्डर सुरक्ष ित रखता है, URLs अपरिवर्तित रखता है, और वैलिडेशन त्रुटियों पर फीडबैक के साथ पुनः प्रयास करता है।
web_build
- उद्देश्य: डॉक्स साइट को
website/buildमें बिल्ड करना। - उपयोग:
make web_build OPTS="--locales en|de,en|all"(याBUILD_LOCALES="en de"सेट करें) - आंतरिक:
node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …]. - डिप्स:
website/node_modules/@docusaurusगुम होने पर हीwebsite/मेंnpm ciचलाता है।
web_build_linkcheck
- उद्देश्य: ऑफ़लाइन‑सेफ लिंक चेक।
- उपयोग:
make web_build_linkcheck OPTS="--locales en|all" - नोट्स:
tmp_linkcheck_web_pagesमें बिल्ड करता है; GH PagesbaseUrlको/में री‑राइट करता है; रिमोट HTTP(S) लिंक छोड़ता है।
web_build_local_preview
- उद्देश्य: वैकल्पिक टेस्ट/लिंक‑चेक के साथ लोकल gh‑pages प्रीव्यू।
- उपयोग:
make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]" - व्यवहार: पहले Node प्रीव्यू सर्वर आज़माता है (
scripts/preview-server.mjs,/__stopसमर्थित), फिरpython3 -m http.serverपर फॉलबैक; 8080–8090 पर सर्व करता है; PIDweb-local-preview/.server.pidपर।
web_push_github
- उद्देश्य:
website/buildकोgh-pagesब्रांच पर पुश करना। - उपयोग:
make web_push_github
टिप: Makefile द्वारा उपयोग किए जाने वाले पैकेज मैनेजर को ओवरराइड करने के लिए NPM=… सेट करें (डिफ़ॉल्ट npm)।