wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

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

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1 2  
 
Accueil » Accueil forums » Développement C/C++
» Changer la langue du programme en fonctionnement
Conversation (Résolue) : Changer la langue du programme en fonctionnement
10-07-2009 12:12:18  Changer la langue du programme en fonctionnement #1
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Voila je cherche a ce que quand l'utilisateur choisi la langue (dans un menu), toutes les chaines de caracteres de mon prog (cad celles que j'ai créées + celles de wxwidget (ex : Oui, non etc.) ) change de langue.

J'ai pour cela trois fichiers : un en francais , un en anglais, un en roumain (oui je fais mon stage en roumanie)

avec des

#define CHAINE1 "erreur faites ci"
#define CHAINE2 "Effectivement Natalie Portman déchire"
#define CHAINE3 "Fermer l'application?"

et des

#define CHAINE1 "Error do this"
#define CHAINE2 "Indeed Natalie POrtman rules"
#define CHAINE3 "Close the application"

et encore

#define CHAINE1 "Greşeală face acest lucru"
#define CHAINE2 "Natalie Portman este, de fapt, frumos"
#define CHAINE3 "Aproape? "

Tout ca tout ca.... :)

Comment je peux faire?



Edit : La prochaine fois que le bot de google va passer sur le site, cela sera le début d'une nouvelle ère! A chaque fois que qq recherchera N.P. sur google ( env 3 520 254 fois par jour en moyenne), cette personne tombera sur wxdev !! Il serait temps de mettre de la pub :)

Dernière modification par maspero (10-07-2009 12:16:35)

10-07-2009 13:18:59  Re: Changer la langue du programme en fonctionnement #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Ce snippet devrait pouvoir t'éclairer.

Avec cette méthode, tu vas même pouvoir ajouter autant de langues que tu le souhaites sans modifier une seule ligne de code : cool, non ?

Si tu as besoin de plus d'infos, n'hésites pas.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
10-07-2009 22:54:40  Re: Changer la langue du programme en fonctionnement #3
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Ouais j'ai matté le snipett et ca a pas l'air si simple :)

En gros j'encadre mes string a traduire par _( ma string )
et celle que je veux pas traduire par wxT()

Jusque la ok!

mais ensuite... on défini un wxLocal qui est le fichier de langue?
et c'est tout?
Il va pas traduire tous seul ! Comment ca marche?

ya pas moyen de faire a l'ouverture du prog :

Code Cpp:

if(langue==fr) #include francais.h"
11-07-2009 11:56:31  Re: Changer la langue du programme en fonctionnement #4
4ian (Membre)
Inscrit le : 06-11-2007
Messages: 48
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
et c'est tout?
Il va pas traduire tous seul ! Comment ca marche?
Tu va utiliser un programme nommé PoEdit qui va analyser ton code et rassembler toutes les chaines à traduire.
Tu les traduis à l'aide de ce programme, et tu enregistre le résultat dans un fichier .mo, qui va être utilisé par le wxLocale.

4ian

wwwcompilgames.net
12-07-2009 01:52:12  Re: Changer la langue du programme en fonctionnement #5
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
J'ai récupéré POedit!

Ya t'il un tutoriel sur son utilisation?

J'ai mes fichiers .cpp qui contiennent mes chaines de caracteres avec _("").
Comment est ce que je génere le catalogue?
12-07-2009 11:24:20  Re: Changer la langue du programme en fonctionnement #6
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Tu crées un nouveau fichier ".po"
Tu définis les différentes options (langue, pays, équipe de traduction, ...)
Tu défini le chemin de base + le chemin contenant les sources
Ensuite, à chaque modif, tu vas dans "Catalogue" -> "Mettre à jour depuis les sources"

Il va scanner les fichiers sources pour trouver les chaines à traduire, et détecter les modifs depuis la dernière fois que tu l'as fait.

A l'enregistrement, il va te créer un fichier ".mo" : c'est vers celui-ci que devra pointer ta variable wxLocale, et la traduction se fera toute seule.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
13-07-2009 00:29:38  Re: Changer la langue du programme en fonctionnement #7
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Ok alors j'ai fais tout comme tu m'as dis :)
j'ai mon fichier langage.mo.
J'ai rajouté le code du snippet. Ca compile bien.

