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/ :
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_()enveloppeQCoreApplication::translate("<Context>", s)pour les chaînes situées hors d'unQObject.
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.