2016-08-10 2 views
0

J'utilise qt linguist pour traduire mon programme dans différentes langues, mais il ne montre pas qu'il traduit le texte dans le programme. J'ai défini les polices appropriées et ajouté le fichier .ts à TRANSLATIONS. J'utilise lupdate et lrelease commandes.qt traducteur ne montre pas le texte traduit dans le programme

comment puis-je créer le fichier .ts aussi? (Je crée un fichier texte et change le format en .ts est-ce correct?)

+0

avez-vous charger la traduction en application? http://doc.qt.io/qt-5/qcoreapplication.html#installTranslator http://doc.qt.io/qt-5/qtranslator.html#load –

+0

oui. Je charge les fichiers .ts et les fichiers .qm –

+0

il y a beaucoup de choses à faire pour que la traduction soit active. La description de votre problème est simple à court et incomplète. Suivez les instructions de Qt et assurez-vous de ne rien manquer. Vérifiez également les journaux peut-être là Qt signale une erreur. –

Répondre

2

Revie Qt Translation.

Pour traduire l'application dynamique:

1 - terminal de commande Ouvrir Qt et accédez à votre dossier de projet. 2 - Obtenez toutes la chaîne traduisible de votre projet

lupdate -pro Example.pro -ts example.ts 

3 - Traduire toute la chaîne à la langue à l'aide QLinguist 4 - Générer le fichier .qm avec toute traduction exécution:

lrelease example.ts 

5 - Ajoutez ce fichier, example.qm, comme ressource à votre projet pour l'inclure avec le fichier exécutable. Resource System

6 - Maintenant, utilisez QTranslator pour traduire l'application:

QTranslator* translator = new QTranslator; 
if(translator->load(":/"+example.qm)){ 
    qApp->removeTranslator(translator); // Remove the translator if was used before 
    qApp->installTranslator(translator); // Install again the translator to force a new translation. 
    qDebug() << "Translation success!" ; 
}else{ 
    qDebug() << "Error file not found!"; 
} 

7 - Vous pouvez gérer l'événement de traduction à l'aide changeEvent:

void MainWindow::changeEvent(QEvent* event) 
{ 
    if (event) { 
      switch(event->type()) { 
       // When the translator is loaded this event is send. 
       case QEvent::LanguageChange: 
        break; 
       // Whem the system language changes this event is send. 
       case QEvent::LocaleChange: 
        //retranslate the ui. 
        break; 
       default: 
        break; 
      } 
    } 
    QMainWindow::changeEvent(event); 
} 

C'est tout!

+0

qu'est-ce que le terminal de commande qt? Je ne l'ai pas je pense. –

+1

Si vous exécutez Qt sous Windows, ouvrez votre dossier de programme qt et recherchez la commande Qt MVSC/MinGW – mohabouje

+0

où vous chargez votre police? Je pense que je ne peux pas charger ma police –