Как использовать gettext для перевода файлов QML

Я хотел бы написать приложение QtQuick на основе Python ( PySide) и QML.

Я знаю, что в приложениях Qt есть своя собственная технология перевода, но я бы хотел получить для этого текст. Я хотел бы знать, возможно ли:

  • Помечайте строки для перевода в файлах QML таким образом, чтобы инструменты gettext могли извлечь их в .pot файл
  • Пусть gettext переводит файлы QML во время выполнения.

Я знаю, что это делается в 2D-коде Unity, на C++, поэтому мне интересно, как это можно сделать с помощью Python.

Примечание: я говорю об использовании исключительно gettext во время выполнения, а не о преобразовании между форматами gettext и Qt Linguist.

2 ответа

Вообще говоря, в QT нет возможности использовать перевод gettext, потому что библиотека использует внутренний механизм перевода (файлы Qtranslate и.ts), как указано здесь QTBUG-2404.

Однако есть жизнеспособная альтернатива.

В комплект поставки QT входит инструментарий lconvert, который можно использовать для преобразования файлов.ts в.po и наоборот.

Таким образом, вы можете извлечь весь ваш перевод с помощью:

lupdate

Затем используйте lconvert для получения po-файла:

lconvert -of po -o file.po file.ts

После перевода вы можете конвертировать обратно po ​​файл в ts:

lconvert -of ts -o file.ts file.po

Тогда вы можете использовать его в своем программном обеспечении.

lupdate может использоваться как для QT, так и для QtQuick.

Вы можете взломать источник lupdate, используя то, что вам нравится, вместо qsTr. (легко), а затем используйте взломанный lupdate + lconvert +, который вы используете libintl для достижения цели использования gettext.

Другие вопросы по тегам