คำถามติดแท็ก gettext

2
วิธีใช้ gettext เพื่อทำให้ไฟล์ QML สามารถแปลได้
ผมอยากจะเขียนQtQuickแอปขึ้นอยู่กับงูหลาม ( PySide ) และQML ฉันรู้ว่าแอพ Qt มีเทคโนโลยีการแปลเป็นของตัวเอง แต่ฉันต้องการติดกับgettextสำหรับแอพนี้ ฉันอยากรู้ว่าเป็นไปได้หรือไม่: ทำเครื่องหมายสตริงสำหรับการแปลในไฟล์ QML ด้วยวิธีที่เครื่องมือ gettext สามารถแยก.potไฟล์เหล่านั้นเป็นไฟล์ ให้ gettext แปลไฟล์ QML ขณะใช้งานจริง ฉันรู้ว่ามันทำในUnity 2D codeใน C ++ ดังนั้นฉันจึงสงสัยว่ามันจะทำอย่างไรกับ Python หมายเหตุ: ฉันกำลังพูดถึงการใช้ gettext เฉพาะตอนรันไทม์ไม่ใช่เกี่ยวกับการแปลงระหว่างรูปแบบ gettext และ Qt Linguist

1
วิธีทำให้ Glade โหลดการแปลจาก / opt
ฉันได้สร้างโปรแกรมประยุกต์ที่ฉันต้องการที่จะส่งผ่านUbuntu แอปนักพัฒนากระบวนการ หนึ่งในข้อกำหนดสำหรับกระบวนการคือเมื่อติดตั้งแล้วไฟล์ทั้งหมดจะเข้าสู่/opt/extras.ubuntu.com/<appname>ไดเรกทอรี ผ่านการเปลี่ยนแปลงของบรรจุภัณฑ์และด้วยความช่วยเหลือจากผู้อื่นฉันได้รับสิ่งนั้น แต่ตอนนี้ฉันกำลังประสบปัญหาใหม่: เมื่อเรียกใช้จาก/optการแปลจากแอพของฉันไม่ได้ถูกโหลด สิ่งที่เกิดขึ้นมีดังต่อไปนี้: เว้นแต่จะระบุไว้เป็นอย่างอื่นไฟล์ไบนารี (ไฟล์ MO) ที่มีการแปลสำหรับแอปพลิเคชันจะโหลดจาก/usr/share/locale(หรือในกรณีของ Ubuntu จาก/usr/share/locale-langpack) แต่ในแอปของฉันเนื่องจาก/optความต้องการ/opt/extras.ubuntu.com/qreator/locale. เป็นไปตามทฤษฎีที่ดีเนื่องจากgettextอนุญาตให้ระบุตำแหน่งอื่นเพื่อโหลดการแปลดังนั้นฉันจึงเพิ่มการbindtextdomainโทรเพื่อให้บรรลุ: import gettext from gettext import gettext as _ gettext.bindtextdomain('qreator', '/opt/extras.ubuntu.com/qreator/share/locale/') gettext.textdomain('qreator') ใช้งานได้ดีจนถึงจุดหนึ่ง: ข้อความทั้งหมดที่ส่งออกในบรรทัดคำสั่งจะปรากฏขึ้นตามที่คาดไว้ แต่มันไม่ได้แก้ปัญหาหลัก : การโหลดการแปลจาก UI Glade ต้องระบุโดเมนการแปลอีกครั้ง (เทียบเท่ากับการgettext.textdomain('qreator')โทรด้านบน) แต่มันไม่อนุญาตให้ระบุการโหลดการแปลจาก (เช่น Glade เทียบเท่ากับbindtextdomainซึ่งเศร้าไม่มีอยู่) นี่เป็นส่วนหนึ่งของรหัสที่ฉันใช้: builder = Gtk.Builder() builder.set_translation_domain('qreator') # There isn't a way to …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.