Предлагает ли Qt Linguist возможность добавлять новые записи в редактируемый файл .ts? - PullRequest
2 голосов
/ 09 ноября 2010

Я не нашел способа сделать это - только отредактировать переводы в существующие поля.

Если нет способа достичь этого - как это сделать (каким-то образом автоматически, потому что сейчас я вручную добавлял блоки

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

в мой файл .ts, и я предполагаю, что это не правильный путь.

Ответы [ 2 ]

7 голосов
/ 09 ноября 2010

Нет, это не правильный путь :) Используйте tr () в коде, чтобы пометить строки для перевода.Например,

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

Вы запускаете lupdate для своего проекта, чтобы извлечь их в .ts.Смотрите здесь для более подробной информации.Или вам нужно переводить строки, которых нет в исходном коде?

1 голос
/ 22 сентября 2011

Я только что написал скрипт на Python для вставки новых записей в файл .ts для доморощенного парсера, использующего ElementTree. Это не делает код красивым когда это добавляет, но я считаю, что это работает просто отлично (пока):

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 - это, конечно, новый исходный текст.

...