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
|
wxLanguageInfo structure. See \helpref{AddLanguage}{wxlocaleaddlanguage} for
|
||||||
the wxLanguageInfo description.
|
the wxLanguageInfo description.
|
||||||
|
|
||||||
\newsince{2.7.1}. Currently only implemented under Windows.
|
\newsince{2.7.1}.
|
||||||
|
|
||||||
|
|
||||||
\membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
|
\membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
|
||||||
|
@@ -2724,7 +2724,7 @@ bool wxLocale::IsAvailable(int lang)
|
|||||||
const wxLanguageInfo *info = wxLocale::GetLanguageInfo(lang);
|
const wxLanguageInfo *info = wxLocale::GetLanguageInfo(lang);
|
||||||
wxCHECK_MSG( info, false, _T("invalid language") );
|
wxCHECK_MSG( info, false, _T("invalid language") );
|
||||||
|
|
||||||
#ifdef __WIN32__
|
#if defined(__WIN32__)
|
||||||
if ( !info->WinLang )
|
if ( !info->WinLang )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -2735,9 +2735,22 @@ bool wxLocale::IsAvailable(int lang)
|
|||||||
LCID_INSTALLED
|
LCID_INSTALLED
|
||||||
) )
|
) )
|
||||||
return false;
|
return false;
|
||||||
#else // !__WIN32__
|
|
||||||
// TODO: test if setlocale(info->CanonicalName) works under other OS?
|
#elif defined(__UNIX__)
|
||||||
#endif // __WIN32__/!__WIN32__
|
|
||||||
|
// 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;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user