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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Quick Discussion :

La traduction d'interfaces QML


Sujet :

Qt Quick

  1. #1
    Membre r�gulier

    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Par d�faut 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 �.

    La traduction d'interfaces QML

  2. #2
    Membre extr�mement actif Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Ao�t 2010
    Messages
    1 707
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2010
    Messages : 1 707
    Par d�faut
    Article tr�s int�ressant mais il manque quelque chose de tr�s important. Comment prendre en compte les fichiers de traduction lorsqu'on n'utilise pas QML Viewer ? En pratique on ne lance pas son programme avec QML Viewer et la m�thode traditionnelle de Qt semble ne pas marcher.

  3. #3
    R�dacteur
    Avatar de Amnell
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par d�faut
    Citation Envoy� par air-dex Voir le message
    Article tr�s int�ressant mais il manque quelque chose de tr�s important. Comment prendre en compte les fichiers de traduction lorsqu'on n'utilise pas QML Viewer ? En pratique on ne lance pas son programme avec QML Viewer et la m�thode traditionnelle de Qt semble ne pas marcher.
    La m�thode expos�e dans l'article est fonctionnelle hors du QML Viewer. Une remarque cependant : cet article ne parle pas de traduction dynamique de l'application, seulement d'une unique traduction au lancement.

    Dans QML, quand une propri�t� change de valeur, elle �met un signal NOTIFY qui informe les propri�t�s en d�pendant qu'elles doivent �galement actualiser leur valeur.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Rectangle {
        // Cette propriété s'actualise après chaque émission du
        // signal NOTIFY de la propriété pressed de la mouseArea :
        color: mouseArea.pressed ? "blue" : "black"
        anchors.fill: parent
     
        MouseArea {
            id: mouseArea
            anchors.fill: parent
        }
    }
    Pour effectuer une traduction dynamique, il est n�cessaire d'avoir une propri�t� qui puisse notifier les propri�t�s textuelles d'un changement de langue. C'est-�-dire que si on se situe dans un �l�ment Text avec une propri�t� text: qsTr("Bonjour"). Si la langue change durant l'ex�cution, aucune propri�t� dans l'expression ne peut notifier de ce changement.

    La classe LanguageNotifier dans laquelle se situe une propri�t� QString qui est toujours d�finie � "" mais qui �met un signal de notification � chaque demande de changement de valeur.

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class LanguageNotifier : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QString language READ getLanguage WRITE setLanguage NOTIFY languageChanged)
     
    public:
        LanguageNotifier(QObject *parent = 0) : QObject(parent), _language(QString()) { }
        QString getLanguage() const { return _language; }
        void setLanguage(const QString&) {
            emit languageChanged();
        }
     
    Q_SIGNALS:
        void languageChanged();
     
    private:
        QString _language;
    };

    D�finition de la propri�t� contextuelle par exemple dans le main.cpp :

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    LanguageNotifier notifier;
    viewer.engine()->rootContext()->setContextProperty("notifier", &notifier);

    Et dans le QML :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    Text {
        text: qsTr("Bonjour") + notifier.language
        // ...
    }
    Lors d'un changement de langue (donc actualisation du Translator avec le nouveau fichier de langue), le C++ devra effectuer un notifier.setProperty("language", "La valeur est inutile."). Cela entra�nera une actualisation automatique des propri�t�s d�pendant de notifier.language, ce qui rappellera qsTr() et qui retraduira donc les �l�ments concern�s.

    Bonne continuation,
    Amnell.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : D�buter avec les Enlightenment Foundation Libraries (EFL)
    Derni�res traductions : Introduction � Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Cr�er des applications avec Qt 5 - Les essentiels

  4. #4
    Membre extr�mement actif Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Ao�t 2010
    Messages
    1 707
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 37
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2010
    Messages : 1 707
    Par d�faut
    Citation Envoy� par Amnell Voir le message
    La m�thode expos�e dans l'article est fonctionnelle hors du QML Viewer.
    Exact. Autant pour moi.

Discussions similaires

  1. Interface de manche virtuel guitare & QML
    Par betsprite dans le forum D�buter
    R�ponses: 6
    Dernier message: 08/10/2010, 13h58
  2. Traduction francaise interface SUGARCRM
    Par patrick.deb dans le forum SugarCRM
    R�ponses: 2
    Dernier message: 18/08/2010, 09h23
  3. [1.x] Traduction i18n qui ne remplace pas les chaines de mon interface
    Par Adesfire dans le forum Symfony
    R�ponses: 9
    Dernier message: 16/12/2009, 15h27
  4. traduction 'graphical user interfaces'
    Par kalyparker dans le forum Contribuez
    R�ponses: 1
    Dernier message: 11/07/2007, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo