Questions tagged «gettext»

2
如何使用gettext使QML文件可翻译
我想编写一个基于Python(PySide)和QML的QtQuick应用程序。 我知道Qt的应用已经得到了他们自己的翻译技术,但我想坚持gettext的这一个。我想知道是否可以: 用gettext工具将字符串标记为在QML文件中进行翻译的字符串,以将其提取到.pot文件中 让gettext在运行时转换QML文件。 我知道这是在C ++ 中的Unity 2D代码中完成的,所以我想知道如何使用Python来完成。 注意:我说的是在运行时专门使用gettext,而不是在gettext和Qt Linguist格式之间进行转换。

1
如何从/ opt进行Glade加载翻译
我已经创建了一个我想通过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 tell glade to load translations from # somewhere else than /usr/share/locale here builder.add_from_file(ui_filename) 从本质上讲,这意味着如果您的应用安装在中,则无法加载UI的翻译/opt。 在这一点上,我几乎陷入了困境。关于如何从Glade /opt/extras.ubuntu.com/qreator/share/locale/而不是Glade加载翻译的任何想法/usr/share/locale?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.