IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

La traduction d'interfaces QML

Le but de cet article est de tester l'internationalisation des applications QML.

On s'appuie sur la documentation de Qt, « QML Internationalization ».

Commentez !

Article lu   fois.

Les deux auteurs

Profil Pro

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Mots clés

L'internationalisation d'une application classique Qt passe par l'utilisation de tr().

 
Sélectionnez
tr("bonjour")

En QML, le mot clé "tr" a été remplacé par "qsTr".

 
Sélectionnez
qsTr("bonjour")

Le mot clé « qsTr » peut être remplacé d'après la documentation par "qsTranslate", "QT_TR_NOOP" et "QT_TRANSLATE_NOOP".

Dans le code C++, on utilisera toujours le mot clé « tr » ; dans les fichiers QML, on utilisera le mot clé "qsTr".

II. Tests

On crée un projet de type QML Application.

Le fichier QML généré est le suivant.

 
Sélectionnez
import Qt 4.7 
Rectangle { 
  width: 200 
  height: 200 
  Text { 
  x: 66 
  y: 93 
  text: "Hello World" 
  } 
}

On modifie la chaîne HelloWorld par qsTr("Bonjour").

 
Sélectionnez
import Qt 4.7 
Rectangle { 
  width: 200 
  height: 200 
  Text { 
  x: 66 
  y: 93 
  text: qsTr("Bonjour") 
  } 
}

Ce qui donne ceci en mode design :

Image non disponible

Et ceci en exécution :

Image non disponible

III. Interrogation

On n'a pas traduit l'application mais on a quand même la chaîne « Bonjour » affichée. Pourquoi ?

Tout simplement parce que le module de traduction de Qt affiche par défaut le texte non traduit s'il ne trouve pas de traduction.

IV. Traduction de l'application QML

La traduction de l'application fonctionne grâce à plusieurs exécutables : lupdate.exe, lrelease.exe et linguist.exe.

  • lupdate sert à générer un fichier xml d'extension « .ts » contenant les traductions de plusieurs fichiers QML :
     
    Sélectionnez
    lupdate fic1.qml fic2.qml –ts trad.ts
  • lrelease sert à compiler le fichier ts en un fichier binaire d'extension « *.qm » :
     
    Sélectionnez
    lrelease trad.ts
  • linguist est une application graphique d'aide à la traduction.

V. Tests

On applique la traduction au projet ci-dessus.

Étape 1 : on ouvre une ligne de commande et on se place dans le répertoire de l'application.

Étape 2 : on génère le fichier QtTraduction.ts

Image non disponible

Le fichier ressemble à ceci :

 
Sélectionnez
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE TS> 
<TS version="2.0"> 
<context> 
  <name>QtTraduction</name> 
  <message> 
  <location filename="QtTraduction.qml" line="9"/> 
  <source>Bonjour</source> 
  <translation type="unfinished"></translation> 
  </message> 
</context> 
</TS>

Étape 3 : Qt Linguist. On lance la commande liguist QmlTraduction.ts et on choisit la langue cible de la traduction.

Image non disponible

Ici, on renseigne la traduction française par une autre traduction française pour l'exemple.

Image non disponible

Ensuite, on valide la traduction par le bouton entouré sur l'image.

Image non disponible

On enregistre et quitte l'application. Dès lors, le fichier QmlTraduction est complété par la traduction.

 
Sélectionnez
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE TS> 
<TS version="2.0" language="fr_FR" sourcelanguage="fr_FR"> 
<context> 
  <name>QtTraduction</name> 
  <message> 
  <location filename="QtTraduction.qml" line="9"/> 
  <source>Bonjour</source> 
  <translation>Salut</translation> 
  </message> 
</context> 
</TS>

Étape 4 : génération du fichier de traduction compilé.

On lance la commande lrelease QtTraduction et on obtient un fichier QtTraduction.qm.

Image non disponible

Étape 5 : lancement de l'application traduite.

Pour appliquer la traduction via qmlviewer, il faut préciser les fichiers de traduction via la commande :

 
Sélectionnez
Qmlviewer &#150;translation QtTraduction.qm QtTraduction.qml
Image non disponible

VI. Conclusion

Voilà, il n'y a plus qu'à appliquer ce principe pour les traductions d'applications QML.

Merci à dourouc05 et à ClaudeLELOUP pour leur relecture !

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2011 Guillaume Fortin. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.