Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
pyqt4_multilingue [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


pyqt4_multilingue

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
pyqt4_multilingue [2013/11/29 09:32]
tyrtamos
pyqt4_multilingue [2013/11/29 11:05]
tyrtamos
Ligne 104: Ligne 104:
 </code> </code>
  
-Le contexte est en général le nom de la classe. Si la chaine du contexte est vide, le contexte sera "@default"+Le contexte est en général le nom de la classe. Si ce n'est pas dans une classevous pouvez mettre le nom du module, "@default" ou n'importe quoi d'autre qui ne rentre pas en conflit avec le nom d'une classe
  
-Attention: comme le logiciel pylupdate4 repèrera les chaines à traduire uniquement par analyse de texte, les chaines doivent être en clair (et non sous forme de variables) et les mots "translate" et (pour l'utf-8), "UnicodeUTF8" doivent pouvoir être trouvés. On peut donc simplifier un peu la ligne en mettant au début de chaque page de code:+Attention: comme le logiciel pylupdate4 repèrera les chaines à traduire uniquement par //**analyse de texte**//, les chaines doivent être en clair (et non sous forme de variables) et les mots "translate" et (pour l'utf-8), "UnicodeUTF8" doivent pouvoir être trouvés. On peut donc simplifier un peu la ligne en mettant au début de chaque page de code:
  
 <code python>translate = QtGui.QApplication.translate <code python>translate = QtGui.QApplication.translate
Ligne 122: Ligne 122:
 1- utilisation de tr() ou trUtf8() comme en C++, mais si vous avez des classes qui héritent d'autres classes ayant des traductions, vous devrez AUSSI les traduire. 1- utilisation de tr() ou trUtf8() comme en C++, mais si vous avez des classes qui héritent d'autres classes ayant des traductions, vous devrez AUSSI les traduire.
  
-2- idem avec une définition modifiée comme ci-dessus, mais tous les contextes seront "@defaut" et vous devrez utiliser l'argument disambig pour distinguer les chaines identiques qui ont des traductions différentes.+2- idem avec une définition modifiée comme ci-dessus. Les traductions seront transmises par héritage, mais tous les contextes seront "@defaut" et vous devrez utiliser l'argument disambig pour distinguer les chaines identiques qui ont des traductions différentes.
  
 3- utilisation de QtGui.QApplication.translate(...) qui est la solution recommandée par riverbank pour PyQt4, avec pour seul inconvénient des lignes beaucoup plus longues. On peut simplifier un peu en créant les variables translate et unicodeUTF8 comme expliqué ci-dessus: c'est probablement la meilleure solution sur le plan technique.    3- utilisation de QtGui.QApplication.translate(...) qui est la solution recommandée par riverbank pour PyQt4, avec pour seul inconvénient des lignes beaucoup plus longues. On peut simplifier un peu en créant les variables translate et unicodeUTF8 comme expliqué ci-dessus: c'est probablement la meilleure solution sur le plan technique.   
Ligne 129: Ligne 129:
 ==== 2- créer un fichier projet .pro ==== ==== 2- créer un fichier projet .pro ====
  
-Si votre programme à traduire n'est composé que d'une seule page, vous n'avez peut-être pas besoin d'un fichier projet, mais c'est tout de même très pratique.+Si votre programme à traduire n'est composé que d'une seule page, vous n'avez peut-être pas besoin d'un fichier projet, mais c'est tout de même très pratique, parce que ça simplifie beaucoup l'appel des programmes suivants: pylupdate4 (création ou mise à jour des fichiers .ts) et lrelease (mise à jour des fichiers .qm).
  
 Le fichier projet est un fichier texte avec une extension ".pro", et qui contient, par exemple: Le fichier projet est un fichier texte avec une extension ".pro", et qui contient, par exemple:
Ligne 138: Ligne 138:
 </code>  </code> 
  
-FORMS donne la liste des fichiers .ui issus de qtdesigner, séparés par des espaces. Il est à noter qu'on n'utilise pas dans ce cas les fichier Python traduits grâce à pyuic4.+FORMS donne la liste des fichiers .ui issus de qtdesigner, séparés par des espaces. Il est à noter qu'on n'utilise pas dans ce cas les fichiers Python traduits grâce à pyuic4.
  
 SOURCES donne la liste des fichiers .py ou .pyw séparés par des espaces. SOURCES donne la liste des fichiers .py ou .pyw séparés par des espaces.
  
-TRANSLATIONS donne la liste des fichiers .ts qui seront créés par pylupdate4, et qui, après traitement par linguist, porteront les traductions+TRANSLATIONS donne la liste des fichiers .ts, séparés par des espaces, qui seront créés par pylupdate4, et qui, après traitement par linguist, porteront les traductions.
  
-Chaque fichier peut être entouré par des guillemets si nécessaire. S'il y a plusieurs fichiers, on peut les mettre sur plusieurs lignes en utilisant '\' pour signaler la ligne suivante. Par exemple:+Chaque fichier peut être entouré par des guillemets si son nom contient des espaces. S'il y a plusieurs fichiers, on peut les mettre sur plusieurs lignes en utilisant '\' pour signaler la ligne suivante. Par exemple:
  
 <code>SOURCES = test01.pyw \ <code>SOURCES = test01.pyw \
Ligne 156: Ligne 156:
  
 Chaque nom de fichier peut être précédé par son chemin relatif ou absolu. Chaque nom de fichier peut être précédé par son chemin relatif ou absolu.
 +
 +Il y a aussi 2 lignes supplémentaires possibles concernant les encodages. Par exemple:
 +
 +<code>CODECFORSRC     = UTF-8
 +CODECFORTR   = UTF-8
 +</code>
 +
 +Enfin, il est possible d'avoir des commentaires dans les fichiers pro: il suffit de commencer la ligne par '#'.
  
  
 ==== 3- détecter les chaines à traduire avec pylupdate4 ==== ==== 3- détecter les chaines à traduire avec pylupdate4 ====
 +
 +pylupdate4 est un programme à utiliser en console qui va faire une analyse de texte des codes Python et va créer ou mettre à jour les fichiers .ts.
 +
 +Si on n'a pas créé de fichier .pro (voir le point précédent), la syntaxe d'appel est (par exemple):
 +
 +<code>pylupdate4 -noobsolete -verbose fichier.ui fichier.py -ts fichier_en_EN.ts fichier_de_CH.ts
 +</code>
 +
 +Et si on a créé un fichier pro:
 +
 +<code>pylupdate4 -noobsolete -verbose fichier.pro
 +</code>
 +
 +On peut examiner le fichier .ts créé ainsi pour comprendre comment il est constitué. Par exemple:
 +
 +<code><?xml version="1.0" encoding="utf-8"?>
 +<!DOCTYPE TS><TS version="2.0" language="en" sourcelanguage="fr">
 +<context>
 +    <name>Fenetre</name>
 +...
 +
 +
 +
 +...
 +</context>
 +</TS>
 +</code>
  
  
pyqt4_multilingue.txt · Dernière modification: 2013/11/29 11:05 de tyrtamos