Skip to main content

Haɓakawa


Jagorar Haɓakawa

Gyara Turanci kaɗai; fassarori za su biyo baya

Sabunta takardun bayani kawai a ƙarƙashin website/docs (English). Fassarori a ƙarƙashin website/i18n/<locale>/… ana ƙirƙira su ne ta atomatik, kada a gyara su da hannu. Yi amfani da ayyukan fassara (misali, make translate_web_docs_batch) don sake sabunta abun cikin da aka keɓance ga harsuna.

Abubuwan da ake buƙata

  • Node.js 22+ da npm (an gwada da Node 22)
  • Thunderbird 128 ESR ko sabo (don gwaji da hannu)

Tsarin Aiki (babban tsari)

  • Tushen (root): rubutun kunshin distribution_zip_packer.sh, takardu, hotunan allo
  • sources/: babban lambar ƙarin (background, UI na zaɓuɓɓuka/popup, manifests, icons)
  • tests/: jerin gwaje-gwajen Vitest
  • website/: takardun Docusaurus (tare da i18n a ƙarƙashin website/i18n/de/...)

Sanya & Kayan Aiki

  • Sanya dogaron tushen (root): npm ci
  • Takardu (zaɓi): cd website && npm ci
  • Bincika manufofi (targets): make help

Haɓakawa Kai Tsaye (web‑ext run)

  • Zagaye mai sauri a Firefox Desktop (gwajin UI na farko kawai):
  • npx web-ext run --source-dir sources --target=firefox-desktop
  • Gudanar da shi a Thunderbird (mafifici ga MailExtensions):
  • npx web-ext run --source-dir sources --start-url about:addons --firefox-binary "$(command -v thunderbird || echo /path/to/thunderbird)"
  • Shawarwari:
  • A riƙe Kuskuren Console na Thunderbird a buɗe (Tools → Developer Tools → Error Console).
  • Shafukan abubuwan MV3 suna dakata idan babu aiki; sake loda ƙarin bayan canjin lamba, ko bar web‑ext ya yi auto‑reload.
  • Wasu halaye na Firefox kaɗai na iya bambanta; koyaushe tabbatar a Thunderbird don daidaiton API.
  • Hanyoyin binary na Thunderbird (misalai):
  • Linux: thunderbird (misali, /usr/bin/thunderbird)
  • macOS: /Applications/Thunderbird.app/Contents/MacOS/thunderbird
  • Windows: "C:\\Program Files\\Mozilla Thunderbird\\thunderbird.exe"
  • Ware bayanin martaba: Yi amfani da wani sabon bayanin martaba na Thunderbird don haɓakawa don guje wa tasiri ga saitinka na yau da kullum.

Manufofin Make (a haruffa na alfabet)

Makefile yana daidaita kusan dukkanin hanyoyin dev. Gudanar da make help a kowane lokaci don takaitaccen layi guda na kowane manufa.

Shawara: gudanar da make ba tare da manufa ba zai buɗe menu na Whiptail mai sauƙi don zaɓar manufa.

