X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/803c55373484d1e2bfed85b46cbbfff8bfad1276..4e5d213ac0fe96162536900283235c3b59c7e161:/src/common/intl.cpp diff --git a/src/common/intl.cpp b/src/common/intl.cpp index aea952ed77..01d449fd53 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -34,6 +34,9 @@ #include #include #include +#ifdef HAVE_LANGINFO_H + #include +#endif // wxWindows #ifndef WX_PRECOMP @@ -48,6 +51,8 @@ #include "wx/file.h" #include "wx/tokenzr.h" #include "wx/module.h" +#include "wx/fontmap.h" +#include "wx/encconv.h" #ifdef __WIN32__ #include "wx/msw/private.h" @@ -89,9 +94,7 @@ typedef unsigned char size_t8; { // Asserting a sizeof directly causes some compilers to // issue a "using constant in a conditional expression" warning - size_t intsize = sizeof(int); - - wxASSERT_MSG( intsize == 4, + wxASSERT_MSG( wxAssertIsEqual(sizeof(int), 4), "size_t32 is incorrectly defined!" ); } } intsizechecker; @@ -503,15 +506,8 @@ const char *wxMsgCatalog::GetString(const char *szOrig) const return NULL; } - -#if wxUSE_GUI -#include "wx/fontmap.h" -#include "wx/encconv.h" -#endif - void wxMsgCatalog::ConvertEncoding() { -#if wxUSE_GUI wxFontEncoding enc; // first, find encoding header: @@ -534,19 +530,7 @@ void wxMsgCatalog::ConvertEncoding() if ( enc == wxFONTENCODING_SYSTEM ) return; // unknown encoding - wxFontEncoding targetEnc = wxFONTENCODING_SYSTEM; -#ifdef __UNIX__ - wxString langFull; - if (wxGetEnv(wxT("LC_ALL"), &langFull) || - wxGetEnv(wxT("LC_CTYPE"), &langFull) || - wxGetEnv(wxT("LANG"), &langFull)) - { - wxString lcharset = langFull.AfterFirst(wxT('.')).BeforeFirst(wxT('@')); - if (!lcharset.IsEmpty()) - targetEnc = wxTheFontMapper->CharsetToEncoding(lcharset, FALSE); - } -#endif - + wxFontEncoding targetEnc = wxLocale::GetSystemEncoding(); if (targetEnc == wxFONTENCODING_SYSTEM) { wxFontEncodingArray a = wxEncodingConverter::GetPlatformEquivalents(enc); @@ -562,7 +546,6 @@ void wxMsgCatalog::ConvertEncoding() for (size_t i = 0; i < m_numStrings; i++) converter.Convert((char*)StringAtOfs(m_pTransTable, i)); -#endif // wxUSE_GUI } @@ -955,7 +938,11 @@ wxString wxLocale::GetSystemEncodingName() #if defined(HAVE_LANGINFO_H) && defined(CODESET) // GNU libc provides current character set this way (this conforms // to Unix98) + char *oldLocale = strdup(setlocale(LC_CTYPE, NULL)); + setlocale(LC_CTYPE, ""); char *alang = nl_langinfo(CODESET); + setlocale(LC_CTYPE, oldLocale); + free(oldLocale); if (alang) { encname = wxConvLibc.cMB2WX(alang);