「動態」的字符串要允許一個Python插件的國際化的QGIS,我使用QCoreApplication.translate()
這樣的:請告訴我正確的方式來翻譯PyQt的
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)')
這似乎不是最好的選擇。
我發現,在C++中使用tr()
與.arg()
,一個能做到這一點:
statusBar()->showMessage(tr("Host %1 found").arg(hostName))
但我無法用Python複製。
感謝您的回答。不幸的是tr方法不被認可這就是爲什麼我使用QCoreApplication.translate()。我會嘗試使用{}並在其中格式化。 –
「...你可以簡單地輸入'{}'而不用0」。 **沒有。絕對不要這樣做。**用於國際化的參數應該總是顯式編號(例如,「{0}」而不是「{}」)。爲什麼?因爲非英語語言可能會以不同的順序插入參數,在這種情況下,隱式編號的「{}」樣式參數將不可翻譯。有關演示兩個英語和挪威語句子之間差異的現實示例,請參見[*「使用編號參數」。*](https://doc.qt.io/qt-5/i18n-source-translation.html#使用數字參數) –