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:
Robin Dunn
2006-12-02 04:52:46 +00:00
parent 13db99f1f5
commit 327bf990ab
2 changed files with 19 additions and 6 deletions

View File

@@ -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}

View File

@@ -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;
}