在PyQt的QPlaintTextEdit中翻译(本地化)上下文菜单的最佳方法是什么?
例如 :popup_menu = self.createStandardContextMenu()popup_menu.insertMenu(popup_menu.actions()[0], QMenu(self.tr("My menu")))
在这里,我可以翻译“我的菜单”(pylupdate4,然后是lrelease),但不能翻译所有其他标准项目,例如“剪切”,“过去”,...
最佳答案
QPlaintTextEdit
的上下文菜单由内部的QTextControl
类提供(该类也由QTextEdit
之类的其他小部件使用),并且每个菜单项的文本都已包装在tr
调用中。因此,想要翻译这些字符串的任何应用程序都只需要确保它们为Qt库本身加载了适当的翻译文件。
Qt提供了大约20种语言的翻译文件,通常应将其与Qt库一起安装。这些文件的位置可以通过编程方式确定,如下所示:
>>> from PyQt4 import QtCore
>>> print QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
/usr/share/qt/translations
如果没有一种语言的翻译文件,则有必要从模板创建一个文件。可以使用Qt的
lconvert
工具剥离现有的翻译文件来获取模板:lconvert --drop-translations -o qt_xx.ts qt_fr.qm
有关生成和使用翻译的更多详细信息,请参见here。