我可以在 *.xml 文件上使用 tr("") 和 lupdate 吗?

Can I use tr("") and lupdate on *.xml files?

这是在黑暗中拍摄的,但有没有办法在 xml 文件中以某种方式使用 qt("") ?要像这样生成 .ts 文件?:

lupdate myXML.xml -ts myML.ts

我试过这个命令,但它不起作用。它没有给我一个错误,它只是说找到了 0(零)个文字。 我的意思是文档是这样说的:

lupdate – A tool that scans the source files for tr() and places the strings in a .ts xml file. At this point the .ts file contains only strings that are meant to be translated.

说的是一个源文件,并没有规定支持什么样的文件,所以我觉得应该支持各种类型的文件;但是怎么做呢?

好的,所以我找到了使用 QT_TRANSLATE_NOOP:

的解决方案

在下面的 xml 文本中我做了这样的事情:

<root>
   <tag>QT_TRANSLATE_NOOP("context","value")</tag>
</root>

当我想获取值时,我在 cpp 中做了类似的事情:

    Q_INVOKABLE QString getTranslation(QString value){
        return QApplication::translate("context", value);
    }

总结一下。我将宏 QT_TRANSLATE_NOOP 放在我的 xml 文件中,其中包含一个上下文字符串(您可以选择任何您想要的)和我希望它被翻译的值。因此,当我执行 lupdate myxml.xml -ts myTs.ts 时,它会生成一个 ts 文件,其值为宏中指定的上下文中的源文本。之后在 cpp 中,我必须创建一个函数,该函数动态地从上下文中获取翻译。