Qt Linguist是否能够为可编辑的.ts文件添加新条目?

时间:2010-11-09 14:11:44

标签: c++ qt translation

我没有办法做到这一点 - 只是编辑现有字段的翻译。

如果没有办法实现这一点 - 应该如何做到(不知何故自动,因为现在我正在手动添加

<message>
    <source>x</source>
    <translation>xx</translation>
</message>

阻止我的.ts文件,我认为这不是正确的方法。

2 个答案:

答案 0 :(得分:7)

不,这不是正确的方法:)在代码中使用tr()来标记字符串以进行翻译。 例如

label->setText( tr("Error") );

你为你的项目运行lupdate将它们提取到.ts。有关详细信息,请参阅here。 或者您是否需要翻译源代码中没有的字符串?

答案 1 :(得分:1)

我刚写了一个python脚本来插入新条目 使用ElementTree进入本地解析器的.ts文件。它不会使代码漂亮 当它添加它,但我相信它工作得很好(到目前为止):

from xml.etree import ElementTree as ET

tree = ET.parse(infile)
doc = tree.getroot()

for e in tree.getiterator()
  if e.tag == "context":
    for child in e.getchildren():
      if child.tag == "name" and child.text == target:
        elem = ET.SubElement(e, "message")
        src = ET.SubElement(elem, "source")
        src.text = newtext
        trans = ET.SubElement(elem, "translation")
        trans.text = "THE_TRANSLATION"

tree.write(outfile)

如果infile是.ts文件,outfile可能与infile相同或不同。 target是您要添加新消息的上下文, 而newtext当然是新的源文本。