私はPyQtプログラムを国際化しようとしています。私は自分自身の翻訳を読み込むことに問題はありませんが、ファイルダイアログがシステムロケールを使用しているように見えます。 thisのような回答は、Qtに同梱の翻訳ファイルをインストールすることで、組み込みのQtウィジェットを翻訳できるはずであることを示唆しています。Qtファイルダイアログの翻訳をロード中
Qtが提供するドイツ語の翻訳を読み込もうとしましたが、私のファイルダイアログはまだ英語で表示されています。これはQFileDialog
静的関数でも使えますか?私は何か間違っているのですか?ドキュメントを深く掘り
from PyQt5 import QtCore, QtWidgets
class Window(QtWidgets.QWidget):
def __init__(self):
super(Window, self).__init__()
button = QtWidgets.QPushButton('Show dialog')
button.clicked.connect(self.showdialog)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(button)
def showdialog(self):
QtWidgets.QFileDialog.getOpenFileName()
if __name__ == '__main__':
app = QtWidgets.QApplication([])
translator = QtCore.QTranslator()
if translator.load('qt_de', QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)):
app.installTranslator(translator)
print 'qt translations installed'
win = Window()
win.show()
app.exec_()
(醜い)非ネイティブダイアログを使用してQtのを強制的に動作させることができ、しかし確実にネイティブダイアログのため、翻訳はすでにOSによって処理されますので、あなたがする必要はありません。何でもアプリケーションが強制的に現在のロケールと一致しないトランスレータを使用するように強制すると、エンドユーザーにはそのような状況は発生しません。開発中に適切にテストしたい場合は、独自のシステムロケールを変更して、アプリケーションが正しいトランスレータを検出して読み込むようにする必要があります。 – ekhumoro