Aller au contenu

Traductions

Chaque chaîne visible par l'utilisateur qu'un plugin affiche doit être traduisible, avec des catalogues pour les quatre langues prises en charge — en, pl, de, fr — avant que le plugin ne soit considéré comme terminé. C'est la même exigence que pour les tests.

Catalogues

Chaque plugin qui possède la moindre chaîne porte un catalogue .ts par langue dans son dossier Translations/ :

Translations/
  MyPlugin_en.ts
  MyPlugin_pl.ts
  MyPlugin_de.ts
  MyPlugin_fr.ts

Raccordez-les à la compilation via mte_add_plugin :

mte_add_plugin(NAME MyPlugin
    SOURCES Src/MyPlugin.cpp
    TRANSLATIONS
        Translations/MyPlugin_en.ts
        Translations/MyPlugin_pl.ts
        Translations/MyPlugin_de.ts
        Translations/MyPlugin_fr.ts
)

La compilation exécute lrelease pour préparer les fichiers .qm ; TranslationManager les charge par nom de catalogue à l'exécution (les catalogues des plugins sous Plugins/Translations/<Plugin>/).

Marquer les chaînes pour la traduction

  • Préférez QObject::tr(...) (contexte = la classe) pour les chaînes UI ordinaires.
  • L'assistant tr_() enveloppe QCoreApplication::translate("<Context>", s) pour les chaînes situées hors d'un QObject.

tr_() est invisible pour lupdate

lupdate ne peut pas résoudre le contexte à l'intérieur de tr_(), ces catalogues sont donc maintenus à la main. Gardez le texte <source> identique octet pour octet à la chaîne d'exécution, sinon la traduction ne s'appliquera silencieusement pas.

Définition de « terminé »

La localisation d'un plugin n'est terminée que lorsque les quatre fichiers .ts existent, sont raccordés, et que lrelease rapporte 0 chaîne non finalisée.