Membres inscrits :668
Membres en ligne : 0
Invités en ligne : 8


|
| Conversation : Internationalisation |
Harrys (Nouveau membre)
Inscrit le : 06-01-2011
Messages: 8
Snippets: 0
Tutoriels: 0
Hors ligne |
Je cherche à mettre en place l'internationalisation pour mon application. J'ai réussi à modifier la langue directement dans le code.
Maintenant, ce que je souhaiterais faire, c'est récupérer la langue de l'OS et sélectionner la langue de l'application en fonction de celle-ci. Si la langue existe, je prend le catalogue correspondant sinon je prend comme langue par défaut l'anglais.
Comme je ne connais pas la destination finale de l'application, je vais fournir un catalogue vierge et une procédure pour mettre en place une nouvelle langue. Cependant, il n'est pas question de fournir les sources du projet c'est pourquoi les langues devront être ajoutés sans re-compiler le projet.
Si vous connaissez une solution, je suis preneur.
Pour l'instant, je n'ai pas trouvé d'autre solution qu'une fenêtre de configuration dans l'application afin de choisir la langue. Et le contenu de mon menu déroulant évoluerai en fonction du contenu de mon dossier locale (je rechercherais les fichiers .po du dossier et je parserai les un après les autres pour connaître les langues qu'ils contiennent).
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
La solution est toute simple : utiliser le système d'internationalisation de wxWidgets.
Voici le principe (dans les grandes lignes) : - Tu crées ton application avec toutes les chaines de caractères en anglais : ça sera donc la langue par défaut. - Toutes les chaines devant être traduites devront être spécifiées avec la macro _("..."). - Inversement, toutes les chaines ne devant pas être traduites devront être spécifiées avec la macro _T("...").
Tu trouveras dans les snippets de ce site un petit exemple.
Si tu veux quelque chose de plus complet, tu peux jeter un coup d'oeil aux sources de wxToDoList.
Et bien entendu, si tu as besoin de plus d'infos, n'hésites pas à demander.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Bon, en fait, j'ai répondu un peu trop vite.
Apparemment, tu as bien compris le principe de l’internationalisation avec wxWidgets.
Pour la détection de la langue de l'OS, ainsi que l'ajout de langues sans avoir à recompiler le projet, regardes les sources de wxToDoList : c'est exactement ce qui se passe.
En voici le principe : - Les catalogues sont placés dans un sous-dossier de l'application nommé "langs". - Chaque catalogue possède son propre dossier correspondant au nom "canonique" de la langue (par exemple, pour le français, c'est "fr_FR". - Pour récupérer la liste des langues disponibles, voici ce que je fais : * Je récupère la liste complète (chemins compris) de tous les fichiers nommés "wxToDoList.mo" dans le dossier "langs" et ses sous-dossiers. * A l'aide d'une variable wxFileName, je récupère le chemin relatif de ces fichiers par rapport au dossier "langs". * En ne prenant que la partie "Path" de ce chemin relatif, j'obtiens la liste des langues disponibles. * Il suffit ensuite de les transformer en quelque-chose de compréhensible à l'aide de wxLocale et le tour est joué.
J'espère que ça pourra t'aider.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
|