ManufaBayani a layi ɗaya
cleanCire abubuwan gini/preview na gida (tmp/, web-local-preview/, website/build/).
commitTsara, gudanar da gwaje-gwaje (har da i18n), sabunta changelog, yi commit & push.
eslintGudanar da ESLint ta flat config (npm run -s lint:eslint).
helpJera duk manufofi da takaitaccen bayani (an tsara su).
lintweb‑ext lint akan sources/ (manifest na wucin gadi; ya yi watsi da ZIPs; ba ya faɗa).
menuMenu mai hulɗa don zaɓar manufa da zaɓaɓɓun muhawara.
packGina ZIPs na ATN & LOCAL (yana gudanar da linter; yana kira rubutun packer).
prettierTsara ma’ajiyar kai tsaye (yana rubuta canje-canje).
prettier_checkPrettier a yanayin duba (ba rubutu); ya gaza idan ana buƙatar sake tsara.
prettier_writeMadadin ga prettier.
testPrettier (rubuta), ESLint, sannan Vitest (coverage idan an saita).
test_i18nGwaje-gwajen i18n kaɗai: madadin/daidaito na ƙari + daidaito na gidan yanar gizo.
translate_appMadadin ga translation_app.
translation_appFassara kirtanin UI na app daga sources/_locales/en/messages.json.
translate_web_docs_batchFassara takardun gidan yanar gizo ta OpenAI Batch API (abin fifiko).
translate_web_docs_syncFassara takardun gidan yanar gizo kai tsaye (tsoho, ba batch).
translate_web_indexMadadin ga translation_web_index.
translation_web_indexFassara UI na gida/kan-naviga/ƙafafu (website/i18n/en/code.json → .../<lang>/code.json).
web_buildGina takardu zuwa website/build (yana goyon bayan --locales / BUILD_LOCALES).
web_build_linkcheckDuba hanyoyi ba tare da layi ba (yana tsallake HTTP[S] na nesa).
web_build_local_previewGidan gh‑pages na gida; yana aiki kai tsaye a 8080–8090; zaɓin gwaje-gwaje/duba-hanyoyi.
web_push_githubTura website/build zuwa reshen gh-pages.

Syntax na zaɓuɓɓuka

  • Yi amfani da make <command> OPTS="…" don wuce zaɓuɓɓuka (ana ba da shawarar ambato). Kowace manufa a ƙasa tana nuna misalin amfani.

--

Shawarwari kan ginin locale

  • Gina rukuni na wasu harsuna kaɗai: saita BUILD_LOCALES="en de" ko wuce OPTS="--locales en,de" zuwa manufofin yanar gizo.
  • Dubawa na takamaiman harshe (locale): http://localhost:<port>/Thunderbird-Reply-with-Attachments/de/.

Gina & Kunshin

  • Gina ZIPs: make pack
  • Yana samar da ATN da LOCAL ZIPs a tushen repo (kar a gyara abubuwan da aka gina da hannu)
  • Shawara: sabunta sigar a cikin sources/manifest_ATN.json da sources/manifest_LOCAL.json kafin kunshin
  • Sanya da hannu (dev): Thunderbird → Tools → Add‑ons and Themes → gear → Install Add‑on From File… → zaɓi ZIP da aka gina

Gwaji

  • Cikakken jerin: make test (Vitest)
  • Rufe gwaji (na zaɓi):
  • npm i -D @vitest/coverage-v8
  • Gudanar da make test; buɗe coverage/index.html don rahoton HTML
  • i18n kaɗai: make test_i18n (maɓallan UI/madadin/take + daidaito na gidan yanar gizo per‑locale per‑doc tare da binciken id/title/sidebar_label)

Dubawa & Log

  • Error Console: Tools → Developer Tools → Error Console
  • Juya logs masu faɗi yayin aiki:
  • Kunna: messenger.storage.local.set({ debug: true })
  • Kashe: messenger.storage.local.set({ debug: false })
  • Log suna bayyana yayin ƙirƙira/aika amsoshi

