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
Pub hébergeur
Pourquoi cette pub ?

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Comment convertir une chaine de type wxLanguageInfo en type wxString ?
Conversation (Résolue) : Comment convertir une chaine de type wxLanguageInfo en type wxString ?
01-02-2016 18:56:18  Comment convertir une chaine de type wxLanguageInfo en type wxString ? #1
PatrickMULOT (Membre)
Lieu: JUMELLES 27220
Inscrit le : 28-01-2016
Messages: 17
Snippets: 0
Tutoriels: 0
Hors ligne
Bonsoir toutes et tous,
Ma demande est dans le sujet. Si quelqu'un connaît la réponse, merci de partager.

ASUS K73SV - Intel Core i7-2630QM CPU @ 2.00GHz × 8 - Ram 4 Gb - HDD 320+500 Gb
Multi-Boot : Ubuntu 14.04 LTS 64 bits - Debian 8.2.0  64 bits

" Heureux sont les gens fêlés car ils laissent passer la lumière ..."  (Michel AUDIARD)
01-02-2016 23:55:09  Re: Comment convertir une chaine de type wxLanguageInfo en type wxString ? #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1365
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Hello.

Tu cherches à obtenir quoi dans le wxString ?

Parce que la classe wxLanguageInfo possède déjà quelques méthodes permettant de récupérer des wxString concernant la langue à laquelle elle fait référence.
Tu trouveras ça ici : http://docs.wxwidgets.org/stable/struct … _info.html


@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
02-02-2016 02:26:58  Re: Comment convertir une chaine de type wxLanguageInfo en type wxString ? #3
PatrickMULOT (Membre)
Lieu: JUMELLES 27220
Inscrit le : 28-01-2016
Messages: 17
Snippets: 0
Tutoriels: 0
Hors ligne
Salut Xaviou,

Mon problème est que je veux sélectionner une langue à partir d'une variable dans un fichier wxFileConfig, et appliquer celle-ci.

Voici le code qui peut certainement être amélioré :

Code wxWidgets:

    wxFileConfig * config = new wxFileConfig( pmAPPLICATION, pmVENDOR_NAME, wxT( "./pmGenealogy.conf" ), wxT( "" ), wxCONFIG_USE_RELATIVE_PATH );
    long language = 0;
 
    if ( config->GetNumberOfGroups() == 0 && config->GetNumberOfEntries() == 0 )
    {
        language = wxLANGUAGE_ENGLISH;
 
        config->Write( wxT( "/PARAM/application" ),  wxT( "pmGenealogy" ) );
        config->Write( wxT( "/PARAM/language" ),     language );
        config->Write( wxT( "/PARAM/basedir" ),      wxT( "" ) );
        config->Write( wxT( "/PARAM/progdir" ),      wxT( "" ) );
 
        config->Flush();
    }
 
    // récupération de la langue du fichier de configuration
    language = config->ReadLong( wxT( "/PARAM/language" ), 0 );
 
    if ( language > 0 ) // si language différent de 0, on continue
    {
        // sélection du language et chargement du catalogue
        wxLocale * locale = new wxLocale( language, wxLOCALE_LOAD_DEFAULT );
        locale->AddCatalogLookupPathPrefix( wxT( "./lang" ) );
//        static const wxLanguageInfo locale->GetLanguageInfo( int lang )    
//        locale->AddCatalog( language_info );
 


le programme se trouve en /home/patrick/Programmation/c++/pmGenealogy
les langues en /home/patrick/Programmation/c++/pmGenealogy/lang/xx/xx.mo (xx = fr, de, en)
la partie concernant la création du fichier config fonctionne correctement. Par contre
1° je n'arrive pas à lire le champ "/PARAM/language", je n'ai pas d'erreur de compil ou d'exécution.
2° pour sélectionner le language et le chargement du catalogue, je merdouille un max. (je suis un peu faché avec les classes).
Voila, voila ... c'est tout ... pour ce soir !

ASUS K73SV - Intel Core i7-2630QM CPU @ 2.00GHz × 8 - Ram 4 Gb - HDD 320+500 Gb
Multi-Boot : Ubuntu 14.04 LTS 64 bits - Debian 8.2.0  64 bits

" Heureux sont les gens fêlés car ils laissent passer la lumière ..."  (Michel AUDIARD)
02-02-2016 13:11:04  Re: Comment convertir une chaine de type wxLanguageInfo en type wxString ? #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1365
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Il vaut effectivement mieux passer par un wxString représentant le nom ou le code de la langue sélectionnée, car lors d'un changement de version des libs wxWidgets, les valeurs wxLANGUAGE_XXXX peuvent être modifiées (il s'agit d'un simple enum, et de nouvelles langues sont ajoutées de temps en temps).

Ainsi, si tu prends le fichier "wx/include/language.h" (dans lequel sont déclarées les valeurs wxLANGUAGE_XXXX), la valeur wxLANGUAGE_CAMBODIAN a été supprimée entre wx-3.0.2 et wx-3.1.0. Les valeurs placées après (dont wxLANGUAGE_ENGLISH et wxLANGUAGE_FRENCH) changemetn donc de valeur.

Pour ma part, je stocke le code de langue (par exemple, "fr_FR") et je re-crée la variable wxLocale à l'aide du code suivant.

Code wxWidgets:

wxString sLang=_T("en"); // Anglais par exemple
long lValue=wxLANGUAGE_DEFAULT;
const wxLanguageInfo* inf=wxLocale::FindLanguageInfo(sValue);
if (inf!=NULL)
{
    lValue=inf->Language;
}
else
{
    lvalue=wxLocale::GetSystemLanguage();
}
m_locale->Init(lValue, wxLOCALE_LOAD_DEFAULT));
m_locale->AddCatalog(......);
 


En espérant que ça puisse t'aider (sinon, n'hésite pas...)

@+
Xav'

P.S: Si ça t'intéresse, je me suis également fait un petit utilitaire permettant de lire un fichier GED, afin d'afficher les infos sur les individus qu'il contient, et surtout pour exporter des éléments en pdf (list ou carrément un arbre).
Ça reste très sommaire, mais ça fonctionne pour une utilisation personnelle.

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
04-02-2016 01:40:52  Re: Comment convertir une chaine de type wxLanguageInfo en type wxString ? #5
PatrickMULOT (Membre)
Lieu: JUMELLES 27220
Inscrit le : 28-01-2016
Messages: 17
Snippets: 0
Tutoriels: 0
Hors ligne
Salut Xaviou,
1° ton code m'a bien aidé, un grand merci !
2° ton utilitaire m'intéresse, je pourrais peut-être compléter le mien avec tes informations. A propos, quel est ton logiciel de généalogie ?
3° j'utilise une fonction nommée GetAppDir(), mais je n'arrive pas à déterminer le fichier header (.h) à charger.. J'ai trouvé une fonction wxWidgets : wxGetCwd() qui fait la même chose !
bonne journée à toi ... et aux autres !

Dernière modification par PatrickMULOT (04-02-2016 20:00:22)


ASUS K73SV - Intel Core i7-2630QM CPU @ 2.00GHz × 8 - Ram 4 Gb - HDD 320+500 Gb
Multi-Boot : Ubuntu 14.04 LTS 64 bits - Debian 8.2.0  64 bits

" Heureux sont les gens fêlés car ils laissent passer la lumière ..."  (Michel AUDIARD)
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Comment convertir une chaine de type wxLanguageInfo en type wxString ?