【问题标题】:Can I use tr("") and lupdate on *.xml files?我可以在 *.xml 文件上使用 tr("") 和 lupdate 吗?
【发布时间】:2015-01-27 08:28:12
【问题描述】:

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

lupdate myXML.xml -ts myML.ts

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

lupdate – 一种扫描源文件以查找 tr() 并将字符串放入 .ts xml 文件的工具。此时,.ts 文件只包含要翻译的字符串。

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

【问题讨论】:

标签: xml qt internationalization


【解决方案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 中,我必须创建一个从上下文动态获取翻译的函数。

【讨论】:

  • 如何扩展 xml 文件中的宏?您是否在自定义 xml 解析器代码中去除 QT_TRANSLATE_NOOP 关键字?
  • 我没有使用自定义 xml 解析器。我使用 QDomDocument 来解析 xml 文件。我记得我没有去掉关键字,我认为 QDomDocument 已经知道解释 QT_TRANSLATE_NOOP。
猜你喜欢
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多