Takardu (gidan yanar gizo)

  • Sabar dev: cd website && npm run start
  • Gina shafin tsayayye: cd website && npm run build
  • Daidaitattun Make (a haruffa): make web_build, make web_build_linkcheck, make web_build_local_preview, make web_push_github
  • Misalan amfani:
  • EN kaɗai, tsallake gwaje-gwaje/duba-hanyoyi, babu push: make web_build_local_preview OPTS="--locales en --no-test --no-link-check --dry-run"
  • Dukkan harsuna, tare da gwaje-gwaje/duba-hanyoyi, sannan push: make web_build_local_preview && make web_push_github
  • Kafin bugawa, gudanar da duba hanyoyi ba tare da layi ba: make web_build_linkcheck.
  • i18n: Turanci yana cikin website/docs/*.md; fassarar Jamusanci a website/i18n/de/docusaurus-plugin-content-docs/current/*.md
  • Bincike: Idan an saita canje-canjen muhalli na Algolia DocSearch a CI (DOCSEARCH_APP_ID, DOCSEARCH_API_KEY, DOCSEARCH_INDEX_NAME), shafin yana amfani da binciken Algolia; in ba haka ba yana komawa binciken gida. A shafin gida, danna / ko Ctrl+K don buɗe akwatin bincike.

  • website/src/pages/donate.js
  • Hanya: /donate (da /<locale>/donate)
  • Halayya:
  • Idan hanyar yanzu tana da harshe (misali, /de/donate), yi amfani da shi
  • Idan ba haka ba, zaɓi mafi kusa daga navigator.languages vs harsunan da aka saita; koma ga harshe na tsoho
  • Yana karkatar da:
  • en/docs/donation
  • sauran → /<locale>/docs/donation
  • Yana amfani da useBaseUrl don daidaitaccen sarrafa baseUrl
  • Ya haɗa da meta refresh + hanyar noscript a matsayin madadin


Shawarwari na nunawa

  • Tsayar da Node preview cikin tsabta: buɗe http://localhost:<port>/__stop (ana bugawa bayan Local server started).
  • Idan hotuna ba sa lodi a MDX/JSX, yi amfani da useBaseUrl('/img/...') don girmama baseUrl na shafin.
  • Preview yana farawa a farko; duba hanyoyi yana zuwa daga baya kuma ba ya hana (hanyoyin waje da suka karye ba za su hana preview ba).
  • Misalin URL na preview: http://localhost:<port>/Thunderbird-Reply-with-Attachments/ (ana bugawa bayan “Local server started”).
  • Hanyoyin waje a duba-hanyoyi: Wasu shafuka (misali, addons.thunderbird.net) suna toshe masu bin diddigin atomatik kuma na iya nuna 403 a duba-hanyoyi. Preview zai ci gaba; ana iya yin watsi da waɗannan cikin aminci.

Fassara Yanar Gizon

Abubuwan da za ka iya fassara

  • UI na gidan yanar gizo kaɗai: shafin gida, navbar, footer, da sauran kirtanin UI. Abun cikin docs yanzu zai kasance na Turanci kaɗai.

Inda za a gyara

  • Gyara website/i18n/<locale>/code.json (yi amfani da en a matsayin abin koyi). Bar madadin kamar {year}, {slash}, {ctrl}, {k}, {code1} ba tare da canji ba.

Ƙirƙira ko sabunta fayiloli

  • Ƙirƙiri stub da suka ɓace ga duk harsuna: npm --prefix website run i18n:stubs
  • Rubuta stubs daga Turanci (bayan ƙara sababbin kirtani): npm --prefix website run i18n:stubs:force
  • Madadin don harshe guda: npx --prefix website docusaurus write-translations --locale <locale>

Fassara kirtanin UI na shafin gida/navbar/footer (OpenAI)

  • Saita takardun shaida sau ɗaya (shell ko .env):
  • export OPENAI_API_KEY=sk-...
  • Na zaɓi: export OPENAI_MODEL=gpt-4o-mini
  • Sau ɗaya (duk harsuna, tsallake en): make translate_web_index
  • Takaita zuwa wasu harsuna: make translate_web_index OPTS="--locales de,fr"
  • Rubuta ƙimomin da suke akwai: make translate_web_index OPTS="--force"

Tabbatarwa & ƙoƙarin sake gwadawa

  • Rubutun fassara yana tabbatar da tsari na JSON, yana adana madadin baka , kuma yana tabbatar da cewa URLs ba su canza ba.
  • Idan tabbaci ya gaza, zai sake gwadawa tare da ra’ayi har sau 2 kafin ya bar ƙimomin da suke akwai.

Duba harshenka

  • Sabar dev: npm --prefix website run start
  • Ziyarci http://localhost:3000/<locale>/Thunderbird-Reply-with-Attachments/

Miƙa

  • Buɗe PR tare da fayil(olin) code.json da aka gyara. Ka takaita canje-canje kuma haɗa hoton allo cikin sauri idan zai yiwu.

Shawarwari kan Tsaro & Saiti

  • Kada ka yi commit sources/manifest.json (wanda gini ke ƙirƙira na ɗan lokaci)
  • Ka bar browser_specific_settings.gecko.id ya kasance daidaitacce don kiyaye tashar sabuntawa

Dorewar Saituna

  • Ajiya: Dukkan saitunan mai amfani suna cikin storage.local kuma suna ci gaba bayan sabunta ƙarin.
  • Sanya: Ana amfani da tsoffin ƙima ne kawai idan maɓalli yana ɓace gaba ɗaya (undefined).
  • Sabuntawa: Hijira tana cike maɓallan da suka ɓace kaɗai; ba a taɓa share ƙimomin da suke akwai ba.
  • Alamar tsari: settingsVersion (yanzu 1).
  • Maɓallan da tsoffin ƙimomi:
  • blacklistPatterns: string[]['*intern*', '*secret*', '*passwor*']
  • confirmBeforeAdd: booleanfalse
  • confirmDefaultChoice: 'yes'|'no''yes'
  • warnOnBlacklistExcluded: booleantrue
  • Lamba: duba sources/background.jsinitializeOrMigrateSettings() da SCHEMA_VERSION.

Hanyan aiki na dev (ƙara sabon saitin)

  • Ƙara SCHEMA_VERSION a sources/background.js.
  • Ƙara sabon maɓalli + tsohon ƙima ga abin DEFAULTS a initializeOrMigrateSettings().
  • Yi amfani da ka’idar “kawai idan undefined” lokacin zuba tsoffin ƙima; kar a share ƙimomin da suke akwai.
  • Idan saitin yana bayyane ga mai amfani, haɗa shi a sources/options.js kuma ƙara kirtanin da aka fassara.
  • Ƙara/daidaita gwaje-gwaje (duba tests/background.settings.migration.test.js).

Shawarwari na gwaji da hannu

  • Kwaikwayon sabuwar shigarwa: share kundin bayanan faɗaɗa ko fara da sabon bayanin martaba.
  • Kwaikwayon sabuntawa: saita settingsVersion zuwa 0 a storage.local sannan sake loda; tabbatar ƙimomin da suke akwai ba su canza ba kuma an ƙara maɓallan da suka ɓace kaɗai.

Magance Matsaloli

  • Tabbatar Thunderbird yana 128 ESR ko sabo
  • Yi amfani da Error Console don matsalolin lokaci-na-aiki
  • Idan saitunan da aka adana alama ba sa aiki yadda ya kamata, sake kunna Thunderbird ka sake gwadawa. (Thunderbird na iya adana wani yanayi tsakanin zaman; sake kunnawa yana tabbatar da an loda saituna sabbi.)

CI & Rufe (Coverage)

  • GitHub Actions (CI — Tests) yana gudanar da vitest tare da ƙayyadaddun rufe gwaji (85% lines/functions/branches/statements). Idan ba a kai matakin ba, aikin zai gaza.
  • Aikin yana ɗora abin tari coverage-html tare da rahoton HTML; sauke shi daga shafin gudu (Actions → gudu na baya-bayan nan → Artifacts).

Bayar da Gudummawa

  • Duba CONTRIBUTING.md don jagororin reshe/commit/PR
  • Shawara: Ƙirƙiri wani bayanin martaba na haɓakawa na Thunderbird don gwaji don guje wa tasiri ga bayanin martabarka na yau da kullum.

Fassara

  • Gudanar da manyan ayyukan fassara “duka → duka” na iya zama jinkiri kuma masu tsada. Fara da rukunin ƙanƙani (misali, wasu docs da harsuna 1–2), duba sakamakon, sannan faɗaɗa.

  • Manufar sake gwadawa: ayyukan fassara suna yin ƙoƙarin har sau 3 tare da exponential backoff kan kurakuran API; duba scripts/translate_web_docs_batch.js da scripts/translate_web_docs_sync.js.

Hotunan allo don takardu

  • Ajiye hotuna a ƙarƙashin website/static/img/.

  • Kira su a MD/MDX ta useBaseUrl('/img/<filename>') domin hanyoyi su yi aiki da baseUrl na shafin.

  • Bayan ƙara ko sake sunan hotuna a ƙarƙashin website/static/img/, tabbatar duk nassoshi har yanzu suna amfani da useBaseUrl('/img/…') kuma suna bayyana a preview na gida. Favicons

  • favicon.ico mai girma da yawa ana ƙirƙira shi ta atomatik a duk hanyoyin gini (Make + rubutun) ta website/scripts/build-favicon.mjs.

  • Babu buƙatar mataki na hannu; sabunta icon-*.png ya isa. Shawarar bita

  • Bar id na front‑matter ba tare da canji ba a docs da aka fassara; fassara kawai title da sidebar_label idan suna akwai.

clean

  • Manufa: cire abubuwan gini/preview na gida.
  • Amfani: make clean
  • Yana cire (idan suna akwai):
  • tmp/
  • web-local-preview/
  • website/build/

commit

  • Manufa: tsara, gwada, sabunta changelog, yi commit, sannan push.
  • Amfani: make commit
  • Cikakkun bayanai: yana gudanar da Prettier (rubuta), make test, make test_i18n; yana ƙara changelog idan akwai bambance-bambancen da aka stage; yana tura zuwa origin/<branch>.

eslint

  • Manufa: gudanar da ESLint ta flat config.
  • Amfani: make eslint

help

  • Manufa: jera duk manufofi da takaitaccen bayani.
  • Amfani: make help

lint

  • Manufa: lint MailExtension ta amfani da web-ext.
  • Amfani: make lint
  • Bayanai: kwafin wucin gadi sources/manifest_LOCAL.jsonsources/manifest.json; yana watsi da ZIPs da aka gina; gargadi ba sa sa bututun ya gaza.

menu

  • Manufa: menu mai hulɗa don zaɓar manufa ta Make da zaɓaɓɓun muhawara.
  • Amfani: gudanar da make ba tare da muhawara ba.
  • Bayanai: idan whiptail bai samuwa ba, menu zai koma make help.

pack

  • Manufa: gina ZIPs na ATN da LOCAL (yana dogara da lint).
  • Amfani: make pack
  • Shawara: ƙara sigogi a duka sources/manifest_*.json kafin kunshin.

prettier

  • Manufa: tsara repo a wurin.
  • Amfani: make prettier

prettier_check

  • Manufa: tabbatar da tsari (ba rubutu).
  • Amfani: make prettier_check

prettier_write

  • Manufa: madadin ga prettier.
  • Amfani: make prettier_write

test

  • Manufa: gudanar da Prettier (rubuta), ESLint, sannan Vitest (coverage idan an shigar).
  • Amfani: make test

test_i18n

  • Manufa: gwaje-gwajen mayar da hankali kan i18n don kirtanin ƙari da takardun gidan yanar gizo.
  • Amfani: make test_i18n
  • Yana gudanar da: npm run test:i18n da npm run -s test:website-i18n.

translate_app / translation_app

  • Manufa: fassara kirtanin UI na ƙarin daga EN zuwa sauran harsuna.
  • Amfani: make translation_app OPTS="--locales all|de,fr"
  • Bayanai: yana kiyaye tsarin maɓalli da madadin; yana rubuta log zuwa translation_app.log. Sigarm rubutu: node scripts/translate_app.js --locales ….

translate_web_docs_batch / translate_web_docs_sync

  • Manufa: fassara takardun gidan yanar gizo daga website/docs/*.md zuwa website/i18n/<locale>/....
  • Abin fifiko: translate_web_docs_batch (OpenAI Batch API)
    • Amfani (tutoci): make translate_web_docs_batch OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Tsohuwar madaidaiciyar matsayi har yanzu ana karɓa: OPTS="<doc|all> <lang|all>"
  • Halayya: yana gina JSONL, ya ɗora, yana duba kowane sakan 30, yana zazzage sakamako, yana rubuta fayiloli.
  • Lura: aikin batch zai iya ɗaukar har zuwa sa’o’i 24 don kammalawa (dangane da taga batch na OpenAI). Console yana nuna lokaci da ya shuɗe a kowane dubawa.
  • Muhalli: OPENAI_API_KEY (tilas), na zaɓi OPENAI_MODEL, OPENAI_TEMPERATURE, OPENAI_BATCH_WINDOW (tsoho 24h), BATCH_POLL_INTERVAL_MS.
  • Tsoho: translate_web_docs_sync
    • Amfani (tutoci): make translate_web_docs_sync OPTS="--files <doc1,doc2|all> --locales <lang1,lang2|all>"
    • Tsohuwar madaidaiciyar matsayi har yanzu ana karɓa: OPTS="<doc|all> <lang|all>"
  • Halayya: buƙatun daidaitattun kowanne‑biyu kai tsaye (babu tarin batch).
  • Bayanai: Tambayoyin hulɗa idan OPTS an bari. Duka hanyoyin suna kiyaye toshe-lamba/inline code kuma suna barin id na front‑matter ba tare da canji ba; suna rubuta log zuwa translation_web_batch.log (batch) ko translation_web_sync.log (sync).

translate_web_index / translation_web_index

  • Manufa: fassara kirtanin UI na gidan yanar gizo (shafin gida, navbar, footer) daga website/i18n/en/code.json zuwa duk harsuna a ƙarƙashin website/i18n/<locale>/code.json (banda en).
  • Amfani: make translate_web_index ko make translate_web_index OPTS="--locales de,fr [--force]"
  • Bukatu: fitar da OPENAI_API_KEY (na zaɓi: OPENAI_MODEL=gpt-4o-mini).
  • Halayya: yana tabbatar da tsari na JSON, yana kiyaye madadin baka, yana bar URLs ba tare da canji ba, kuma yana sake gwadawa da ra’ayi idan akwai kurakuran tabbaci.

web_build

  • Manufa: gina shafin docs zuwa website/build.
  • Amfani: make web_build OPTS="--locales en|de,en|all" (ko saita BUILD_LOCALES="en de")
  • Ciki: node ./node_modules/@docusaurus/core/bin/docusaurus.mjs build [--locale …].
  • Dogaro: yana gudanar da npm ci a website/ idan website/node_modules/@docusaurus bai samuwa ba kawai.

web_build_linkcheck

  • Manufa: duba hanyoyi ba tare da layi ba.
  • Amfani: make web_build_linkcheck OPTS="--locales en|all"
  • Bayanai: yana gina zuwa tmp_linkcheck_web_pages; yana sake rubuta baseUrl na GH Pages zuwa /; yana tsallake hanyoyin HTTP(S) na nesa.

web_build_local_preview

  • Manufa: gidan gh‑pages na gida tare da zaɓin gwaje-gwaje/duba-hanyoyi.
  • Amfani: make web_build_local_preview OPTS="--locales en|all [--no-test] [--no-link-check] [--dry-run] [--no-serve]"
  • Halayya: yana gwada sabar preview na Node a farko (scripts/preview-server.mjs, yana goyon bayan /__stop), sannan ya koma python3 -m http.server; yana ba da sabis a 8080–8090; PID a web-local-preview/.server.pid.

web_push_github

  • Manufa: tura website/build zuwa reshen gh-pages.
  • Amfani: make web_push_github

Shawara: saita NPM=… don sauya mai sarrafa kunshin da Makefile yake amfani da shi (tsoho npm).