Mais ca ne traduit pas. Ce que je trouve normal finalement :

Je lui envoi un wxLangage wxLANGUAGE_FRENCH  ou wxLANGUAGE_ENGLISH ou wxLANGUAGE_ROMANIAN et comment est ce qu'il sait quel fichier utiliser?
(je suis bien obligé de créer un fichier po par langue, non?)

Et meme si je n'avais que francais anglais, comment est ce qu'il sait que c'est langage.mo qu'il doit ouvrir?

Merci de votre patience.
:)
13-07-2009 12:41:05  Re: Changer la langue du programme en fonctionnement #8
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Voici la méthode que l'on a utilisée pour le logiciel WinSplit:

Le logiciel est entièrement codé en anglais.
Les fichiers de langues ont tous le même nom (winsplit.mo), et se trouvent dans dossier portant le nom de la langue concernée, dans un sous-répertoire "languages" du dossier d'installation :
Ainsi, pour la langue française, il se trouve dans :
C:\\Program Files\\WinSplit-Revolution\\languages\\fr\\monsplit.mo
Et pour l'italien, ça donne :
C:\\Program Files\\WinSplit-Revolution\\languages\\it\\monsplit.mo

Au démarrage, on défini le dossier de langue de la façon suivante (en simplifiant) :

Code wxWidgets:

wxLocale::AddCatalogLookupPathPrefix(_T("C:\\Program Files\\WinSplit-Revolution\\languages"));

Et au moment de changer la langue en français, par exempel :

Code wxWidgets:

//la variable m_locale est une variable de type wxLocale
// membre de la classe gérant les options
m_locale.Init(wxLANGUAGE_FRENCH, wxLOCALE_CONV_ENCODING)


Normalement, ça suffit à faire prendre en compte au prog la langue voulue

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
14-07-2009 12:04:16  Re: Changer la langue du programme en fonctionnement #9
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
merci Xaviou j'essaye ca dès que j'ai réglé un autre pb auquel je suis confronté. :)
----------
Ok une dernière question sur l'utilisation de poedit

Quand je lui indique les sources il va chercher le texte que j'ai marqué.
Ca ok!
Mais est ce que je le traduis? Ou est ce que je fais 3 fichiers ( 1 pour chaque langue) en modifiant a chaque fois mon code source?

J'essaye ca en attendant...

Dernière modification par maspero (22-07-2009 16:28:59)

22-07-2009 17:39:46  Re: Changer la langue du programme en fonctionnement #10
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
En fait, poEdit va créer un fichier ".po" par langue dans lequel tu retrouveras, après une série de headers, une copie de chaque chaine à traduire suivie de sa traduction (vide au départ).

Il ne faut donc surtout pas modifier tes sources : les chaines qu'elles contiennent servent de référence pour le système de traduction.

poEdit te permet de renseigner la traduction de chaque chaine dans le fichier ".po". Quand tu enregistres, il te crées un fichier ".mo" qui est une sorte de "compilation". C'est ce fichier ".mo" qu'il faut donner au système de traduction pour que ça marche.

Par exemple, dans tes sources, tu crées un menu dont le titre est _("&File").
Après analyse des sources, poEdit aura trouvé la chaîne &File. Tu pourras donc la sélectionner (dans poEdit même) et indiquer la traduction (de mémoire, c'est dans la zone de texte du bas que l'on indique l'équivalence traduite).
Après, tout marche tout seul.

Le principe, c'est justement de ne pas avoir à modifier les sources du programme pour avoir une application multi-langues.

Donc, pour récapituler, tu ne te soucies pas de la traduction quand tu codes (sauf qu'il faut penser à mettre le bon format pour les chaines qui devront être traduites).
Pour chaque traduction, tu devras fournir un fichier ".mo" correspondant.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
23-07-2009 15:08:25  Re: Changer la langue du programme en fonctionnement #11
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Ok ... ca m'intrigue quand meme.
Pour 2 langues ca doit marcher. Mais pour 3???

Admettons que j'ai créé 2 fichiers :
1) francais anglais
2) francais roumain

En fait ce qui me chagrine c'est que lorsque je passe par exemple de francais à anglais, il va chercher le .mo correspondant à cette traduction. (le 1).
Mais si je passe de anglais à roumain????
il va d'abord transformer en francais, puis ensuite le francais en roumain?????
Si c'est ca c'est tres fort!!!



