- QT
- AbulEduApplicationV1
- AbulEduAproposV1
- AbulEduAudioV1
- AbulEduButtonListV1
- AbulEduCameraV1
- AbulEduCameraWidgetV1
- AbulEduConstantesV1
- AbulEduEditeur
- AbulEduGraphicsEtiquetteV1
- AbulEduIdentitesV1
- AbulEduInstructionV1
- AbulEduMediaplayerV1
- AbulEduMediathequeGetV1
- AbulEduMenuFeuilleV1
- AbulEduNumericLinearPadv1
- AbulEduQRCodeReaderV1
- AbulEduSingletonV1
- AbulEduSlideWidgetContainerV1
- AbulEduStackedWidgetV1
- AbulEduTexteV1
- AbulEduTextV1
- AbulEduTutorialV1
- AbulEduVirtualKeyboardV1
- AbulEduVisionneuseImageV1
- AbulEduWidgetAssistantEtapesV1
- Affichage des messages d'erreurs
- Affichage dynamique des étapes d'un éditeur
- Bouton croix de fenêtre
- Centrer une fenêtre
- Création fichierdossier temporaire unique
- Créer une AbulÉduApplicationV1 dans QtCreator
- Framework Graphic View
- Framework Graphic Viewodt
- Framework State Machine
- Générer automatiquement un dictionnaire de verbes
- Gérer la modalité des fenêtres
- Gestion des arguments
- Getters par référence et non par valeur
- Installation Qt5
- Installation Qt56
- Normalisation des modules
- Partager des variables avec différents pri
- Redimensionnement application Qt
- Redimensionner un QGraphicsSvgItem
- Tests et Logs sous Windows
- Utilisation de l'assistant AbulEduApplicationV1
- Utiliser des QSharedPointer
Développement multilingue¶
(Note: documentation à détailler par le prochain à utiliser cette doc, merci)
Pour que nos logiciels soient traduisibles QT apporte toute une boite à outils. Voici quelques pistes pour les utiliser.
Sources d'informations:¶
- http://doc.qt.nokia.com/4.7-snapshot/internationalization.html
- http://doc.qt.nokia.com/latest/i18n-source-translation.html#enabling-translation
- http://developer.qt.nokia.com/faq/answer/how_can_i_dynamically_switch_between_languages_in_my_application_using_e.g_
- http://developer.qt.nokia.com/wiki/How_to_create_a_multi_language_application
Notes pour les traductions des fichiers conf ou autre:
- http://doc.qt.nokia.com/qtopia4.3/buildsystem/hint-nct-1.html
- http://doc.qt.nokia.com/qq/qq03-swedish-chef.html
Dans votre application.cpp (qmainwindow, appli principale appelée juste après le main.cpp)¶
Il faut ajouter ceci dans le constructeur (exemple avec raconte-moi)
raconte::raconte(QWidget *parent) : AbulEduExerciceV0(parent), ui(new Ui::raconteClass) { //Langue QString locale = QLocale::system().name().section('_', 0, 0); //Un 1er qtranslator pour prendre les traductions QT Systeme //c'est d'ailleur grace a ca qu'on est en RTL qtTranslator.load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); qApp->installTranslator(&qtTranslator); //Et un second qtranslator pour les traductions specifiques du //logiciel myappTranslator.load("raconte-moi_" + locale, "lang"); qApp->installTranslator(&myappTranslator); ui->setupUi(this);
Avec bien entendu dans raconte.h les déclarations ad-hoc
private:
QTranslator qtTranslator;
QTranslator myappTranslator;
Et dans la fonction qui permet de changer de langue
/** * Changer la langue de l'interface */ void raconte::on_actionLanguage_triggered() { bool ok; QStringList availableLanguages; availableLanguages << "ar_AR.UTF-8:" + trUtf8("Arabe") << "en_EN.UTF-8:" + trUtf8("Anglais") << "fr_FR.UTF-8:" + trUtf8("Français"); availableLanguages.sort(); QString lang = QInputDialog::getItem(this,trUtf8("Choix de la langue de l'interface"), trUtf8("Langue"), availableLanguages,0,false, &ok); if (ok && !lang.isNull()) { qApp->removeTranslator(&qtTranslator); qApp->removeTranslator(&myappTranslator); //Un 1er qtranslator pour prendre les traductions QT Systeme //c'est d'ailleur grace a ca qu'on est en RTL qtTranslator.load("qt_" + lang, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); qApp->installTranslator(&qtTranslator); //foreach (QWidget *widget, QApplication::allWidgets()) widget->setLayoutDirection(Qt::RightToLeft); //Et un second qtranslator pour les traductions specifiques du //logiciel myappTranslator.load("raconte-moi_" + lang, "lang"); qApp->installTranslator(&myappTranslator); ui->retranslateUi(this); } }
Dans les outils de dessin de l'interface (.ui)¶
Il faut penser à cocher les cases "translatable" sur les différents objets de l'interface (menu, étiquettes etc.).
Dans le code source on utilise trUtf8("texte traduisible")¶
Toute la documentation existe sur la fonction trUtf8 à vous de chercher !
Dans le code source de l'application on peut donner des indices grâce aux commentaires (utilisation du signe ':')¶
//commentaire normal //: pour qtlinguist /* ou commentaire long */ /*: commentaire long pour traducteur */
Extraire les chaines à traduire¶
Il faut aussi penser à modifier le fichier.pro pour ajouter les entrées pour les langues à traduire :
TRANSLATIONS = lang/calc_oc.ts \ lang/calc_en.ts
Puis, on extrait les chaines
lupdate-qt4 fichier.pro
C'est l'appel de cette fonction qui crée les fichiers .ts déclarés dans le fichier.pro s'ils n'existent pas encore
Traduire à l'aide de qt-linguist¶
ici les fichiers de langues occitan et anglais sont prêts à traduire, ils se trouvent dans le répertoire langues/
linguist-qt4
Compiler les fichiers de traduction¶
lrelease-qt4 fichier.pro