minor fixes to wxLocale::GetSystemLanguage(), test code for it added to the console sample

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-03-21 19:07:23 +00:00
parent cf1eeea343
commit ec37df5776
3 changed files with 470 additions and 124 deletions

View File

@@ -42,6 +42,7 @@
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// forward decls // forward decls
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLEXPORT wxLocale; class WXDLLEXPORT wxLocale;
class WXDLLEXPORT wxMsgCatalog; class WXDLLEXPORT wxMsgCatalog;
class WXDLLEXPORT wxLanguageInfoArray; class WXDLLEXPORT wxLanguageInfoArray;
@@ -50,7 +51,6 @@ class WXDLLEXPORT wxLanguageInfoArray;
// locale support // locale support
// ============================================================================ // ============================================================================
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxLanguage: defines all supported languages // wxLanguage: defines all supported languages
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -62,6 +62,7 @@ enum wxLanguage
{ {
// user's default/preffered language as got from OS: // user's default/preffered language as got from OS:
wxLANGUAGE_DEFAULT, wxLANGUAGE_DEFAULT,
// unknown language, if wxLocale::GetSystemLanguage fails: // unknown language, if wxLocale::GetSystemLanguage fails:
wxLANGUAGE_UNKNOWN, wxLANGUAGE_UNKNOWN,
@@ -313,9 +314,6 @@ struct WXDLLEXPORT wxLanguageInfo
wxString Description; // human-readable name of the language wxString Description; // human-readable name of the language
}; };
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxLocale: encapsulates all language dependent settings, including current // wxLocale: encapsulates all language dependent settings, including current
// message catalogs, date, time and currency formats (TODO) &c // message catalogs, date, time and currency formats (TODO) &c
@@ -347,7 +345,7 @@ public:
Init(szName, szShort, szLocale, bLoadDefault, bConvertEncoding); Init(szName, szShort, szLocale, bLoadDefault, bConvertEncoding);
} }
wxLocale(int language, // wxLanguage identifier wxLocale(int language, // wxLanguage id or custom language
int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING) int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING)
{ Init(language, flags); } { Init(language, flags); }
@@ -358,14 +356,15 @@ public:
bool bLoadDefault = TRUE, bool bLoadDefault = TRUE,
bool bConvertEncoding = FALSE); bool bConvertEncoding = FALSE);
// same as second ctor (returns TRUE on success)
bool Init(int language = wxLANGUAGE_DEFAULT, bool Init(int language = wxLANGUAGE_DEFAULT,
int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING); int flags = wxLOCALE_LOAD_DEFAULT | wxLOCALE_CONV_ENCODING);
// restores old locale // restores old locale
~wxLocale(); ~wxLocale();
// Try to get user's (or OS's) prefered language setting. // Try to get user's (or OS's) prefered language setting.
// Return wxLanguage value or wxLANGUAGE_UNKNOWN if language-guessing // Return wxLANGUAGE_UNKNOWN if language-guessing algorithm failed
// algorithm failed
int GetSystemLanguage() const; int GetSystemLanguage() const;
// return TRUE if the locale was set successfully // return TRUE if the locale was set successfully

View File

