Qt Linguist 是否提供向可编辑 .ts 文件添加新条目的功能?

发布于 2024-10-01 17:22:10 字数 283 浏览 3 评论 0原文

我没有找到一种方法来做到这一点 - 只能编辑现有字段的翻译。

如果没有办法实现这一点 - 应该如何完成(以某种方式自动,因为现在我正在手动将

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

块添加到我的 .ts 文件中,我认为这不是正确的方法。

I didn't find a way to do this - only to edit the translations to the existing fields.

If there is no way to achieve this - how should this be done (somehow automatically, because right now I was manually adding

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

blocks to my .ts file and I assume that's not the correct way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦魇绽荼蘼 2024-10-08 17:22:10

不,这不是正确的方法:) 在标记要翻译的字符串的代码。
例如,

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

您为项目运行 lupdate 将它们提取到 .ts。请参阅此处了解更多详情。
或者您是否需要翻译源代码中没有的字符串?

No, that's not the correct way :) Use tr() in the code to mark strings for translation.
For example

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

The you run lupdate for your project to extract them to a .ts. See here for more details.
Or do you need to translate strings that are not in the source code?

青瓷清茶倾城歌 2024-10-08 17:22:10

我刚刚编写了一个 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 当然是新的源文本。

I just wrote a python script to insert new entries
into the .ts file for a homegrown parser using ElementTree. It doesnt make the code pretty
when it adds it, but I believe it works just fine (so far):

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)

Where infile is the .ts file, outfile may be the same as infile or different.
target is the context you are looking for to add a new message into,
and newtext is of course the new source text.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文