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

ການແປເອກະສານຂອງ 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 ແລະ config-pdf.yaml — ການກຳນົດຄ່າຂອງ hugo. ພາສາທີ່ລະບຸຢູ່ທີ່ນີ້ຈະມີສ່ວນຂອງຕົນເອງໃນເວັບໄຊ ຫຼື PDF ທີ່ສ້າງຂຶ້ນ.

  • disable-languages — ລາຍຊື່ລະຫັດພາສາທີ່ຂັ້ນດ້ວຍຍະຫວ່າງໃນໄດເຣັກທໍຣີຫຼັກຂອງຄັງເກັບຂໍ້ມູນ. generate-translations.sh ຈະອ່ານໄຟລ໌ນີ້ ແລະ ຂ້າມການສ້າງໄຟລ໌ .{lang}.md ສຳລັບພາສາໃດໆທີ່ລະບຸໄວ້ທີ່ນີ້, ໂດຍບໍ່ສົນວ່າຈະມີໄຟລ໌ PO ສຳລັບພາສານັ້ນຫຼືບໍ່.

ຕົວປ່ຽນພາສາໃນທິມ (theme) ຈະສະແດງລາຍຊື່ພາສາກໍຕໍ່ເມື່ອມີໄຟລ໌ .{lang}.md ທີ່ແປແລ້ວສຳລັບໜ້າປັດຈຸບັນ — ມັນໃຊ້ຕົວແປ .IsTranslated ແລະ .Translations ຂອງ Hugo, ເຊິ່ງສະທ້ອນເຖິງໄຟລ໌ແທ້ໃນດິສກ໌, ບໍ່ແມ່ນລາຍການໃນ config.yaml. ດັ່ງນັ້ນ ພາສາທີ່ມີຢູ່ໃນ config.yaml ແຕ່ຖືກລະບຸໄວ້ໃນ disable-languages ຈະບໍ່ປາກົດໃນຕົວປ່ຽນພາສາ, ເພາະບໍ່ມີໄຟລ໌ທີ່ແປແລ້ວຖືກສ້າງຂຶ້ນ. ລາຍການໃນ config.yaml ຂອງມັນຈະຍັງບໍ່ເຮັດວຽກຈົນກ່ວາມັນຈະຖືກເອົາອອກຈາກ 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

ມີສາມທິມສຳລັບຄູ່ມື darktable: ອັນໜຶ່ງສຳລັບເວັບໄຊ HTML, ອັນໜຶ່ງສຳລັບ EPUB, ແລະ ອັນໜຶ່ງສຳລັບ PDF. ແຕ່ລະອັນມີຊຸດຂໍ້ຄວາມ UI ຂະໜາດນ້ອຍ (ເຊັ່ນ: “ສາລະບານ”, “ລິຂະສິດ”, “ຄົ້ນຫາ”) ທີ່ຕ້ອງໄດ້ແປດ້ວຍຕົນເອງ — ຂໍ້ຄວາມເຫຼົ່ານີ້ ບໍ່ໄດ້ ຖືກຈັດການໂດຍ 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) ໃນການສ້າງ.

ສະຄຣິບ (script) ນີ້ແມ່ນຕົວຫຸ້ມ (wrapper) ຮອບ po4a ເພື່ອຈັດການການເຮັດວຽກຮ່ວມກັນລະຫວ່າງໄຟລ໌ .md ຕົ້ນສະບັບ ແລະ ບົດແປ. ສະຄຣິບຈະອ່ານໄຟລ໌ disable-languages ໃນໄດເຣັກທໍຣີຫຼັກຂອງຄັງເກັບຂໍ້ມູນ, ຄັດກອງພາສາທີ່ຖືກປິດຕົວອອກ, ສ້າງໄຟລ໌ກຳນົດຄ່າ po4a ຊົ່ວຄາວທີ່ມີໄຟລ໌ content/**/*.md ທັງໝົດ, ແລະ ຈາກນັ້ນກໍເອີ້ນໃຊ້ po4a $1 --verbose $po4a_conf — ແຟລັກ (flag) ຈະຖືກສົ່ງຕໍ່ໄປຫາ po4a ໂດຍກົງ. ມັນຕ້ອງການໜຶ່ງໃນສາມອາກິວເມັນ (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