Localizzazione di un progetto wx c++ (wx side)
Categories: C, Source Code
Tags:
Questo articolo presuppone la conoscenza di poEdit o di gettext trattati nel precedente articolo “Localizzazione di un progetto wx c++ (usare poEdit)”
Aggiungere la localizzazione ad un programma scritto in wx è abbastanza semplice. Una volta ottenuti i files .po per tutti le lingue che vogliamo supportare, rinominiamoli con il nome della nostra applicazione e spostiamoli in subdirectory diverse per ogni linguaggio, esempio:
rootDelProgetto/locale/it rootDelProgetto/locale/it_CH rootDelProgetto/locale/en_US rootDelProgetto/locale/en_GB
Ora andiamo nel main, posizioniamoci in un punto in cui ancora non è stata istanziata l’interfaccia e scriviamo il seguente codice:
//ottengo il percorso "rootDelProgetto/locale/"
wxString langDir = wxStandardPaths::Get().GetDataDir() + wxFILE_SEP_PATH + wxT("locale");
//istanzio la classe per effettuare la localizzazione
wxLocale *m_locale=new wxLocale();
//se l'init non riesce c'è qualche problema nel recuperare la lingua di sistema...
if (m_locale->Init(wxLANGUAGE_DEFAULT, wxLOCALE_CONV_ENCODING))
{
// aggiungo nei percorsi di ricerca dei files .po la directory "rootDelProgetto/locale/"
m_locale->AddCatalogLookupPathPrefix(langDir);
// se AddCatalog torna true il file .po relativo alla lingua di sistema è stato caricato,
// e il programma visualizzerà la traduzione giusta
if (!m_locale->AddCatalog(wxT("UsbAutostart")))
{
// il programma non visualizzerà nessuna tradizione
}
}
else
{
// il programma non visualizzerà nessuna tradizione
}
delete m_locale;
Per forzare una lingua in particolare, basta specificare nella chiamata alla funzione Init, una costante diversa da wxLANGUAGE_DEFAULT, per esempio wxLANGUAGE_ITALIAN.
Se sei interessato a questo post, potresti anche provare a leggere:
-
No related posts
12 Ott 2007 inandrea
