小编Jos*_*sch的帖子

PySide Qt tr() 不翻译,translate() 翻译 - 上下文错误?

我想使用 QTranslator 以便能够使用英文文本标签,并且仍然让软件显示德文标签。

不幸的是,我的应用程序不会翻译,除非我指定了上下文。以下静态函数实例化 QApplication 并添加所需的转换器。

第一个打印将“Apple2”正确翻译为“Apfel2”。Qt Linguist 中的上下文也有上下文“app”。不过,第二个印刷品没有翻译。tr()类中的调用(在同一个 python 文件中定义)也不翻译。

def load_application():
    app = QApplication()

    qt_translator = QTranslator()
    qt_translator.load('qt_' + QLocale.system().name(), QLibraryInfo.location(QLibraryInfo.TranslationsPath))
    app.installTranslator(qt_translator)

    app_translator = QTranslator()
    r = app_translator.load('i18n/' + QLocale.system().name())
    app.installTranslator(app_translator)

    print(app.translate('app', 'Apple2'))
    print(app.tr('Apple'))

    return app
Run Code Online (Sandbox Code Playgroud)

编辑:

静态函数的部分是正确的。应用程序的上下文是 QApplication。但这对 QMainWindow 子类没有帮助。我相应地更新了代码。pyside-lupdate 为类生成的上下文是 MainWindow:

看法

class MainWindow(QMainWindow):
    add_model_widget = None

    def __init__(self):
        QMainWindow.__init__(self)

        # Create menu bar
        menu_bar = QMenuBar(self)
        m_file = QMenu(self.tr('File'), menu_bar)
        a_add_model = QAction(QIcon('add.png'), self.tr('Add Jewel'), self)

        m_file.addAction(a_add_model)
        menu_bar.addMenu(m_file)
        self.setMenuBar(menu_bar)

def load_application():
    app = …
Run Code Online (Sandbox Code Playgroud)

python translation qt4 pyside

5
推荐指数
2
解决办法
7395
查看次数

标签 统计

pyside ×1

python ×1

qt4 ×1

translation ×1