3

pyqt アプリケーションの言語を英語からフィンランド語に変換したいと考えています。pyqtにはいくつかの方法があることがわかり、それを使用しようとしましたが、役に立ちませんでした

app = QtGui.QApplication(sys.argv)
translator = QtCore.QTranslator()
translator.load("qt_fr.qm")
app.installTranslator(translator)

.qmファイルは正しいパスに存在し(現在はフランス語を使用していると思います)、ボタンでこのテキストを使用します

 name = "File"
 button.setText(self.tr(QtCore.QString(name)))
4

3 に答える 3

7

Qt 自体の翻訳 (qt_xx.qm ファイルを介して提供され、Qt と共に配布されます) と独自の翻訳の 2 つが混在しているようです。

ここでは、Qt 自体のロシア語翻訳ファイルを使用した例を示します。

from PyQt4.QtGui import *
from PyQt4.QtCore import *

class MyWindow(QWidget):
    def __init__(self, parent=None):
        super(QWidget, self).__init__(parent)

        self.hbox = QHBoxLayout(self)
        self.myButtons = QDialogButtonBox(self)
        self.hbox.addWidget(self.myButtons)
        button = self.myButtons.addButton(QDialogButtonBox.Open)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    translator = QTranslator()
    print translator.load("qt_ru", QLibraryInfo.location(QLibraryInfo.TranslationsPath))
    app.installTranslator(translator)
    ui = MyWindow()
    ui.show()
    sys.exit(app.exec_())

独自の翻訳が必要な場合は、 i18n with QtのProduce translationsセクションが役に立ちます。プロジェクト ファイルと翻訳ファイル (.ts) を提供し、Qt Linguist ツールを使用する必要があります。

複数のトランスレーターをインストールすることで、Qt 自体の翻訳と独自のアプリの翻訳の両方を混在させることができます。

トランスレータをロードするとき、ファイル名に .qm 拡張子を追加する必要がないことに注意してください。

于 2012-10-23T15:41:57.327 に答える
1

翻訳に関するQtマニュアルを読むか、非常に基本的でありながら説明的な例をここでご覧ください:http: //doc.qt.digia.com/qt/linguist-hellotr.html。注意:fiQtLinguistを使用して翻訳ファイルを自分で提供する必要がある場合があります

于 2012-10-23T14:56:51.690 に答える
0

ウィンドウの 内でこれを行っている場合は、トランスレータを保存 (参照を保持) する必要__init__()があります。

self.translator = translator

そうしないと、インストール後でもトランスレーターがガベージコレクションされます。その場合、self.tr()動作を停止します (サイレントに失敗します)。

于 2016-09-04T04:17:11.540 に答える