2011-11-25 70 views
2

在PyQt中翻译(本地化)QPlaintTextEdit中的上下文菜单的最佳方式是什么?在PyQt中StandardContextMenu国际化

例如:

popup_menu = self.createStandardContextMenu() popup_menu.insertMenu(popup_menu.actions()[0], QMenu(self.tr("My menu")))

在这里,我可以翻译 “我的菜单”(pylupdate4,然后lrelease,即可),但并非所有其他标准的项目,如 “剪切”, “过去”,...

回答

0

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