PyQt5 - 翻译的文本不会出现在GUI中

时间:2017-11-20 13:12:07

标签: python internationalization pyqt5

尽管存在,翻译的文本不会出现在我的GUI中。 这是main.py

from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
import sys, os

from view.MainWindow import MainWindow


if __name__=='__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    MainWindow.show(mainWindow)
    translator = QtCore.QTranslator()
    (filepath,filename)=os.path.split(__file__)
    trad_path=os.path.join(filepath,'translate','fr_FR.qm')
    print (trad_path)
    translator.load(trad_path)
    app.installTranslator(translator)
    sys.exit(app.exec_())

main.py文件位于包含fr_FR.qm文件的translate文件夹旁边的src文件夹下。

print(trad_path)显示文件的路径正确

在内部,MainWindow.py文件我有一个调用set_translatable_textes()函数的showEvent()函数

    def showEvent(self,ev):
        print('in show event')
        self.set_translatable_textes()

    def set_translatable_textes(self):
        self.choose_session_label.setText(
            QCoreApplication.translate(
                'Main Window','A text that has translation'))
        #self.choose_session_label.setText('Untranslated text')

        self.edit_button.setText(self.tr('Edit'))
        #self.edit_button.setText('Untranslated text')

我尝试了两种翻译:

  1. 使用QCoreApplication.translate()
  2. 使用tr() 他们都没有工作。为了确保我调用该函数,我将每个语句替换为下面的注释语句。他们都工作。
  3. 我可能做错了但是什么?

1 个答案:

答案 0 :(得分:0)

多么愚蠢! 在MainWindow出现的时候,翻译还没准备好。

我在MainWindow.show()之前将翻译器的内容放在main中