2010-02-05 15 views
2

Tout en développant une application Qt, je suis tombé sur un problème dans l'utilisation QTranslator. Après un peu de recherche, j'ai découvert que le problème était avec lupdate de problème ayant Qt avec leQt Traduction lupdate et namespaces

using namespace; 
directive

. Suivant les instructions trouvées dans here, j'ai découvert que je devais utiliser des commentaires spéciaux dans mon code, pour aider lupdate à comprendre que les classes sont dans un espace de noms. Le commentaire spécial est quelque chose comme ceci:

/* 
TRANSLATOR namespace::MyClass 
*/ 

Alors, je a ajouté des commentaires dans toutes mes sources qui avaient QString gérés par tr. Mais, encore, les applications ne sont pas traduites. La méthode installTranslator de QTranslator renvoie true. Le code que j'utilise pour installer le traducteur est

Application app(argc,argv); //Application is a subclass of QApplication 
QTextCoded::setCodecForTr(QTextCodec::codecForName("utf8")); 
QTranslator translator; 
translator.load(QString("..//language//") + locale); 
app.installTranslator(&translator); 
app.exec(); 

Est-ce que quelqu'un a rencontré le même problème? Qu'est-ce que je fais mal?

EDIT--

Rectifié une petite erreur dans le code ci-dessus, mais toujours pas de résultats.

+0

conjecture aveugle: Utilisez-vous QObject :: tr() sur les chaînes que vous voulez traduire? De plus, Qt ne peut pas savoir sur les chaînes dynamiques en lupdate'ing, donc si vous savez ce que les chaînes apparaîtront (peut-être récupéré à partir d'un DB) vous devez vous assurer qu'ils apparaissent à l'intérieur tr(), même si ce code est exécuté jamais. – erelender

+0

@erelender Oui, j'utilise tr() dans toutes les chaînes de temps de compilation que j'ai (texte Étiquettes et boutons, en majeur). Et pourtant, je ne reçois pas la traduction correcte. – cake

Répondre

0

vous installez le traducteur, mais ne pas charger traduction pour elle.

La documentation que vous lien vers spécifie exactement:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QTranslator translator; 
    translator.load(QString("arrowpad_") + locale); // here load translation 
    app.installTranslator(&translator); 

    app.exec() 
} 
+0

Ops ... J'ai oublié cette étape, mais ce n'est pas le problème (je l'ai déjà essayé). Je suis en train d'éditer la question. – cake