Implemented wxLocale::IsAvailable for unix systems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43738 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -433,7 +433,7 @@ given a two letter ISO language code, use
|
||||
wxLanguageInfo structure. See \helpref{AddLanguage}{wxlocaleaddlanguage} for
|
||||
the wxLanguageInfo description.
|
||||
|
||||
\newsince{2.7.1}. Currently only implemented under Windows.
|
||||
\newsince{2.7.1}.
|
||||
|
||||
|
||||
\membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
|
||||
|
@@ -2724,7 +2724,7 @@ bool wxLocale::IsAvailable(int lang)
|
||||
const wxLanguageInfo *info = wxLocale::GetLanguageInfo(lang);
|
||||
wxCHECK_MSG( info, false, _T("invalid language") );
|
||||
|
||||
#ifdef __WIN32__
|
||||
#if defined(__WIN32__)
|
||||
if ( !info->WinLang )
|
||||
return false;
|
||||
|
||||
@@ -2735,9 +2735,22 @@ bool wxLocale::IsAvailable(int lang)
|
||||
LCID_INSTALLED
|
||||
) )
|
||||
return false;
|
||||
#else // !__WIN32__
|
||||
// TODO: test if setlocale(info->CanonicalName) works under other OS?
|
||||
#endif // __WIN32__/!__WIN32__
|
||||
|
||||
#elif defined(__UNIX__)
|
||||
|
||||
// Test if setting the locale works, then set it back.
|
||||
wxMB2WXbuf oldLocale = wxSetlocale(LC_ALL, wxEmptyString);
|
||||
wxMB2WXbuf tmp = wxSetlocaleTryUTF(LC_ALL, info->CanonicalName);
|
||||
if ( !tmp )
|
||||
{
|
||||
// Some C libraries don't like xx_YY form and require xx only
|
||||
tmp = wxSetlocaleTryUTF(LC_ALL, info->CanonicalName.Left(2));
|
||||
if ( !tmp )
|
||||
return false;
|
||||
}
|
||||
// restore the original locale
|
||||
wxSetlocale(LC_ALL, oldLocale);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user