git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43738
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxLanguageInfo structure. See \helpref{AddLanguage}{wxlocaleaddlanguage} for
the wxLanguageInfo description.
wxLanguageInfo structure. See \helpref{AddLanguage}{wxlocaleaddlanguage} for
the wxLanguageInfo description.
-\newsince{2.7.1}. Currently only implemented under Windows.
\membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
\membersection{wxLocale::IsLoaded}\label{wxlocaleisloaded}
const wxLanguageInfo *info = wxLocale::GetLanguageInfo(lang);
wxCHECK_MSG( info, false, _T("invalid language") );
const wxLanguageInfo *info = wxLocale::GetLanguageInfo(lang);
wxCHECK_MSG( info, false, _T("invalid language") );
if ( !info->WinLang )
return false;
if ( !info->WinLang )
return false;
SORT_DEFAULT),
LCID_INSTALLED
) )
SORT_DEFAULT),
LCID_INSTALLED
) )
- return false;
-#else // !__WIN32__
- // TODO: test if setlocale(info->CanonicalName) works under other OS?
-#endif // __WIN32__/!__WIN32__
+ return false;
+
+#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