J'utilise i18n.tr depuis un certain temps dans mes buntu-Touch projets. Je sais de quoi parle cette fonction mais je ne sais pas comment ajouter une traduction à mon projet.
Où dois-je placer mon fichier de traduction? Avec quel nom? Comment son contenu doit-il être écrit? Comment dois-je le connecter à mon application? Comment puis-je le tester avec qmlscene?
Jetez un oeil à TouchWriter code et surtout son README, où toutes les commandes nécessaires sont données.
Vous devez lier le domaine de texte avant d'utiliser gettext. En C++, vous pouvez le faire comme ceci:
bindtextdomain("domainname", "somedir");
textdomain("domainname");
En Qml, vous pouvez probablement faire quelque chose comme ceci:
i18n.bindtextdomain("domainname", "somedir");
i18n.domain = "domainname";
Assurez-vous de le faire avant 18n.tr
est utilisé.
Générer .pot
modèle et source .po
fichiers, utilisez ces commandes:
xgettext -C --qt --keyword=tr -p somedir -o messages.pot
msginit -i somedir/messages.pot -o somedir/somelanguage.po
(remplacez somedir
par le répertoire auquel votre domaine est lié et somelanguage
par la langue dans laquelle vous souhaitez traduire).
Générer .mo
fichiers de la source .po
fichiers, utilisez msgfmt po-file -o mo-file
commande.
Compilé .mo
les fichiers doivent être placés dans un répertoire auquel vous avez lié le domaine de texte, plus précisément dans
somedir/somelanguage/LC_MESSAGES/domainname.mo
(remplacez somedir
, somelanguage
et domainname
par vos valeurs).