Skip to main content

विकास


विकास मार्गदर्शिका

English मात्र सम्पादन गर्नुहोस्; अनुवादहरू स्वचालित रूपमा फैलिन्छन्

दस्तावेजहरू मात्र 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/: मुख्य एड‑अन कोड (background, options/popup UI, manifests, icons)
  • tests/: Vitest सुइट
  • website/: Docusaurus दस्तावेज (i18n website/i18n/de/... अन्तर्गत)

इन्स्टल र टुलिङ

  • रुट निर्भरताहरू इन्स्टल: npm ci
  • दस्तावेज (वैकल्पिक): cd website && npm ci
  • टार्गेटहरू पत्ता लगाउनुहोस्: make help

लाइभ डेभ (web‑ext run)

  • Firefox Desktop मा द्रुत लूप (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 event पेजहरू idle हुँदा निलम्बित हुन्छन्; कोड परिवर्तनपछि एड‑अन रीलोड गर्नुहोस्, वा 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स्थानीय build/preview आर्टिफ्याक्टहरू (tmp/, web-local-preview/, website/build/) हटाउनुहोस्।
commitढाँचा मिलाउनु, परीक्षण (i18n सहित) चलाउनु, changelog अद्यावधिक गर्नु, commit र push गर्नु।
eslintflat config मार्फत ESLint चलाउनुहोस् (npm run -s lint:eslint)।
helpसबै टार्गेटहरू एक‑पंक्ति डक्स सहित (sorted) सूचीबद्ध गर्नुहोस्।
lintsources/ मा web‑ext lint (अस्थायी manifest; ZIP हरू बेवास्ता; non‑fatal)।
menuटार्गेट र वैकल्पिक आर्गुमेन्टहरू छान्न इन्टरेक्टिभ मेनु।
packATN र LOCAL ZIPs निर्माण (linter चलाउँछ; packer स्क्रिप्ट कल गर्छ)।
prettierरिपोजिटोरीलाई स्थानमै ढाँचाबद्ध गर्नुहोस् (लेखन गर्छ)।
prettier_checkPrettier चेक मोडमा (लेखन हुँदैन); पुनःढाँचाबद्ध आवश्यक परे असफल हुन्छ।
prettier_writeprettier को उपनाम।
testPrettier (write), ESLint, अनि Vitest (configured भए coverage)।
test_i18ni18n‑मात्र परीक्षणहरू: एड‑अन placeholders/parity + वेबसाइट parity।
translate_apptranslation_app को उपनाम।
translation_appsources/_locales/en/messages.json बाट एप UI स्ट्रिङ अनुवाद गर्नुहोस्।
translate_web_docs_batchOpenAI Batch API मार्फत वेबसाइट दस्तावेजहरू अनुवाद गर्नुहोस् (प्राथमिक)।
translate_web_docs_syncवेबसाइट दस्तावेजहरू समकालिक रूपमा अनुवाद गर्नुहोस् (legacy, non-batch)।
translate_web_indextranslation_web_index को उपनाम।
translation_web_indexहोमपेज/navbar/footer 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 मा स्वतः serve; वैकल्पिक परीक्षण/लिंक‑चेक।
web_push_githubwebsite/build लाई gh-pages शाखामा push गर्नुहोस्।

विकल्पहरूको सिन्ट्याक्स

  • विकल्पहरू पास गर्न make <command> OPTS="…" प्रयोग गर्नुहोस् (उद्धरण सिफारिस)। तल हरेक टार्गेटमा उदाहरण प्रयोग देखाइएका छन्।

--

Locale build सुझावहरू

  • लोकेलहरूको उपसमूह मात्र निर्माण: 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.jsonsources/manifest_LOCAL.json दुवैमा भर्जन अद्यावधिक गर्नुहोस्
  • म्यानुअल इन्स्टल (डेभ): Thunderbird → Tools → Add‑ons and Themes → गियर → Install Add‑on From File… → बनेको ZIP छान्नुहोस्

परीक्षण

  • पूर्ण सुइट: make test (Vitest)
  • कभररेज (वैकल्पिक):
  • npm i -D @vitest/coverage-v8
  • make test चलाउनुहोस्; HTML प्रतिवेदनका लागि coverage/index.html खोल्नुहोस्
  • i18n मात्र: make test_i18n (UI keys/placeholders/titles + वेबसाइट per‑locale per‑doc parity with 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 मात्र, परीक्षण/लिंक‑चेक स्किप, push छैन: make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run"
  • सबै लोकेल, परीक्षण/लिंक‑चेक सहित, अनि push: make web_build_local_preview && make web_push_github
  • प्रकाशन अघि, अफलाइन‑सुरक्षित लिंक चेक चलाउनुहोस्: make web_build_linkcheck
  • i18n: English website/docs/*.md मा; जर्मन अनुवाद website/i18n/de/docusaurus-plugin-content-docs/current/*.md मा
  • खोज: यदि CI मा Algolia DocSearch env vars सेट छन् (DOCSEARCH_APP_ID, DOCSEARCH_API_KEY, DOCSEARCH_INDEX_NAME), साइटले Algolia search प्रयोग गर्छ; नभए स्थानीय search मा फिर्ता जान्छ। होमपेजमा, खोज बक्स खोल्न / वा Ctrl+K थिच्नुहोस्।

  • website/src/pages/donate.js
  • मार्ग: /donate (र /<locale>/donate)
  • व्यवहार:
  • वर्तमान मार्गमा लोकेल छ (जस्तै, /de/donate) भने, त्यही प्रयोग गर्नुहोस्
  • अन्यथा, navigator.languages र कन्फिगर गरिएका लोकेलहरूबाट उत्तम मिलान छान्नुहोस्; default लोकेलमा फिर्ता जानुहोस्
  • यहाँ पुनर्निर्देशन हुन्छ:
  • en/docs/donation
  • बाँकी → /<locale>/docs/donation
  • सही baseUrl ह्यान्डलिङका लागि useBaseUrl प्रयोग गर्छ
  • fallback का रूपमा meta refresh + noscript लिंक समावेश छ


पूर्वावलोकन सुझावहरू

  • Node preview सफासँग रोक्नुहोस्: http://localhost:<port>/__stop खोल्नुहोस् (Local server started पछि प्रिन्ट हुन्छ)।
  • MDX/JSX मा छविहरू लोड नहुने हो भने, साइटको baseUrl सम्मान गर्न useBaseUrl('/img/...') प्रयोग गर्नुहोस्।
  • पूर्वावलोकन पहिले सुरु हुन्छ; लिंक चेक त्यसपछि चल्छ र non‑blocking हुन्छ (भाँचिएका बाह्य लिंकहरूले preview रोक्दैन)।
  • उदाहरण पूर्वावलोकन URL: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (“Local server started” पछि प्रिन्ट हुन्छ)।
  • लिंक‑चेकमा बाह्य लिंक: केही बाह्य साइटहरू (जस्तै, addons.thunderbird.net) ले स्वचालित क्रलरहरू अवरुद्ध गर्छन् र लिंक चेकमा 403 देखिन सक्छ। पूर्वावलोकन अझै सुरु हुन्छ; यस्ता त्रुटिहरू बेवास्ता गर्न सुरक्षित छन्।

वेबसाइट अनुवाद गर्नुहोस्

तपाईं के अनुवाद गर्न सक्नुहुन्छ

  • वेबसाइट UI मात्र: होमपेज, navbar, footer, र अन्य UI स्ट्रिङहरू। हालका लागि दस्तावेज सामग्री English‑मात्र रहनेछ।

कहाँ सम्पादन गर्ने

  • website/i18n/<locale>/code.json सम्पादन गर्नुहोस् (en लाई सन्दर्भका रूपमा प्रयोग गर्नुहोस्)। {year}, {slash}, {ctrl}, {k}, {code1} जस्ता placeholders जस्ताका तस्तै राख्नुहोस्।

फाइलहरू सिर्जना वा रिफ्रेस गर्नुहोस्

  • सबै लोकेलका हराएका stub सिर्जना: npm --prefix website run i18n:stubs
  • English बाट stub हरू overwrite (नयाँ स्ट्रिङ थपेपछि): npm --prefix website run i18n:stubs:force
  • एउटै लोकेलका लागि विकल्प: npx --prefix website docusaurus write-translations --locale <locale>

होमपेज/navbar/footer UI स्ट्रिङहरू अनुवाद (OpenAI)

  • एकपटक प्रमाणपत्र सेट (shell वा .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"
  • विद्यमान मानहरू overwrite गर्नुहोस्: make translate_web_index OPTS="--force"

प्रमाणीकरण र पुन: प्रयास

  • अनुवाद स्क्रिप्टले JSON संरचना मान्य गर्छ, कर्ली‑ब्रेस placeholders जोगाउँछ, र URLs अपरिवर्तित रहन्छन् भन्ने सुनिश्चित गर्छ।
  • प्रमाणीकरण असफल हुँदा, फिडब्याकसहित 2 पटकसम्म पुन: प्रयास गर्छ, त्यसपछि विद्यमान मानहरू राख्छ।

आफ्नो लोकेल पूर्वावलोकन गर्नुहोस्

  • डेभ सर्भर: npm --prefix website run start
  • यहाँ जानुहोस्: http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/

बुझाउनु

  • सम्पादित code.json फाइल(हरू) सहित PR खोल्नुहोस्। परिवर्तनहरू केन्द्रित राख्नुहोस् र सकेसम्म चाँडो स्क्रिनसट समावेश गर्नुहोस्।

सुरक्षा र कन्फिगरेसन सुझावहरू

  • sources/manifest.json commit नगर्नुहोस् (build ले अस्थायी रूपमा सिर्जना गर्छ)
  • अपडेट च्यानल जोगाउन browser_specific_settings.gecko.id स्थिर राख्नुहोस्

सेटिङ्स स्थायित्व

  • भण्डारण: सबै प्रयोगकर्ता सेटिङहरू storage.local मा बस्छन् र एड‑अन अपडेटहरूमा पनि टिक्छन्।
  • इन्स्टल: कुनै कुञ्जी कडाइका साथ हराएको (undefined) हुँदा मात्र default लागू हुन्छ।
  • अपडेट: माइग्रेसनले हराएका कुञ्जीहरू मात्र भर्छ; विद्यमान मानहरू कहिल्यै overwrite हुँदैनन्।
  • स्किमा मार्कर: settingsVersion (हाल 1)।
  • कुञ्जीहरू र default:
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • कोड: sources/background.jsinitializeOrMigrateSettings()SCHEMA_VERSION हेर्नुहोस्।

डेभ कार्यप्रवाह (नयाँ सेटिङ थप्दा)

  • sources/background.js मा SCHEMA_VERSION बढाउनुहोस्।
  • initializeOrMigrateSettings() भित्र DEFAULTS वस्तुमा नयाँ कुञ्जी + default थप्नुहोस्।
  • default seed गर्दा "only-if-undefined" नियम प्रयोग गर्नुहोस्; विद्यमान मानहरू overwrite नगर्नुहोस्।
  • सेटिङ प्रयोगकर्ता‑देखिने भए, sources/options.js मा वायर गर्नुहोस् र स्थानीयकृत स्ट्रिङहरू थप्नुहोस्।
  • परीक्षणहरू थप्नुहोस्/समायोजन गर्नुहोस् (tests/background.settings.migration.test.js हेर्नुहोस्)।

म्यानुअल परीक्षण सुझावहरू

  • नयाँ इन्स्टल जस्तो simulate: एक्सटेन्सनको डेटा डाइरेक्टरी खाली गर्नुहोस् वा नयाँ प्रोफाइलबाट सुरु गर्नुहोस्।
  • अपडेट simulate: storage.local मा settingsVersion लाई 0 राख्नुहोस् र पुनः‑लोड गर्नुहोस्; विद्यमान मानहरू अपरिवर्तित रहन्छन् र हराएका कुञ्जीहरू मात्र थपिन्छन् भन्ने प्रमाणित गर्नुहोस्।

समस्या निवारण

  • Thunderbird 128 ESR वा नयाँ प्रयोग भएको सुनिश्चित गर्नुहोस्
  • रनटाइम समस्याका लागि Error Console प्रयोग गर्नुहोस्
  • यदि भण्डारित सेटिङहरू ठीकसँग लागू नभएको देखिएमा, Thunderbird पुनः सुरु गरेर फेरि प्रयास गर्नुहोस्। (Thunderbird ले सेसनहरूबीच अवस्था क्यास गर्न सक्छ; पुनः सुरु गर्दा ताजा सेटिङहरू लोड हुन्छन्।)

CI र कभररेज

  • GitHub Actions (CI — Tests) ले coverage thresholds (85% lines/functions/branches/statements) सहित vitest चलाउँछ। Threshold पूरा नभएमा, जॉब असफल हुन्छ।
  • workflow ले HTML प्रतिवेदन सहितको आर्टिफ्याक्ट coverage-html अपलोड गर्छ; run पेजबाट डाउनलोड गर्नुहोस् (Actions → latest run → Artifacts)।

योगदान

  • CONTRIBUTING.md हेर्नुहोस् (branch/commit/PR दिशानिर्देशका लागि)
  • टिप: परीक्षणका लागि छुट्टै Thunderbird विकास प्रोफाइल सिर्जना गर्नुहोस् ताकि दैनिक प्रोफाइलमा असर नपरोस्।

अनुवादहरू

  • ठूलो “all → all” अनुवाद जॉबहरू ढिला र महंगा हुन सक्छन्। सानो उपसमूहबाट सुरु गर्नुहोस् (उदाहरणका लागि, केही दस्तावेज र 1–2 लोकेल), परिणाम समीक्षा गर्नुहोस्, अनि विस्तार गर्नुहोस्।

  • पुन: प्रयास नीति: अनुवाद जॉबहरूले API त्रुटिहरूमा exponential backoff सहित 3 पटकसम्म retries गर्छन्; scripts/translate_web_docs_batch.jsscripts/translate_web_docs_sync.js हेर्नुहोस्।

दस्तावेजका लागि स्क्रिनसटहरू

  • छविहरू website/static/img/ अन्तर्गत राख्नुहोस्।

  • तिनीहरूलाई MD/MDX मा useBaseUrl('/img/<filename>') मार्फत सन्दर्भ गर्नुहोस् ताकि पाथहरू साइटको baseUrl सँग काम गर्नेछन्।

  • website/static/img/ अन्तर्गत छविहरू थपेपछि वा पुनः नामकरण गरेपछि, सबै सन्दर्भहरू अझै पनि useBaseUrl('/img/…') प्रयोग भएको र स्थानीय पूर्वावलोकनमा रेन्डर भएको पुष्टि गर्नुहोस्। Favicons

  • बहु‑साइज favicon.ico सबै build मार्गहरू (Make + स्क्रिप्टहरू) मा website/scripts/build-favicon.mjs मार्फत स्वचालित रूपमा उत्पन्न हुन्छ।

  • म्यानुअल चरण आवश्यक छैन; icon-*.png अद्यावधिक गर्नु पर्याप्त छ। समीक्षा सुझाव

  • अनुवादित दस्तावेजहरूमा front‑matter id अपरिवर्तित राख्नुहोस्; उपस्थित हुँदा titlesidebar_label मात्र अनुवाद गर्नुहोस्।

clean

  • उद्देश्य: स्थानीय build/preview आर्टिफ्याक्टहरू हटाउनु।
  • प्रयोग: make clean
  • हटाउँछ (भएमा):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • उद्देश्य: ढाँचा मिलाउनु, परीक्षण, changelog अद्यावधिक, commit, र push गर्नु।
  • प्रयोग: make commit
  • विवरण: Prettier (write), make test, make test_i18n चलाउँछ; staged diff हुँदा changelog थप्छ; origin/<branch> मा push गर्छ।

eslint

  • उद्देश्य: flat config मार्फत ESLint चलाउनु।
  • प्रयोग: make eslint

help

  • उद्देश्य: एक‑पंक्ति डक्स सहित सबै टार्गेट सूचीबद्ध गर्नु।
  • प्रयोग: make help

lint

  • उद्देश्य: web-ext प्रयोग गरी MailExtension लाई lint गर्नु।
  • प्रयोग: make lint
  • नोट्स: sources/manifest_LOCAL.jsonsources/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 (write), ESLint, अनि Vitest (इन्स्टल भए coverage) चलाउनु।
  • प्रयोग: make test

test_i18n

  • उद्देश्य: एड‑अन स्ट्रिङ र वेबसाइट दस्तावेजका लागि i18n‑केन्द्रित परीक्षण।
  • प्रयोग: make test_i18n
  • चलाउँछ: npm run test:i18nnpm run -s test:website-i18n

translate_app / translation_app

  • उद्देश्य: EN बाट अन्य लोकेलहरूमा एड‑अन UI स्ट्रिङहरू अनुवाद गर्नु।
  • प्रयोग: make translation_app OPTS="--locales all|de,fr"
  • नोट्स: कुञ्जी संरचना र placeholders जोगाउँछ; 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>"
    • Legacy positional अझै स्वीकार्य: OPTS="<doc|all> <lang|all>"
  • व्यवहार: JSONL निर्माण, अपलोड, 30 सेकेन्डमा पोल, परिणाम डाउनलोड, फाइल लेखाइ।
  • नोट: batch जॉब 24 घण्टासम्म लाग्न सक्छ (OpenAI को batch विन्डो अनुसार)। प्रत्येक पोलमा कन्सोलले elapsed time देखाउँछ।
  • Env: OPENAI_API_KEY (आवश्यक), वैकल्पिक OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (default 24h), BATCH_POLL_INTERVAL_MS
  • Legacy: translate_web_docs_sync
    • प्रयोग (फ्ल्यागहरू): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Legacy positional अझै स्वीकार्य: OPTS="<doc|all> <lang|all>"
  • व्यवहार: जोडी‑जोड़ी समकालिक अनुरोधहरू (batch संकलन बिना)।
  • नोट्स: OPTS छुट्दा इन्टरेक्टिभ प्रम्प्टहरू। दुवै मोडले code blocks/inline code जोगाउँछन् र front‑matter id अपरिवर्तित राख्छन्; लग: translation_web_batch.log (batch) वा translation_web_sync.log (sync)।

translate_web_index / translation_web_index

  • उद्देश्य: वेबसाइट UI स्ट्रिङहरू (होमपेज, navbar, footer) 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 export गर्नुहोस् (वैकल्पिक: OPENAI_MODEL=gpt-4o-mini)।
  • व्यवहार: JSON संरचना मान्य गर्छ, कर्ली‑ब्रेस placeholders जोगाउँछ, URLs अपरिवर्तित राख्छ, र प्रमाणीकरण त्रुटिमा फिडब्याकसहित retries गर्छ।

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 Pages baseUrl लाई / मा पुनर्लेखन गर्छ; दूरस्थ 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 preview सर्भर प्रयास गर्छ (scripts/preview-server.mjs, /__stop समर्थन), असफल भए python3 -m http.server मा फिर्ता; 8080–8090 मा serve; PID web-local-preview/.server.pid मा।

web_push_github

  • उद्देश्य: website/build लाई gh-pages शाखामा push गर्नु।
  • प्रयोग: make web_push_github

सुझाव: Makefile ले प्रयोग गर्ने प्याकेज म्यानेजर अधिलेखन गर्न NPM=… सेट गर्नुहोस् (default npm)।