Pyside6 lupdate 无法识别标记 "translate",只能识别 "tr"

Pyside6 lupdate won't recognise marker "translate", only "tr"

我用 pyside6 开发了一个软件,我正在尝试在它上面做国际化。我发现 pyside6-lupdate 工具有一个奇怪的问题。

当我在我的 python 文件中使用 'tr' 标记时,该工具可以成功地将它精确到一个 ts 文件。即 main.py

self.btn_open_file = QPushButton(self.tr('Open File Folder'), self)

终端中我运行的命令是:

pyside6-lupdate main.py -ts test.ts

但是当我在 QT designer 生成的 python 文件上使用它时,它将不再起作用,因为这些文件使用 'translate' 作为标记,如下所示: ui_peg_page.py

def retranslateUi(self, PegPage):
        PegPage.setWindowTitle(QCoreApplication.translate("PegPage", u"Form", None))
        self.label.setText(QCoreApplication.translate("PegPage", u"1. Peg to Existing Mapping Column (OR)", None))
        self.label_2.setText(QCoreApplication.translate("PegPage", u"2. Create a New Mapping Column", None))
        self.groupBox.setTitle(QCoreApplication.translate("PegPage", u"GroupBox", None)

当我再次运行命令时,没有提取任何内容。我想知道以前是否有人遇到过同样的问题。我的pyside6版本是6.2.2.1。我在 mac 和 windows 上都试过了,都不起作用。如果有人能指出我的出路,将不胜感激。

经过多次失败的尝试,我终于找到了修复它的方法。如果要使用"QCoreApplication.translate("hared coded context", u"Text"),去掉unicode前缀"u",就可以了。

当您使用 Qt Designer 进行 UI 创建时,您应该提供 lupdate 表单文件,而不是生成的 python 模块。

详见PYSIDE-1717 and PYSIDE-1774