2011-11-25 40 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