Как использовать 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.