Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 5


|
Conversation (Résolue) : Changer la langue du programme en fonctionnement |
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
je comprend pas...
le truc c'est que dans mon catalogue j'ai déja toutes les chaines que je veux traduire. Donc normalement il est pas sensé remplacer le texte entre _T() par celui qu'il trouve dans le fichier .mo???
Dernière modification par maspero (29-07-2009 13:57:48)
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Pas celui qui est entre _T("..."), mais uniquement celui qui est entre _("...").
Et pour revenir sur les boites de dialogue, en fait, sous Windows, les MessageBox de l'API Win32 sont utilisées (donc, avec la langue courante), et apparemment, c'est pas gagné pour les modifier 
@+ 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....
|
cfdev (Membre)
Lieu: Alpes de Haut Provence
Inscrit le : 08-11-2007
Messages: 127
Snippets: 4
Tutoriels: 0
Site web
Hors ligne |
hu il y a du mal , pour voir un exemple vraiment simple il y a m_photo dans la section "projet".
++
|
GNU Linux Power ! Slacker
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
Je ne vois pas ce qu'il ya de spécial dans m_photo... Parce que en gros tu changes de catalogue en fonction de l'OS, et ensuite tu défini wxLANGUAGE_DEFAULT pour la langue.
et c tout ?? en quoi y a t'il qq chose qui permettent de modifier l'intérieur des messagebox?
Voila je capte pas, peut tu etre plus précis stp?
Dernière modification par maspero (30-07-2009 10:25:43)
|
|
cfdev (Membre)
Lieu: Alpes de Haut Provence
Inscrit le : 08-11-2007
Messages: 127
Snippets: 4
Tutoriels: 0
Site web
Hors ligne |
en quoi y a t'il qq chose qui permettent de modifier l'intérieur des messagebox? Bien ça modifie tout en fait pas seulement l'intérieur des messagebox? dans mon snippe, l'application est "traduite" à la création des composants donc au démarrage de l'application. Pour le faire à chaud même si l'intérêt est quasi null, il faut détruire est recréer les composants.
Ou sinon faire comme la plupart des applications en bois qui font une fonction de fou ou il change tout les txt à la mano après avoir lu un fichier english.ini ou english.xml .... vachement lourd comme méthode.
++
|
GNU Linux Power ! Slacker
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
Ouais j'ai capté. J'ai pas vraiment envie de créer une méthode comme ca 
Ya quand meme un truc bizarre! Quand Mon app lance OnInit() cad avant de créer la fenetre principale, il définit la langue :
Code Cpp:bool TAPeditor::OnInit() //CODE INITIATEUR { wxApp::OnInit(); // appel de la fonction de la classe wxApp SetUILanguage(wxLANGUAGE_ENGLISH, true); mainWindow = new TAPframe(NULL); mainWindow->SetSize(wxSize(GetSystemMetrics(SM_CXSCREEN)*4/5 , GetSystemMetrics(SM_CYSCREEN)*4/5 )); mainWindow->Show(true); return true; } void TAPeditor::SetUILanguage(wxLanguage language, bool init) // "init" indique si la fonction est appelée depuis OnInit (initialisation) ou d'ailleur (changement de langue) { 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(); }
Et malgré les traductions que j'ai fait, il reste des chaines en francais dans mon code alors que je définit l'anglais!!! (les chaines qui sont dans les messagebox et les controles) C bizarre non?
Parce que je me disais que si le changement instantanné de la langue ne marche pas je pouvais toujours créer un fichier de config et redemarrer l'app au changment de langue. Mais la ca va foirer.
Dernière modification par maspero (31-07-2009 10:11:32)
|
|
cfdev (Membre)
Lieu: Alpes de Haut Provence
Inscrit le : 08-11-2007
Messages: 127
Snippets: 4
Tutoriels: 0
Site web
Hors ligne |
Et malgré les traductions que j'ai fait, il reste des chaines en francais dans mon code alors que je définit l'anglais!!! (les chaines qui sont dans les messagebox et les controles) C bizarre non? Oui c bizzard, es-tu sur d'avoir aperçu ces chaines dans Poedit? peut-être qu'elles n'apparaissent pas dans poedit donc pas dans le catalogue...
Parce que je me disais que si le changement instantanné de la langue ne marche pas je pouvais toujours créer un fichier de config et redemarrer l'app au changment de langue. Mais la ca va foirer. ouai c'est une solution qui marche sans soucis.
|
GNU Linux Power ! Slacker
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
Oui oui elles sont bien dans PoEdit d'ou mon probleme...
|
|
cfdev (Membre)
Lieu: Alpes de Haut Provence
Inscrit le : 08-11-2007
Messages: 127
Snippets: 4
Tutoriels: 0
Site web
Hors ligne |
Ces chaines de caractères ont des spécificités ? j'entends par la des ê ë ou autres ?
PS: j'ai du mal avec ton avatar....
|
GNU Linux Power ! Slacker
|
maspero (Membre)
Inscrit le : 19-05-2009
Messages: 81
Snippets: 0
Tutoriels: 0
Hors ligne |
salut,
bon alors, j'ai dégagé tous les accents et autres symboles qui peuvent etre source de probleme.... Meme probleme! 
tu n'aimes pas mon clown?
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
maspero:tu n'aimes pas mon clown? Trouvé ici en plus gros !
|
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....
|
Totobeloeil (Nouveau membre)
Inscrit le : 20-11-2009
Messages: 1
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
Je travaille sur un logiciel écrit en anglais (US). Je souhaite que lors de son initialisation, ce logiciel choisisse le langage de l'interface automatiquement en fonction du langage paramétré au niveau du système (par défaut). Pour cela, j'ai écrit le code ci-dessous, qui fonctionne (pour un fichier "./lang/traduct_fr_FR.mo") .
Code Cpp: #include <wx/intl.h> wxLocale *def_lang; wxString loc_lang_canonical; wxString loc_lang_filename; wxLocale::AddCatalogLookupPathPrefix(wxT(".\\lang")); def_lang = new wxLocale( wxLANGUAGE_ENGLISH_US, wxLOCALE_CONV_ENCODING ); loc_lang_canonical = wxLocale::GetLanguageInfo(wxLANGUAGE_DEFAULT)->CanonicalName; loc_lang_filename = "traduct_" + loc_lang_canonical; def_lang->AddCatalog(wxT(loc_lang_filename));
Si je mets wxLANGUAGE_DEFAULT (ou wxLANGUAGE_FRENCH) à la place de wxLANGUAGE_ENGLISH_US, j'obtiens des résultats bizarres à l'exécution. Je ne comprends pas pourquoi. On dirait qu'il y a un problème de paramètre de compilation ou d'édition de liens, ou alors un souci de dépassement de capacité. Auriez-vous une idée ?
|
|
|