วิธีทำให้ 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 …