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

Outils Discussion :

Traduction finale inopérante


Sujet :

Outils

  1. #1
    Invité
    Invité(e)
    Par défaut Traduction finale inopérante
    Bonjour,

    Le programme que je suis en train de coder me pose des problèmes pour la traduction.
    Je code avec QtCreator et j'ai suivi le tutoriel de QtLinguist pour la traduction.

    Voici le code du lanceur :

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <iostream>
    #include <QApplication>
    #include <QTranslator>
    #include "Presentation/MainWindow.h"
    #include "Presentation/DialogMessage.h"
    using namespace std;
     
    int main(int argc, char* argv[]) {
     
    	cout << endl << "Begining program : Application - Launcher" << endl;
    	QApplication app(argc, argv);
     
    	QTranslator translator;
    	if(!translator.load("Translator_en")) {
    		DialogMessage d(QString("Translation not loaded."));
    		d.show();
    		d.exec();
    	}
    	app.installTranslator(&translator);
     
    	//  ---------------------------------------------------------------------------------------------------
     
    	MainWindow wind;
    	wind.show();
     
    	app.exec();
     
    	//  ---------------------------------------------------------------------------------------------------
    	cout << "Ending program" << endl;
    	return 0;
    }
    J'ai bien fait attention à utiliser la fonction tr() pour chaque texte en dur, à cocher la propriété "Traduisible" pour les textes générés dans QtDesigner, à employer correctement les fonction lupdate et lelease et à placer le fichier .qm dans le répertoire de l'exécutable. J'ai vérifié et revérifié chaque étape, utilisant également le manuel QtLinguist du site de Qt, mais en vain.

    La vérification à l'instruction "translator.load()" m'assure que le fichier est bel et bien chargé dans mon application, mais malgré cela, rien dans mon application n'est traduit.

    Je ne trouve aucune explication a ce problème. ALors aurait-je manqué quelque chose de primordial ? Quelqu'un sait ce qui manque ?

    Merci d'avance.
    Lelfic

  2. #2
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Bonjour,

    Ton programme ne charge que le fichier Translator_en.qm. Est-ce voulu?

    Le mieux serait de nous poster le contenu des fichiers définissant tes classes, parce que ton fichier main.cpp ne me semble pas contenir d'erreur.

    Bis dann.
    De retour, plus sportif mais toujours aussi moche.
    _____________
    Pro: Programmation en C/C++ (embarqué ou non)
    Loisir: Programmation en C++11/14/17 avec la STL ou Qt 5

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Oui, le chargement systématique en anglais est voulu, précisément pour tester si la traduction fonctionne (les textes étant nativement en français).


    Le contenu de mes classes étant confidentiel je ne peux montrer pas en montrer grand chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(instrument == 0) {
    		emit exception(tr("Echec d'initialisation d'une session de communication avec l'équipement."));
    		return;
    	}
    Mais tous mes textes, dans l'ensemble du programme, sont passés par la fonction tr() à la manière de celui-ci. De même, chaque classe contenant du texte traduit hérite, directement ou non, de QObject. D'après ce que j'ai lu, il n'y a rien de plus à faire pour que la traduction soit effective, me semble-t-il.

    De toute manière, en supposant que j'ai mal utilisé la fonction tr(), cela n'explique pas que les textes générés dans QtDesigner ne soient pas traduits non plus.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Mise à jour de mon problème.

    Il se trouve que je mérite de m'auto-flageller avec un poireau sur la place de la comédie car j'avais oublié de placer le fichier .qm dans le dossier de mon shadowBuild. Une erreur grossière donc.

    Cela dit, il demeure un problème.

    Mon application est multi-threadée et j'utilise des signaux pour faire passer les messages d'erreur de mon thread applicatif à mon thread principal supportant l'IHM (par exemple le code posté plus haut). Le slot correspondant au signal récupère le message et l'affiche dans un objet de type QDialog.

    Le problème est que les messages provenant du thread applicatif ne sont pas traduits, contrairement à ceux du thread principal.

    Il y a fort à parier qu'il y a quelque chose d'autre à faire pour que mon translator installé dans le thread principal influe sur tout les threads de l'application, mais quant-à savoir quoi ...

Discussions similaires

  1. [XL-2013] Traduction Excel / VBA inopérante
    Par Henri1830 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 14/12/2014, 14h10
  2. traduction en delphi "reinterpreted cast"
    Par Chupakabra dans le forum Langage
    Réponses: 3
    Dernier message: 13/02/2003, 15h49
  3. Traduction
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/09/2002, 23h43
  4. Changement de langue dynamique (D6 et outils de traduction)
    Par agon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2002, 16h15

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