Skip to main content
 首页 » 编程设计

python之PyQt 中的 StandardContextMenu 国际化

2025年05月04日852php

在 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 .