Я хотел бы написать приложение QtQuick на основе Python ( PySide ) и QML .
Я знаю, что в приложениях Qt есть свои собственные технологии перевода, но я бы хотел использовать для этого gettext . Я хотел бы знать, можно ли:
.pot
Я знаю, что это делается в коде Unity 2D на C ++, поэтому мне интересно, как это можно сделать с помощью Python.
Примечание: я говорю об использовании исключительно gettext во время выполнения, а не о преобразовании между форматами gettext и Qt Linguist.
Вообще говоря, в QT нет способа использовать перевод gettext, поскольку библиотека использует внутренний механизм перевода (файлы Qtranslate и .ts), как указано здесь QTBUG-2404 .
Однако, есть жизнеспособная альтернатива.
В комплект поставки QT входит инструментарий lconvert , который можно использовать для преобразования файлов .ts в .po и наоборот.
Таким образом, вы можете извлечь весь ваш перевод с помощью:
lupdate
Затем используйте lconvert для получения файла po:
[ 111]
После перевода вы можете преобразовать обратно po-файл в ts:
lconvert -of ts -o file.ts file.po
Затем вы можете использовать его в своем программном обеспечении.
lupdate может использоваться как для QT, так и для QtQuick.
Вы можете взломать источник lupdate, используя то, что вам нравится, вместо qsTr. (легко), а затем используйте взломанный lupdate + lconvert +, который вы используете libintl для достижения цели использования gettext.