ການຕັ້ງຄ່າການແປພາສາ

ການແປເອກະສານຂອງ darktable ແມ່ນຖືກຈັດການຜ່ານ Weblate.

🔗ພາບລວມຂອງການຕັ້ງຄ່າ ແລະ ການໄຫຼຂອງຂໍ້ມູນສຳລັບການແປໂດຍໃຊ້ Weblate

ສະຫຼຸບໂດຍຫຍໍ້:

  1. ເອກະສານຫຼັກແມ່ນເປັນພາສາອັງກິດໃນໄຟລ໌ .md ທີ່ຢູ່ໃນ content/*.md.
  2. ຈາກນັ້ນ ໄຟລ໌ POT (po/content.pot) ທີ່ລວມເອົາຂໍ້ຄວາມ ທີ່ສາມາດແປໄດ້ ທັງໝົດຈະຖືກສ້າງຂຶ້ນ.
  3. Weblate ຈະຈັດການໄຟລ໌ PO ຂອງແຕ່ລະພາສາ (po/content.{lang}.po) ເຊິ່ງບັນຈຸຂໍ້ຄວາມ ທີ່ແປແລ້ວ.
  4. ເມື່ອນຳເອກະສານໄປໃຊ້, ໄຟລ໌ .md ສະເພາະແຕ່ລະພາສາຈະຖືກສ້າງຂຶ້ນໂດຍໃຊ້ generate-translations.sh ເຊິ່ງ Hugo ຈະນຳໄປສະແດງຜົນເປັນໄຟລ໌ .html, EPUB ແລະ PDF ຕໍ່ໄປ.

🔗ຈາກ GitHub ຫາ Weblate: ການຊິງໂຄຣໄນຂໍ້ຄວາມຕົ້ນສະບັບ

  1. ໄຟລ໌ພາສາອັງກິດຕົ້ນສະບັບ (content/*.md) ຖືກປ່ຽນແປງຜ່ານ pull request ໃນ GitHub (ເບິ່ງ workflow).

  2. GitHub action ທີ່ເຮັດວຽກທຸກຄືນຈະອັບເດດໄຟລ໌ POT (po/content.pot) ທີ່ລວມຂໍ້ຄວາມທັງໝົດດ້ວຍຄຳສັ່ວ generate-translations.sh --no-translations. ໝາຍເຫດ: ສະຄຣິບຈະອັບເດດທັງໄຟລ໌ POT ແລະ PO ແຕ່ພວກເຮົາຈະບໍ່ commit ໄຟລ໌ PO ທີ່ອັບເດດແລ້ວລົງໃນຄັງເກັບ ເນື່ອງຈາກໄຟລ໌ PO ຖືກຈັດການໂດຍ Weblate ທັງໝົດເພື່ອຫຼີກເວັ້ນບັນຫາ merge conflicts.

  3. Weblate ຈະ pull ໄຟລ໌ POT ທີ່ອັບເດດແລ້ວໂດຍອັດຕະໂນມັດ (ຜ່ານ Weblate GitHub app) ແລະ ຈະເພີ່ມຂໍ້ຄວາມໃໝ່ ຫຼື ຂໍ້ຄວາມທີ່ອັບເດດລົງໃນໄຟລ໌ PO ຂອງແຕ່ລະພາສາພາຍໃນລະບົບ

  4. Weblate ຈະ commit ການປ່ຽນແປງໄປທີ່ GitHub ໂດຍການເປີດ pull request.

  5. Pull request ຈະຖືກ merge ຫຼັງຈາກຜ່ານການກວດສອບ.

🔗ຈາກ Weblate ຫາ GitHub: ການຊິງໂຄຣໄນການແປພາສາ

  1. ການແປພາສາແມ່ນເຮັດໃນ Weblate. ເບິ່ງ translators guide ສຳລັບວິທີການແປ.

  2. Weblate ຈະອັບເດດໄຟລ໌ PO ຂອງແຕ່ລະພາສາພາຍໃນລະບົບ ແລະ commit ໄປຍັງ GitHub ຜ່ານ pull request. ເພື່ອບໍ່ໃຫ້ມີ pull request ຫຼາຍເກີນໄປ, ຂັ້ນຕອນນີ້ຈະເຮັດເປັນຊຸດ (batches).

🔗ການນຳໃຊ້ການແປພາສາ

ເມື່ອນຳໄປໃຊ້ທີ່ docs.darktable.org ໄຟລ໌ .md ທີ່ແປແລ້ວຈະຖືກສ້າງຂຶ້ນຈາກໄຟລ໌ PO ໃນ /po/ ໂດຍໃຊ້ generate-translations.sh --no-update. ຂັ້ນຕອນນີ້ແມ່ນຖືກປິດໄວ້ສຳລັບການ auto-build ໃນ GitHub Pages.

🔗ການເພີ່ມພາສາໃໝ່

  1. ເພີ່ມພາສາໃໝ່ໃນ Weblate. ເບິ່ງ Weblate’s documentation ສຳລັບວິທີການເຮັດ. ໃຫ້ແນ່ໃຈວ່າໄຟລ໌ PO ທີ່ສ້າງໃໝ່ໄດ້ຖືກ commit ລົງໃນຄັງເກັບ dtdocs ແລ້ວ.

  2. ໃນໄຟລ໌ config.yaml, config-pdf.yaml ແລະ config-epub.yaml, ໃຫ້ຊອກຫາແຖວ languages:.

  3. ເພີ່ມພາສາທີ່ເຈົ້າຕ້ອງການແປ. ຕົວຢ່າງ, ລາຍການພາສາອັງກິດຈະເປັນແບບນີ້:

      en-us:
        title: darktable user manual
        weight: 1
    

🔗ການເປີດ ແລະ ປິດການໃຊ້ງານພາສາ

ພາສາຕ່າງໆແມ່ນຖືກຄວບຄຸມໂດຍສອງລະບົບທີ່ແຍກກັນ ເຊິ່ງຕ້ອງຄອຍອັບເດດໃຫ້ກົງກັນດ້ວຍຕົວເອງ:

  • config.yaml and config-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.sh reads this file and skips generating .{lang}.md files 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.

  1. ໄປທີ່ themes/hugo-darktable-docs-theme/i18n.

  2. ກັອບປີ້ໄຟລ໌ en-us.yaml ແລະ ຕັ້ງຊື່ໄຟລ໌ໃໝ່ຕາມລະຫັດພາສາຂອງເຈົ້າໂດຍໃຊ້ເຄື່ອງໝາຍຂີດກາງ (ເຊັ່ນ de-de.yaml, fr-fr.yaml).

  3. ແປຂໍ້ຄວາມໃນໄຟລ໌ yaml ໃໝ່ນັ້ນ.

  4. Check-in ໄຟລ໌ yaml ທີ່ແປແລ້ວລົງໃນ git, push ໄປທີ່ GitHub ແລະ ເປີດ pull request ເພື່ອໃຫ້ການປ່ຽນແປງຖືກຍອມຮັບ.

  5. ເຮັດແບບດຽວກັນສຳລັບ 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 ຈະບໍ່ຖືກແຕະຕ້ອງ.

translations