------------------------------------


Ok j'ai donc créé 3 fichiers :

francais tout pur (locale\fr)
francais - anglais  (locale\en)
francais - roumain  (locale\ro)

Dans ma classe application :

Code wxWidgets:

class TAPeditor: public wxApp
{
    public:
        TAPeditor();
        virtual bool OnInit();
        void SetUILanguage(wxLanguage language, bool init);
        ~TAPeditor();
    private:
        TAPframe * mainWindow;
        wxLocale * m_Locale;
};
 


son .cpp associé :

Code wxWidgets:

#include "TAPeditor.h"
TAPeditor::TAPeditor() : wxApp()// CODE DU CONSTRUCTEUR
{
}
 
 
bool TAPeditor::OnInit() //CODE INITIATEUR
{
    wxApp::OnInit(); // appel de la fonction de la classe wxApp
    SetUILanguage(wxLANGUAGE_FRENCH, true);
    mainWindow = new TAPframe(NULL);
    mainWindow->SetSize(wxSize(GetSystemMetrics(SM_CXSCREEN)*4/5 , GetSystemMetrics(SM_CYSCREEN)*4/5 ));
    mainWindow->Show(true);
    return true;
}
 
TAPeditor::~TAPeditor() //DESTRUCTEUR
{
 
}
 
void TAPeditor::SetUILanguage(wxLanguage language, bool init)
// "init" indique si la fonction est appelée depuis OnInit (initialisation) ou d'ailleur (changement de langue)
{
    if(!init)
        delete m_Locale;
    wxLocale::AddCatalogLookupPathPrefix(wxT("locale"));
    m_Locale = new wxLocale( language );
    m_Locale->AddCatalog(GetAppName());
    if(!init)
        mainWindow->RefreshUI();
}


Dans la classe Mainframe :

Code wxWidgets:

void TAPframe::OnMnuEnglishClick(wxCommandEvent& event)
{
    wxGetApp().SetUILanguage(wxLANGUAGE_ENGLISH, false);
    event.Skip();
}
 
void TAPframe::OnMnuRomanianClick(wxCommandEvent& event)
{
    wxGetApp().SetUILanguage(wxLANGUAGE_ROMANIAN, false);
    event.Skip();
 
}
 
void TAPframe::OnMnuFrenchClick(wxCommandEvent& event)
{
    wxGetApp().SetUILanguage(wxLANGUAGE_FRENCH, false);
    event.Skip();
 
}
 
void TAPframe::RefreshUI()
{
    wxMenuBar* oldMenuBar = GetMenuBar();
    SetMenuBar(CreateMenu());
    delete oldMenuBar;
    SetStatusText(_("Merci d'utiliser TAPeditor"),0);
    SetTitle(_("TAPeditor 1.0"));
}
 


Et ca change pas la langue du tout...
----------
up! :)

Dernière modification par maspero (28-07-2009 13:15:18)

28-07-2009 15:00:36  Re: Changer la langue du programme en fonctionnement #12
guyothomas (Membre)
Inscrit le : 05-06-2008
Messages: 66
Snippets: 0
Tutoriels: 0
Hors ligne
wxSalut Maspero,

en supposant que tu écrives en français dans ton code, le module de traduction va te créer une correspondance français-anglais et une français-roumain.
Quand tu passes de anglais à roumain, il va juste aller chercher dans l'autre table de correspondance les chaînes qui vont bien (que tu as traduites).

Pour l'initialisation de ta locale, j'ai l'impression qu'il te manque l'Init(wxUN_LANGAGE_ID) justement!

pour un de mes softs, j'ai ça, au démarrage du logiciel:

Code wxWidgets:

        m_locale.Init(lang_ID);    
        wxLocale::AddCatalogLookupPathPrefix(_T("./locale/"));
        m_locale.AddCatalog(GetAppName());
        //    This sets the decimal point to be '.', whatever the language defined !!!!!!!!!
        wxSetlocale(LC_NUMERIC, "C");        // didn't understand why "C"... tiens déjà vu ça ailleurs ^^

Après, là ou je veux utiliser un message traduit, je le fais comme ça par exemple:

Code wxWidgets:

