web-dev-qa-db-fra.com

Comment utiliser gettext pour rendre les fichiers QML traduisibles

J'aimerais écrire une application QtQuick basée sur Python ( PySide ) et QML .

Je sais que les applications Qt ont leur propre technologie de traduction, mais je voudrais m'en tenir à gettext pour celui-ci. J'aimerais savoir s'il est possible de:

  • Marquez les chaînes pour la traduction dans les fichiers QML de manière que les outils gettext puissent les extraire dans un fichier .pot
  • Demandez à gettext de traduire les fichiers QML au moment de l'exécution.

Je sais que cela se fait dans le code Unity 2D , en C++. Je me demande donc comment cela peut être fait avec Python.

Remarque: je parle d'utiliser exclusivement gettext au moment de l'exécution, pas de convertir entre les formats gettext et Qt Linguist.

10
David Planella

De manière générale, il n’existe aucun moyen d’utiliser la traduction gettext dans QT car la bibliothèque utilise un mécanisme de traduction interne (fichiers Qtranslate et .ts), comme indiqué ici QTBUG-2404 .

Cependant, il existe une alternative viable.

QT contient une boîte à outils appelée lconvert qui peut être utilisée pour convertir des fichiers .ts en .po et vice versa.

Vous pouvez donc extraire toute votre traduction avec:

lupdate

Puis utilisez lconvert pour obtenir un fichier po:

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

Après traduction, vous pouvez reconvertir le fichier po en ts:

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

Ensuite, vous pouvez l'utiliser dans votre logiciel.

lupdate peut être utilisé à la fois pour QT et QtQuick.

6
Angelo

Vous pouvez pirater la source de lupdate en utilisant quelque chose que vous aimez remplacer par qsTr. (est facilement) et ensuite vous utilisez piraté lupdate + lconvert + vous custome libintl pour atteindre utiliser objectif gettext.

0
snyh