ການຕັ້ງຄ່າການແປພາສາ
ການແປເອກະສານຂອງ darktable ແມ່ນຖືກຈັດການຜ່ານ Weblate.
🔗ພາບລວມຂອງການຕັ້ງຄ່າ ແລະ ການໄຫຼຂອງຂໍ້ມູນສຳລັບການແປໂດຍໃຊ້ Weblate
ສະຫຼຸບໂດຍຫຍໍ້:
- ເອກະສານຫຼັກແມ່ນເປັນພາສາອັງກິດໃນໄຟລ໌ .md ທີ່ຢູ່ໃນ
content/*.md. - ຈາກນັ້ນ ໄຟລ໌ POT (
po/content.pot) ທີ່ລວມເອົາຂໍ້ຄວາມ ທີ່ສາມາດແປໄດ້ ທັງໝົດຈະຖືກສ້າງຂຶ້ນ. - Weblate ຈະຈັດການໄຟລ໌ PO ຂອງແຕ່ລະພາສາ (
po/content.{lang}.po) ເຊິ່ງບັນຈຸຂໍ້ຄວາມ ທີ່ແປແລ້ວ. - ເມື່ອນຳເອກະສານໄປໃຊ້, ໄຟລ໌ .md ສະເພາະແຕ່ລະພາສາຈະຖືກສ້າງຂຶ້ນໂດຍໃຊ້
generate-translations.shເຊິ່ງ Hugo ຈະນຳໄປສະແດງຜົນເປັນໄຟລ໌ .html, EPUB ແລະ PDF ຕໍ່ໄປ.
🔗ຈາກ GitHub ຫາ Weblate: ການຊິງໂຄຣໄນຂໍ້ຄວາມຕົ້ນສະບັບ
-
ໄຟລ໌ພາສາອັງກິດຕົ້ນສະບັບ (
content/*.md) ຖືກປ່ຽນແປງຜ່ານ pull request ໃນ GitHub (ເບິ່ງ workflow). -
GitHub action ທີ່ເຮັດວຽກທຸກຄືນຈະອັບເດດໄຟລ໌ POT (
po/content.pot) ທີ່ລວມຂໍ້ຄວາມທັງໝົດດ້ວຍຄຳສັ່ວgenerate-translations.sh --no-translations. ໝາຍເຫດ: ສະຄຣິບຈະອັບເດດທັງໄຟລ໌ POT ແລະ PO ແຕ່ພວກເຮົາຈະບໍ່ commit ໄຟລ໌ PO ທີ່ອັບເດດແລ້ວລົງໃນຄັງເກັບ ເນື່ອງຈາກໄຟລ໌ PO ຖືກຈັດການໂດຍ Weblate ທັງໝົດເພື່ອຫຼີກເວັ້ນບັນຫາ merge conflicts. -
Weblate ຈະ pull ໄຟລ໌ POT ທີ່ອັບເດດແລ້ວໂດຍອັດຕະໂນມັດ (ຜ່ານ Weblate GitHub app) ແລະ ຈະເພີ່ມຂໍ້ຄວາມໃໝ່ ຫຼື ຂໍ້ຄວາມທີ່ອັບເດດລົງໃນໄຟລ໌ PO ຂອງແຕ່ລະພາສາພາຍໃນລະບົບ
-
Weblate ຈະ commit ການປ່ຽນແປງໄປທີ່ GitHub ໂດຍການເປີດ pull request.
-
Pull request ຈະຖືກ merge ຫຼັງຈາກຜ່ານການກວດສອບ.
🔗ຈາກ Weblate ຫາ GitHub: ການຊິງໂຄຣໄນການແປພາສາ
-
ການແປພາສາແມ່ນເຮັດໃນ Weblate. ເບິ່ງ translators guide ສຳລັບວິທີການແປ.
-
Weblate ຈະອັບເດດໄຟລ໌ PO ຂອງແຕ່ລະພາສາພາຍໃນລະບົບ ແລະ commit ໄປຍັງ GitHub ຜ່ານ pull request. ເພື່ອບໍ່ໃຫ້ມີ pull request ຫຼາຍເກີນໄປ, ຂັ້ນຕອນນີ້ຈະເຮັດເປັນຊຸດ (batches).
🔗ການນຳໃຊ້ການແປພາສາ
ເມື່ອນຳໄປໃຊ້ທີ່ docs.darktable.org ໄຟລ໌ .md ທີ່ແປແລ້ວຈະຖືກສ້າງຂຶ້ນຈາກໄຟລ໌ PO ໃນ /po/ ໂດຍໃຊ້ generate-translations.sh --no-update. ຂັ້ນຕອນນີ້ແມ່ນຖືກປິດໄວ້ສຳລັບການ auto-build ໃນ GitHub Pages.
🔗ການເພີ່ມພາສາໃໝ່
-
ເພີ່ມພາສາໃໝ່ໃນ Weblate. ເບິ່ງ Weblate’s documentation ສຳລັບວິທີການເຮັດ. ໃຫ້ແນ່ໃຈວ່າໄຟລ໌ PO ທີ່ສ້າງໃໝ່ໄດ້ຖືກ commit ລົງໃນຄັງເກັບ dtdocs ແລ້ວ.
-
ໃນໄຟລ໌
config.yaml,config-pdf.yamlແລະconfig-epub.yaml, ໃຫ້ຊອກຫາແຖວlanguages:. -
ເພີ່ມພາສາທີ່ເຈົ້າຕ້ອງການແປ. ຕົວຢ່າງ, ລາຍການພາສາອັງກິດຈະເປັນແບບນີ້:
en-us: title: darktable user manual weight: 1
🔗ການເປີດ ແລະ ປິດການໃຊ້ງານພາສາ
ພາສາຕ່າງໆແມ່ນຖືກຄວບຄຸມໂດຍສອງລະບົບທີ່ແຍກກັນ ເຊິ່ງຕ້ອງຄອຍອັບເດດໃຫ້ກົງກັນດ້ວຍຕົວເອງ:
-
config.yamlandconfig-pdf.yaml— hugo’s configuration. Languages listed here get their own section of the built website or PDF. -
disable-languages— A space-separated list of language codes in the repository’s base directory.generate-translations.shreads this file and skips generating.{lang}.mdfiles for any language listed here, regardless of whether a PO file exists for it.
The language switcher in the theme only lists a language when translated .{lang}.md files exist for the current page — it uses Hugo’s .IsTranslated and .Translations variables, which reflect actual files on disk, not config.yaml entries. A language present in config.yaml but listed in disable-languages will therefore not appear in the switcher, as no translated files are generated for it. Its config.yaml entry is dormant until it is removed from disable-languages.
ເພື່ອເປີດໃຊ້ງານພາສາ, ພາສານັ້ນຕ້ອງມີຢູ່ໃນ config.yaml, config-pdf.yaml ແລະ config-epub.yaml ແລະ ຕ້ອງບໍ່ມີຢູ່ໃນ disable-languages.
ເພື່ອປິດການໃຊ້ງານພາສາ, ພາສານັ້ນຄວນຖືກລະບຸໄວ້ໃນ disable-languages. ສ່ວນລາຍການໃນ config.yaml, config-pdf.yaml ແລະ config-epub.yaml ສາມາດປະໄວ້ຄືເກົ່າໄດ້ ເພື່ອໃຊ້ໃນເວລາທີ່ຕ້ອງການເປີດໃຊ້ງານພາສານັ້ນຄືນໃໝ່.
🔗ການແປຂໍ້ຄວາມຂອງທີມ (theme strings) ສຳລັບເວັບໄຊ, EPUB ແລະ PDF
There are three themes for the darktable documentation: one for the HTML website, one for EPUB, and one for the PDF. Each has a small set of UI strings (e.g. “Table of Contents”, “Copyright”, “Search”) that must be translated manually — these strings are not managed by Weblate.
-
ໄປທີ່
themes/hugo-darktable-docs-theme/i18n. -
ກັອບປີ້ໄຟລ໌
en-us.yamlແລະ ຕັ້ງຊື່ໄຟລ໌ໃໝ່ຕາມລະຫັດພາສາຂອງເຈົ້າໂດຍໃຊ້ເຄື່ອງໝາຍຂີດກາງ (ເຊັ່ນde-de.yaml,fr-fr.yaml). -
ແປຂໍ້ຄວາມໃນໄຟລ໌ yaml ໃໝ່ນັ້ນ.
-
Check-in ໄຟລ໌ yaml ທີ່ແປແລ້ວລົງໃນ git, push ໄປທີ່ GitHub ແລະ ເປີດ pull request ເພື່ອໃຫ້ການປ່ຽນແປງຖືກຍອມຮັບ.
-
ເຮັດແບບດຽວກັນສຳລັບ
themes/hugo-darktable-docs-epub-theme/i18nແລະthemes/hugo-darktable-docs-pdf-theme/i18n. ທີມເຫຼົ່ານີ້ໃຊ້ລະຫັດພາສາທີ່ສັ້ນກວ່າ ໂດຍໃຊ້ພຽງແຕ່ລະຫັດພາສາ (ເຊັ່ນde.yaml) ຫຼື ໃຊ້ເຄື່ອງໝາຍຂີດລຸ່ມສຳລັບພາສາສະເພາະທ້ອງຖິ່ນ (ເຊັ່ນpt_br.yaml).
🔗generate-translations.sh
ສະຄຣິບນີ້ຖືກໃຊ້ໂດຍ GitHub action ທີ່ເຮັດວຽກທຸກຄືນ ແລະ ຍັງສາມາດລັນໃນເຄື່ອງໄດ້ໂດຍຜູ້ເກັບຮັກສາລະບົບທີ່ຕ້ອງການອັບເດດການແປພາສາດ້ວຍຕົວເອງ ຫຼື ຕ້ອງການກວດສອບຂໍ້ຜິດພາດ (debug) ໃນການສ້າງ.
The script is a wrapper around po4a to orchestrate the interplay between the original .md files and the translations. The script reads the disable-languages file in the repository’s base directory, filters out disabled languages, builds a temporary po4a config file containing all content/**/*.md files, and then calls po4a $1 --verbose $po4a_conf — the flag is passed through directly to po4a.
It requires one of the three arguments.
--no-translations- ສ້າງໄຟລ໌ POT ແລະ PO (
po/content.potແລະpo/content.{lang}.po) ຈາກໄຟລ໌ .md ຕົ້ນສະບັບ (content/*.md). ແຕ່ຈະ ບໍ່ ສ້າງໄຟລ໌ຜົນໄດ້ຮັບທີ່ແປແລ້ວ. ຂໍ້ຄວາມໃໝ່ ຫຼື ຂໍ້ຄວາມທີ່ປ່ຽນແປງຈາກໄຟລ໌ຕົ້ນສະບັບຈະຖືກດຶງເຂົ້າໄປໃນໄຟລ໌ POT/PO, ແຕ່ຈະບໍ່ມີການສ້າງໄຟລ໌*.{lang}.md. ຄຳສັ່ງນີ້ໃຊ້ຫຼັງຈາກມີການອັບເດດໄຟລ໌ຕົ້ນສະບັບພາສາອັງກິດ ເພື່ອຕຽມໄຟລ໌ POT ແລະ PO ສຳລັບ Weblate. --no-update- ສ້າງໄຟລ໌ Markdown ທີ່ແປແລ້ວຈາກໄຟລ໌ PO ທີ່ມີຢູ່, ໂດຍບໍ່ມີການອັບເດດໄຟລ໌ POT/PO. ນີ້ໝາຍຄວາມວ່າຈະບໍ່ມີການອ່ານໄຟລ໌ຕົ້ນສະບັບ (
content/*.md) ຄືນໃໝ່; ການແປທີ່ມີຢູ່ແລ້ວຈະຖືກນຳໄປສ້າງເປັນໄຟລ໌.{lang}.mdໂດຍກົງ. --rm-translations- ລຶບໄຟລ໌ທີ່ແປແລ້ວທີ່ຖືກສ້າງຂຶ້ນ.
po4aຈະລຶບໄຟລ໌ຜົນໄດ້ຮັບ*.{lang}.mdທີ່ເຄີຍສ້າງດ້ວຍ--no-update. ສ່ວນໄຟລ໌ PO/POT ຈະບໍ່ຖືກແຕະຕ້ອງ.