#define __ _T   // en haut de chaque cpp qui utilise des traductions
wxLogMessage(wxGetTranslation(__("Impossible d'ouvrir...")));   
   
J'ai donc 2 choses à chaque fois:
1/ wxGetTranslation qui indique à l'exe d'aller chercher la bonne chaine dans le (bon) catalogue.
2/ la merdouille __ (double underscore), que j'ai définie égale à _T pour que ce soit vu comme un wxString dans visual studio. Et qui sert aussi et surtout de balise à poedit pour repérer les chaines à traduire (et à mettre dans la table de correspondances).

Si tes chaines ont bien été vues par poedit et que tu les as traduites, peut-être qu'il te manque juste le wxGetTranslation() pour que ça aille chercher les traductions.

Tiens nous au courant quand ça tourne, ça m'intéresse de pouvoir changer le langage sans redémarrer le logiciel.

Bonne wxRoumanie,

Thomas.
28-07-2009 21:23:31  Re: Changer la langue du programme en fonctionnement #13
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Hello

Pour ce qui est du changement de langue "à chaud", je ne vois pas d'autre solution que de détruire la frame courante et la re-créer.

Le plus simple est de stocker l'ID de la langue voulue (fichier ini, base de registre, ...) et de l'appliquer au démarrage de l'application.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2009 09:26:41  Re: Changer la langue du programme en fonctionnement #14
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
je comprend pas vraiment je fais pourtant comme dans le snippet non ?
Je vois pas pourquoi ca ne fais rien
29-07-2009 09:28:57  Re: Changer la langue du programme en fonctionnement #15
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Où as tu mis l'initialisation de la variable wxLocale ?

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2009 09:35:02  Re: Changer la langue du programme en fonctionnement #16
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
j'apelle SetUILanguage (voir plus haut) a louverture du prog.
29-07-2009 10:19:08  Re: Changer la langue du programme en fonctionnement #17
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Essayes tout d'abord de mettre une vraie variable wxLocale, et non un pointeur (il n'est pas nécessaire de la détruire pour changer la langue)

Du coup, ça va supprimer les "new" dans SetUILanguage.
Il faudra tout simplement appeler "Init" pour changer la langue :

Code wxWidgets:

    wxLocale::AddCatalogLookupPathPrefix(wxT("locale"));
    if ( !m_locale.Init(wxLANGUAGE_FRENCH, wxLOCALE_CONV_ENCODING) )
    {
        wxMessageBox(_T("This language is not supported by the system."));
    }
    m_locale.AddCatalog(GetAppName());


il faut que les fichiers de langue (les ".mo") soient dans un sous répertoire "locale\xx" du dossier de l'application.
Par exemple, pour la traduction française dans mon cas, le fichier ".mo" est dans le dossier "\locale\fr"

Et ça marche nickel !

@+
Xav'
----------
P.S: Il n'est pas nécessaire de mettre un fichier de traduction pour la langue dans laquelle est codée ton application.

Dernière modification par Xaviou (29-07-2009 10:19:58)


Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2009 10:49:38  Re: Changer la langue du programme en fonctionnement #18
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
Ok j'ai supprimé le fichier fr qui ne me servait pas.
J'ai modifié mon wxLocale pour qu'il ne soit plus un pointeur j'ai donc :

Code wxWidgets:

void TAPeditor::SetUILanguage(wxLanguage language, bool init)
{
 
    wxLocale::AddCatalogLookupPathPrefix(wxT("locale"));
    if ( !m_Locale.Init(language, wxLOCALE_CONV_ENCODING) )
    {
        wxMessageBox(_T("Cette langue n'est pas supporté par le système."));
    }
    m_Locale.AddCatalog(GetAppName());
    if(!init)mainWindow->RefreshUI();
}


qui est apellée lors de l'initialisation du programme OnInit()...
et ensuite dans ma fenetre j'utilise :

Code wxWidgets:

void TAPframe::OnMnuRomanianClick(wxCommandEvent& event)
{
    wxGetApp().SetUILanguage(wxLANGUAGE_ROMANIAN, false);
    event.Skip();
 
}


et la fonction RefreshUI :

Code wxWidgets:

void TAPframe::RefreshUI()
{
    wxMenuBar* oldMenuBar = GetMenuBar();
    SetMenuBar(CreateMenu());
    delete oldMenuBar;
    SetStatusText(_("Merci d'utiliser TAPeditor"),0);
    SetTitle(_("TAPeditor 1.0"));
}


