在 PyQt 中翻译(本地化)QPlaintTextEdit 上下文菜单的最佳方法是什么?
例如:
popup_menu = self.createStandardContextMenu() popup_menu.insertMenu(popup_menu.actions()[0], QMenu(self.tr("我的菜单")))
在这里,我可以翻译“我的菜单”(pyupdate4,然后是 lrelease),但不能翻译所有其他标准项目,如“cut”、“past”、...
请您参考如下方法:
QPlaintTextEdit 的上下文菜单由内部 QTextControl 类提供(它也被其他小部件使用,如 QTextEdit),并且每个菜单项的文本已经包含在 tr 调用中。因此,任何想要翻译这些字符串的应用程序只需要确保它们为 Qt 库本身加载适当的翻译文件。
Qt 提供了二十多种语言的翻译文件,这些文件通常应该与 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 .
