在QDialogBu​​ttonBox中翻译standardButton

sol*_*iCe 3 translation pyqt internationalization

我正在使用pyqt设计师.我用self.tr()+ pylupdate4和lrelease翻译了我的应用程序中的所有字符串

这是我的main()中的代码片段:

app = QtGui.QApplication(sys.argv)
app.setApplicationName('Mental Calculation')

# initialize locale and load translation files if available
locale = QtCore.QLocale()
LOCALENAME = str(locale.system().name())
translator = QtCore.QTranslator()
translator.load("mentalcalculation_%s" % LOCALENAME)
app.installTranslator(translator)
Run Code Online (Sandbox Code Playgroud)

我用QDialogBu​​ttonBoxQDialog的一个QtGui.QDialogBu​​ttonBox.CancelQtGui.QDialogBu​​ttonBox.Ok

并且这些按钮中的字符串未翻译.因为pylupdate4会为它们选择任何字符串.

我是否错过了应用中的配置步骤以便翻译?我不明白QDialogBu​​ttonBox的标准按钮的字符串是如何被翻译的,并且无法找到有关它的文档.

小智 10

使用以下方法设置按钮的文本:

buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Ok"));
buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel"));
Run Code Online (Sandbox Code Playgroud)

然后lupdate .ts文件,用语言学家打开它,你会找到字符串.


小智 5

为了以可移植的方式从 QT 加载本机翻译,您可以使用以下函数调用:

translator.load("qt_" + QLocale::system().name(),QLibraryInfo::location(QLibraryInfo::TranslationsPath));
Run Code Online (Sandbox Code Playgroud)

如果您想避免这种解决方法,则如前所述,两个(或更多)翻译器是标准方法。