et il ne se passe rien du tout
29-07-2009 11:29:22  Re: Changer la langue du programme en fonctionnement #19
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Essayes de changer de langue "en dur" au démarrage de l'application (si tu as codé en français, passes en anglais par défaut, par exemple, pour voir).

Les fichiers ".mo" ont bien le nom de l'application ?
----------
Je viens d'essayer la destruction/reconstruction de la barre de menus, et ça marche tip/top

Dernière modification par Xaviou (29-07-2009 11:41:53)


Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2009 11:42:41  Re: Changer la langue du programme en fonctionnement #20
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
j'ai fais mais ca marche pas...

AAAAAh tu veux dire que si mon prog s'apelle TAPeditor.exe alors mes fichiers mo doivent s'apeller TAPeditor.mo...

j'essaye.

-----------------------------------------------

Ok c'était ca le probleme. Maintenant ca marche.

je l'écris en gros pour les eventuelles personnes qui auraient le meme probleme :

LE FICHIER .MO DOIT PORTER LE MEME NOM QUE L'APPLICATION!!!!!!!!!!!!!!!!!!!

et je vais le rajouter en commentaire dans le snippet.

Merci Xav'

Dernière modification par maspero (29-07-2009 11:45:18)

29-07-2009 13:07:54  Re: Changer la langue du programme en fonctionnement #21
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
maspero:
je l'écris en gros pour les eventuelles personnes qui auraient le meme probleme :

LE FICHIER .MO DOIT PORTER LE MEME NOM QUE L'APPLICATION!!!!!!!!!!!!!!!!!!!
Pas forcément !

Mais dans ton cas, oui, car tu définis le nom du fichier ".mo" comme ça :

Code wxWidgets:

m_Locale.AddCatalog(GetAppName());

Mais tu peux mettre ce que tu veux à la place de "GetAppName()".
Si tu veux juste l'appeler "lang.mo", tu fais :

Code wxWidgets:

m_Locale.AddCatalog(_T("lang"));


@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2009 13:24:06  Re: Changer la langue du programme en fonctionnement #22
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
C'est bizarre par contre ca change le menu parce que je le reconstruit apres le changement mais les boites de dialogue ne changent pas de langue...
29-07-2009 13:44:45  Re: Changer la langue du programme en fonctionnement #23
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Tu veux parler des boutons standards ?
Si c'est le cas, c'est normal, car leur traduction n'est présente nulle part dans ton fichier ".mo".

Encore que d'après mes tests, les boutons sont biens traduits sous Windows.
----------
Rectification, sous Windows, ils restent avec leur valeur système (donc, le français pour moi)

Dernière modification par Xaviou (29-07-2009 13:45:46)


Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
29-07-2009 13:51:34  Re: Changer la langue du programme en fonctionnement #24
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne
non non ce sont des chaines de caracteres qui se trouvent dans le .mo!!!
et elles ne sont pas traduites.
exemple :

Code Cpp:

wxArrayString choice;
         choice.Add(_("Quitter SANS sauvegarder"));
         choice.Add(_("Quitter ET sauvegarder"));
         int answer = wxGetSingleChoiceIndex(_("Voulez vous sauvegarder le fichier avant de le fermer ?"),
_("Fermer ?"),choice,this,wxDefaultCoord,wxDefaultCoord,true,wxCHOICE_WIDTH,wxCHOICE_HEIGHT );
29-07-2009 13:52:56  Re: Changer la langue du programme en fonctionnement #25
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Tu peux faire un deuxième fichier ".mo" avec les traductions wxWidgets dont tu as besoin.
Ou tu peux en faire un à partir des fichiers présents dans le répertoire "locale" d'installation des libs.
Ensuite, tu le rennommes (wxWidgets.mo par exemple) et tu le spécifies lors de la sélection de la langue :

Code wxWidgets:

m_Locale.AddCatalog(GetAppName());
m_Locale.AddCatalog(_T("wxWidgets"));

Comme ça, tu n'as que ton fichier à mettre à jour.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
Menu forum (navigation):
Pages: 1 2  
 
Accueil » Accueil forums » Développement C/C++
» Changer la langue du programme en fonctionnement