我可以在* .xml文件中使用tr(“”)和lupdate吗?

时间:2015-01-27 08:28:13

标签: xml qt internationalization

这是一个黑暗中的镜头,但有没有办法在xml文件中以某种方式使用qt(“”)?要像这样生成.ts文件?:

lupdate myXML.xml -ts myML.ts

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

  

lupdate - 一种扫描源文件tr()并将字符串放在.ts xml文件中的工具。此时.ts文件仅包含要翻译的字符串。

它说的是一个源文件,并没有规定支持哪种文件,所以我认为它应该支持各种类型的文件;但怎么办呢?

1 个答案:

答案 0 :(得分:1)

好的,所以我找到了使用 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中我必须创建一个动态从上下文中转换的函数。