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 : 3

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
29-07-2009 13:55:02  Re: Changer la langue du programme en fonctionnement #26
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)

29-07-2009 14:18:15  Re: Changer la langue du programme en fonctionnement #27
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....
29-07-2009 15:12:35  Re: Changer la langue du programme en fonctionnement #28
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 :p, pour voir un exemple vraiment simple il y a m_photo dans la section "projet".

++

GNU Linux Power !
Slacker
30-07-2009 10:18:38  Re: Changer la langue du programme en fonctionnement #29
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)

31-07-2009 09:43:59  Re: Changer la langue du programme en fonctionnement #30
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
31-07-2009 10:09:55  Re: Changer la langue du programme en fonctionnement #31
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)

31-07-2009 11:19:27  Re: Changer la langue du programme en fonctionnement #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
31-07-2009 11:25:17  Re: Changer la langue du programme en fonctionnement #33
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... :)
31-07-2009 17:16:14  Re: Changer la langue du programme en fonctionnement #34
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
03-08-2009 11:10:40  Re: Changer la langue du programme en fonctionnement #35
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?
09-09-2009 18:50:32  Re: Changer la langue du programme en fonctionnement #36
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....
20-11-2009 15:23:57  Re: Changer la langue du programme en fonctionnement #37
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 ?
Menu forum (navigation):
Pages: 1 2  
 
Accueil » Accueil forums » Développement C/C++
» Changer la langue du programme en fonctionnement