@@ -37,7 +37,7 @@
//#define TEST_ARRAYS //#define TEST_ARRAYS
//#define TEST_CMDLINE //#define TEST_CMDLINE
#define TEST_DATETIME //#define TEST_DATETIME
//#define TEST_DIR //#define TEST_DIR
//#define TEST_DLLLOADER //#define TEST_DLLLOADER
//#define TEST_ENVIRON //#define TEST_ENVIRON
@@ -49,6 +49,7 @@
//#define TEST_HASH //#define TEST_HASH
//#define TEST_INFO_FUNCTIONS //#define TEST_INFO_FUNCTIONS
//#define TEST_LIST //#define TEST_LIST
#define TEST_LOCALE
//#define TEST_LOG //#define TEST_LOG
//#define TEST_LONGLONG //#define TEST_LONGLONG
//#define TEST_MIME //#define TEST_MIME
@@ -61,7 +62,7 @@
//#define TEST_TIMER //#define TEST_TIMER
//#define TEST_VCARD -- don't enable this (VZ) //#define TEST_VCARD -- don't enable this (VZ)
//#define TEST_WCHAR //#define TEST_WCHAR
#define TEST_ZIP //#define TEST_ZIP
//#define TEST_ZLIB //#define TEST_ZLIB
@@ -808,6 +809,293 @@ static void TestListCtor()
#endif // TEST_LIST #endif // TEST_LIST
// ----------------------------------------------------------------------------
// wxLocale
// ----------------------------------------------------------------------------
#ifdef TEST_LOCALE
#include "wx/intl.h"
#include "wx/utils.h" // for wxSetEnv
static wxLocale gs_localeDefault(wxLANGUAGE_ENGLISH);
// find the name of the language from its value
static const char *GetLangName(int lang)
{
static const char *languageNames[] =
{
"DEFAULT",
"UNKNOWN",
"ABKHAZIAN",
"AFAR",
"AFRIKAANS",
"ALBANIAN",
"AMHARIC",
"ARABIC",
"ARABIC_ALGERIA",
"ARABIC_BAHRAIN",
"ARABIC_EGYPT",
"ARABIC_IRAQ",
"ARABIC_JORDAN",
"ARABIC_KUWAIT",
"ARABIC_LEBANON",
"ARABIC_LIBYA",
"ARABIC_MOROCCO",
"ARABIC_OMAN",
"ARABIC_QATAR",
"ARABIC_SAUDI_ARABIA",
"ARABIC_SUDAN",
"ARABIC_SYRIA",
"ARABIC_TUNISIA",
"ARABIC_UAE",
"ARABIC_YEMEN",
"ARMENIAN",
"ASSAMESE",
"AYMARA",
"AZERI",
"AZERI_CYRILLIC",
"AZERI_LATIN",
"BASHKIR",
"BASQUE",
"BELARUSIAN",
"BENGALI",
"BHUTANI",
"BIHARI",
"BISLAMA",
"BRETON",
"BULGARIAN",
"BURMESE",
"CAMBODIAN",
"CATALAN",
"CHINESE",
"CHINESE_SIMPLIFIED",
"CHINESE_TRADITIONAL",
"CHINESE_HONGKONG",
"CHINESE_MACAU",
"CHINESE_SINGAPORE",
"CHINESE_TAIWAN",
"CORSICAN",
"CROATIAN",
"CZECH",
"DANISH",
"DUTCH",
"DUTCH_BELGIAN",
"ENGLISH",
"ENGLISH_UK",
"ENGLISH_US",
"ENGLISH_AUSTRALIA",
"ENGLISH_BELIZE",
"ENGLISH_BOTSWANA",
"ENGLISH_CANADA",
"ENGLISH_CARIBBEAN",
"ENGLISH_DENMARK",
"ENGLISH_EIRE",
"ENGLISH_JAMAICA",
"ENGLISH_NEW_ZEALAND",
"ENGLISH_PHILIPPINES",
"ENGLISH_SOUTH_AFRICA",
"ENGLISH_TRINIDAD",
"ENGLISH_ZIMBABWE",
"ESPERANTO",
"ESTONIAN",
"FAEROESE",
"FARSI",
"FIJI",
"FINNISH",
"FRENCH",
"FRENCH_BELGIAN",
"FRENCH_CANADIAN",
"FRENCH_LUXEMBOURG",
"FRENCH_MONACO",
"FRENCH_SWISS",
"FRISIAN",
"GALICIAN",
"GEORGIAN",
"GERMAN",
"GERMAN_AUSTRIAN",
"GERMAN_BELGIUM",
"GERMAN_LIECHTENSTEIN",
"GERMAN_LUXEMBOURG",
"GERMAN_SWISS",
"GREEK",
"GREENLANDIC",
"GUARANI",
"GUJARATI",
"HAUSA",
"HEBREW",
"HINDI",
"HUNGARIAN",
"ICELANDIC",
"INDONESIAN",
"INTERLINGUA",
"INTERLINGUE",
"INUKTITUT",
"INUPIAK",
"IRISH",
"ITALIAN",
"ITALIAN_SWISS",
"JAPANESE",
"JAVANESE",
"KANNADA",
"KASHMIRI",
"KASHMIRI_INDIA",
"KAZAKH",
"KERNEWEK",
"KINYARWANDA",
"KIRGHIZ",
"KIRUNDI",
"KONKANI",
"KOREAN",
"KURDISH",
"LAOTHIAN",
"LATIN",
"LATVIAN",
"LINGALA",
"LITHUANIAN",
"MACEDONIAN",
"MALAGASY",
"MALAY",
"MALAYALAM",
"MALAY_BRUNEI_DARUSSALAM",
"MALAY_MALAYSIA",
"MALTESE",
"MANIPURI",
"MAORI",
"MARATHI",
"MOLDAVIAN",
"MONGOLIAN",
"NAURU",
"NEPALI",
"NEPALI_INDIA",
"NORWEGIAN_BOKMAL",
"NORWEGIAN_NYNORSK",
"OCCITAN",
"ORIYA",
"OROMO",
"PASHTO",
"POLISH",
"PORTUGUESE",
"PORTUGUESE_BRAZILIAN",
"PUNJABI",
"QUECHUA",
"RHAETO_ROMANCE",
"ROMANIAN",
"RUSSIAN",
"RUSSIAN_UKRAINE",
"SAMOAN",
"SANGHO",
"SANSKRIT",
"SCOTS_GAELIC",
"SERBIAN",
"SERBIAN_CYRILLIC",
"SERBIAN_LATIN",
"SERBO_CROATIAN",
"SESOTHO",
"SETSWANA",
"SHONA",
"SINDHI",
"SINHALESE",
"SISWATI",
"SLOVAK",
"SLOVENIAN",
"SOMALI",
"SPANISH",
"SPANISH_ARGENTINA",
"SPANISH_BOLIVIA",
"SPANISH_CHILE",
"SPANISH_COLOMBIA",
"SPANISH_COSTA_RICA",
"SPANISH_DOMINICAN_REPUBLIC",
"SPANISH_ECUADOR",
"SPANISH_EL_SALVADOR",
"SPANISH_GUATEMALA",
"SPANISH_HONDURAS",
"SPANISH_MEXICAN",
"SPANISH_MODERN",
"SPANISH_NICARAGUA",
"SPANISH_PANAMA",
"SPANISH_PARAGUAY",
"SPANISH_PERU",
"SPANISH_PUERTO_RICO",
"SPANISH_URUGUAY",
"SPANISH_US",
"SPANISH_VENEZUELA",
"SUNDANESE",
"SWAHILI",
"SWEDISH",
"SWEDISH_FINLAND",
"TAGALOG",
"TAJIK",
"TAMIL",
"TATAR",
"TELUGU",
"THAI",
"TIBETAN",
"TIGRINYA",
"TONGA",
"TSONGA",
"TURKISH",
"TURKMEN",
"TWI",
"UIGHUR",
"UKRAINIAN",
"URDU",
"URDU_INDIA",
"URDU_PAKISTAN",
"UZBEK",
"UZBEK_CYRILLIC",
"UZBEK_LATIN",
"VIETNAMESE",
"VOLAPUK",
"WELSH",
"WOLOF",
"XHOSA",
"YIDDISH",
"YORUBA",
"ZHUANG",
"ZULU",
};
if ( (size_t)lang < WXSIZEOF(languageNames) )
return languageNames[lang];
else
return "INVALID";
}
static void TestDefaultLang()
{
puts("*** Testing wxLocale::GetSystemLanguage ***");
static const wxChar *langStrings[] =
{
NULL, // system default
_T("C"),
_T("fr"),
_T("fr_FR"),
_T("en"),
_T("en_GB"),
_T("en_US"),
_T("de_DE.iso88591"),
_T("german"),
_T("?"), // invalid lang spec
_T("klingonese"), // I bet on some systems it does exist...
};
for ( size_t n = 0; n < WXSIZEOF(langStrings); n++ )
{
const char *langStr = langStrings[n];
if ( langStr )
wxSetEnv(_T("LC_ALL"), langStr);
int lang = gs_localeDefault.GetSystemLanguage();
printf("Locale for '%s' is %s.\n",
langStr ? langStr : "system default", GetLangName(lang));
}
}
#endif // TEST_LOCALE
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// MIME types // MIME types
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -4285,6 +4573,10 @@ int main(int argc, char **argv)
TestListCtor(); TestListCtor();
#endif // TEST_LIST #endif // TEST_LIST
#ifdef TEST_LOCALE
TestDefaultLang();
#endif // TEST_LOCALE
#ifdef TEST_LOG #ifdef TEST_LOG
wxString s; wxString s;
for ( size_t n = 0; n < 8000; n++ ) for ( size_t n = 0; n < 8000; n++ )

