什么是在PyQt中翻译“动态”字符串的正确方法

时间:2013-08-21 15:10:47

标签: python pyqt translation

为了允许QGIS的Python插件国际化,我正在使用QCoreApplication.translate()这样:

message = QCoreApplication.translate('Multipart split',"No multipart features selected.")

如何准备动态字符串,如下所示

message = "Splited " + str(n_of_splitted_features) + " multipart feature(s)" 

翻译,无需打破每个子字符串,如此

message = QCoreApplication.translate('Multipart split','Splited ') + str(n_of_splitted_features) + QCoreApplication.translate('Multipart split', 'multipart feature(s)')

似乎不是最佳选择。

我发现在使用tr().arg()的C ++中,可以这样做:

statusBar()->showMessage(tr("Host %1 found").arg(hostName))

但我无法使用Python进行复制。

2 个答案:

答案 0 :(得分:2)

format方法的结果尝试tr命令:

statusBar().showMessage(tr("Host {0} found").format(hostName))

ts文件中的翻译还应包含{0}字符串。

编辑:使用Python 2.7,您只需键入{}而无需0

答案 1 :(得分:1)

我自己找到了解决方案,也许对其他人有用。

message = QCoreApplication.translate('Multipart split', "Splited %d multipart feature(s)") %(n_of_splitted_features)