View File

@@ -105,6 +105,11 @@ const size_t32 MSGCATALOG_MAGIC_SW = 0xde120495;
// extension of ".mo" files // extension of ".mo" files
#define MSGCATALOG_EXTENSION _T(".mo") #define MSGCATALOG_EXTENSION _T(".mo")
// the constants describing the format of lang_LANG locale string
static const size_t LEN_LANG = 2;
static const size_t LEN_SUBLANG = 2;
static const size_t LEN_FULL = LEN_LANG + 1 + LEN_SUBLANG; // 1 for '_'
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// global functions // global functions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -139,6 +144,23 @@ public:
static wxLocale *wxSetLocale(wxLocale *pLocale); static wxLocale *wxSetLocale(wxLocale *pLocale);
// helper functions of GetSystemLanguage()
#ifdef __UNIX__
// get just the language part
static inline wxString ExtractLang(const wxString& langFull)
{
return langFull.Left(LEN_LANG);
}
// get everything else (including the leading '_')
static inline wxString ExtractNotLang(const wxString& langFull)
{
return langFull.Mid(LEN_LANG);
}
#endif // __UNIX__
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxMsgCatalog corresponds to one disk-file message catalog. // wxMsgCatalog corresponds to one disk-file message catalog.
// //
@@ -537,8 +559,6 @@ void wxMsgCatalog::ConvertEncoding()
WX_DECLARE_EXPORTED_OBJARRAY(wxLanguageInfo, wxLanguageInfoArray); WX_DECLARE_EXPORTED_OBJARRAY(wxLanguageInfo, wxLanguageInfoArray);
WX_DEFINE_OBJARRAY(wxLanguageInfoArray); WX_DEFINE_OBJARRAY(wxLanguageInfoArray);
wxLocale::wxLocale() wxLocale::wxLocale()
{ {
m_pszOldLocale = NULL; m_pszOldLocale = NULL;
@@ -589,8 +609,6 @@ bool wxLocale::Init(const wxChar *szName,
return bOk; return bOk;
} }
bool wxLocale::Init(int language, int flags) bool wxLocale::Init(int language, int flags)
{ {
wxLanguageInfo *info = NULL; wxLanguageInfo *info = NULL;
@@ -602,8 +620,19 @@ bool wxLocale::Init(int language, int flags)
InitLanguagesDB(); InitLanguagesDB();
} }
if (lang == wxLANGUAGE_DEFAULT) lang = GetSystemLanguage(); if (lang == wxLANGUAGE_DEFAULT)
if (lang != wxLANGUAGE_UNKNOWN) {
// auto detect the language
lang = GetSystemLanguage();
}
// We failed to detect system language, so we will use English:
if (lang == wxLANGUAGE_UNKNOWN)
{
return FALSE;
}
if (lang != wxLANGUAGE_DEFAULT)
{ {
for (size_t i = 0; i < m_languagesDB->GetCount(); i++) for (size_t i = 0; i < m_languagesDB->GetCount(); i++)
{ {
@@ -615,11 +644,6 @@ bool wxLocale::Init(int language, int flags)
} }
} }
// We failed to detect system language, so we will use English:
if (lang == wxLANGUAGE_UNKNOWN)
{
return FALSE;
}
// Unknown language: // Unknown language:
if (info == NULL) if (info == NULL)
{ {
@@ -634,8 +658,10 @@ bool wxLocale::Init(int language, int flags)
// Set the locale: // Set the locale:
#ifdef __UNIX__ #ifdef __UNIX__
if (language == wxLANGUAGE_DEFAULT) locale = wxEmptyString; if (language == wxLANGUAGE_DEFAULT)
else locale = info->CanonicalName; locale = wxEmptyString;
else
locale = info->CanonicalName;
retloc = wxSetlocale(LC_ALL, locale); retloc = wxSetlocale(LC_ALL, locale);
@@ -665,7 +691,6 @@ bool wxLocale::Init(int language, int flags)
wxLogError(wxT("Cannot set locale to '%s'."), locale.c_str()); wxLogError(wxT("Cannot set locale to '%s'."), locale.c_str());
return FALSE; return FALSE;
} }
#elif defined(__WIN32__) #elif defined(__WIN32__)
if (language != wxLANGUAGE_DEFAULT) if (language != wxLANGUAGE_DEFAULT)
{ {
@@ -734,110 +759,152 @@ void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix)
//else: already have it //else: already have it
} }
int wxLocale::GetSystemLanguage() const int wxLocale::GetSystemLanguage() const
{ {
int wxlang = wxLANGUAGE_UNKNOWN; wxCHECK_MSG( m_languagesDB != NULL, wxLANGUAGE_UNKNOWN,
size_t i; _T("Languages DB not initialized, call wxLocale::Init!") );
wxASSERT_MSG(m_languagesDB != NULL, "Languages DB not initialized, call wxLocale::Init!"); // init i to avoid compiler warning
size_t i = 0,
count = m_languagesDB->GetCount();
#if defined(__UNIX__) #if defined(__UNIX__)
wxString lang; // first get the string identifying the language from the environment
if (!wxGetEnv(wxT("LC_ALL"), &lang) && wxString langFull;
!wxGetEnv(wxT("LC_MESSAGES"), &lang) && if (!wxGetEnv(wxT("LC_ALL"), &langFull) &&
!wxGetEnv(wxT("LANG"), &lang)) !wxGetEnv(wxT("LC_MESSAGES"), &langFull) &&
return wxLANGUAGE_UNKNOWN; !wxGetEnv(wxT("LANG"), &langFull))
bool is_abbrev = lang.Len() == 2 ||
(lang.Len() == 5 && lang[2] == wxT('_'));
// 0. Make sure the abbrev is according to latest ISO 639
// (this is neccessary because glibc uses iw and in instead
// of he and id respectively).
if (is_abbrev)
{ {
wxString mid = lang.Mid(0,2); // no language specified
if (mid == wxT("iw")) lang = wxT("he") + lang.Mid(3); return wxLANGUAGE_UNKNOWN;
else if (mid == wxT("in")) lang = wxT("id") + lang.Mid(3);
else if (mid == wxT("ji")) lang = wxT("yi") + lang.Mid(3);
} }
// 1. Try to find the lang as is: if ( langFull == _T("C") )
if (is_abbrev)
{ {
for (i = 0; i < m_languagesDB->GetCount(); i++) // default C locale
return wxLANGUAGE_DEFAULT;
}
// the language string has the following form
//
// lang[_LANG[.encoding]]
//
// where lang is the primary language, LANG is a sublang
//
// for example, the following strings are valid:
// fr
// fr_FR
// de_DE.iso88591
// for now we don't use the encoding, although we probably should (doing
// translations of the msg catalogs on the fly as required) (TODO)
langFull = langFull.BeforeFirst(_T('.'));
// in addition to the format above, we also can have full language names
// in LANG env var - for example, SuSE is known to use LANG="german" - so
// check for this
// do we have just the language (or sublang too)?
bool justLang = langFull.Len() == LEN_LANG;
if ( justLang ||
(langFull.Len() == LEN_FULL && langFull[LEN_LANG] == wxT('_')) )
{
// 0. Make sure the lang is according to latest ISO 639
// (this is neccessary because glibc uses iw and in instead
// of he and id respectively).
// the language itself (second part is the dialect/sublang)
wxString langOrig = ExtractLang(langFull);
wxString lang;
if ( langOrig == wxT("iw"))
lang = _T("he");
else if ( langOrig == wxT("in") )
lang = wxT("id");
else if ( langOrig == wxT("ji") )
lang = wxT("yi");
else
lang = langOrig;
// did we change it?
if ( lang != langOrig )
{
langFull = lang + ExtractNotLang(langFull);
}
// 1. Try to find the language either as is:
for ( i = 0; i < count; i++ )
{
if ( m_languagesDB->Item(i).CanonicalName == langFull )
{
break;
}
}
// 2. If langFull is of the form xx_YY, try to find xx:
if ( i == count && !justLang )
{
for ( i = 0; i < count; i++ )
{ {
if ( m_languagesDB->Item(i).CanonicalName == lang ) if ( m_languagesDB->Item(i).CanonicalName == lang )
{ {
wxlang = m_languagesDB->Item(i).Language;
break; break;
} }
} }
} }
// 2. If lang is of the form xx_YY, try to find xx: // 3. If langFull is of the form xx, try to find any xx_YY record:
if (wxlang == wxLANGUAGE_UNKNOWN && is_abbrev && lang.Len() == 5) if ( i == count && justLang )
{ {
wxString lang2 = lang.Mid(0,2); for ( i = 0; i < count; i++ )
for (i = 0; i < m_languagesDB->GetCount(); i++)
{ {
if (m_languagesDB->Item(i).CanonicalName == lang2) if ( ExtractLang(m_languagesDB->Item(i).CanonicalName)
== langFull )
{ {
wxlang = m_languagesDB->Item(i).Language;
break; break;
} }
} }
} }
}
// 3. If lang is of the form xx, try to find any xx_YY record: else // not standard format
if (wxlang == wxLANGUAGE_UNKNOWN && is_abbrev && lang.Len() == 2)
{ {
for (i = 0; i < m_languagesDB->GetCount(); i++) // try to find the name in verbose description
for ( i = 0; i < count; i++ )
{ {
if (m_languagesDB->Item(i).CanonicalName.Mid(0,2) == lang) if (m_languagesDB->Item(i).Description.CmpNoCase(langFull) == 0)
{ {
wxlang = m_languagesDB->Item(i).Language;
break; break;
} }
} }
} }
// 4. If everything failed, try to find the name in verbose description
// (SuSE is known to use LANG="german"):
if (wxlang == wxLANGUAGE_UNKNOWN && !is_abbrev)
{
for (i = 0; i < m_languagesDB->GetCount(); i++)
{
if (m_languagesDB->Item(i).Description.CmpNoCase(lang) == 0)
{
wxlang = m_languagesDB->Item(i).Language;
break;
}
}
}
#elif defined(__WIN32__) #elif defined(__WIN32__)
LCID lcid = GetUserDefaultLCID(); LCID lcid = GetUserDefaultLCID();
if (lcid == 0) return wxLANGUAGE_UNKNOWN; if ( lcid != 0 )
{
wxUint32 lang = PRIMARYLANGID(LANGIDFROMLCID(lcid)); wxUint32 lang = PRIMARYLANGID(LANGIDFROMLCID(lcid));
wxUint32 sublang = SUBLANGID(LANGIDFROMLCID(lcid)); wxUint32 sublang = SUBLANGID(LANGIDFROMLCID(lcid));
for (i = 0; i < m_languagesDB->GetCount(); i++) for ( i = 0; i < count; i++ )
{ {
if (m_languagesDB->Item(i).WinLang == lang && if (m_languagesDB->Item(i).WinLang == lang &&
m_languagesDB->Item(i).WinSublang == sublang) m_languagesDB->Item(i).WinSublang == sublang)
{ {
wxlang = m_languagesDB->Item(i).Language;
break; break;
} }
} }
#endif }
//else: leave wxlang == wxLANGUAGE_UNKNOWN
#endif // Unix/Win32
return wxlang; if ( i < count )
{
// we did find a matching entry, use it
return m_languagesDB->Item(i).Language;
} }
// no info about this language in the database
return wxLANGUAGE_UNKNOWN;
}
void wxLocale::AddLanguage(const wxLanguageInfo& info) void wxLocale::AddLanguage(const wxLanguageInfo& info)
{ {
@@ -845,15 +912,11 @@ void wxLocale::AddLanguage(const wxLanguageInfo& info)
m_languagesDB->Add(info); m_languagesDB->Add(info);
} }
wxString wxLocale::GetSysName() const wxString wxLocale::GetSysName() const
{ {
return wxSetlocale(LC_ALL, NULL); return wxSetlocale(LC_ALL, NULL);
} }
// clean up // clean up
wxLocale::~wxLocale() wxLocale::~wxLocale()
{ {
@@ -972,11 +1035,6 @@ bool wxLocale::AddCatalog(const wxChar *szDomain)
} }
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// global functions and variables // global functions and variables
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -999,9 +1057,6 @@ wxLocale *wxSetLocale(wxLocale *pLocale)
return pOld; return pOld;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// default languages table & initialization // default languages table & initialization
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------