X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/913df6f2e0ab502732b271624c95af807d42007c..487c1f7ef2ad59cf8ed6d8aca317d20304ca27bd:/src/common/intl.cpp diff --git a/src/common/intl.cpp b/src/common/intl.cpp index a63fa77a05..84022468f4 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -40,6 +40,7 @@ #include "wx/intl.h" #include "wx/file.h" #include "wx/log.h" +#include "wx/debug.h" #include "wx/utils.h" #include @@ -266,7 +267,7 @@ static wxString GetAllMsgCatalogSubdirs(const wxChar *prefix, // search first in prefix/fr/LC_MESSAGES, then in prefix/fr and finally in // prefix (assuming the language is 'fr') searchPath << prefix << wxFILE_SEP_PATH << lang << wxFILE_SEP_PATH - << _T("LC_MESSAGES") << wxPATH_SEP + << wxT("LC_MESSAGES") << wxPATH_SEP << prefix << wxFILE_SEP_PATH << lang << wxPATH_SEP << prefix << wxPATH_SEP; @@ -288,21 +289,30 @@ static wxString GetFullSearchPath(const wxChar *lang) // then take the current directory // FIXME it should be the directory of the executable - searchPath << GetAllMsgCatalogSubdirs(_T("."), lang) << wxPATH_SEP; + searchPath << GetAllMsgCatalogSubdirs(wxT("."), lang) << wxPATH_SEP; // and finally add some standard ones searchPath - << GetAllMsgCatalogSubdirs(_T("/usr/share/locale"), lang) << wxPATH_SEP - << GetAllMsgCatalogSubdirs(_T("/usr/lib/locale"), lang) << wxPATH_SEP - << GetAllMsgCatalogSubdirs(_T("/usr/local/share/locale"), lang); + << GetAllMsgCatalogSubdirs(wxT("/usr/share/locale"), lang) << wxPATH_SEP + << GetAllMsgCatalogSubdirs(wxT("/usr/lib/locale"), lang) << wxPATH_SEP + << GetAllMsgCatalogSubdirs(wxT("/usr/local/share/locale"), lang); return searchPath; } // open disk file and read in it's contents -bool wxMsgCatalog::Load(const wxChar *szDirPrefix, const wxChar *szName) +bool wxMsgCatalog::Load(const wxChar *szDirPrefix, const wxChar *szName0) { + /* We need to handle locales like de_AT.iso-8859-1 + For this we first chop off the .CHARSET specifier and ignore it. + FIXME: UNICODE SUPPORT: must use CHARSET specifier! + */ + wxString szName = szName0; + if(szName.Find(wxT('.')) != -1) // contains a dot + szName = szName.Left(szName.Find(wxT('.'))); + // FIXME VZ: I forgot the exact meaning of LC_PATH - anyone to remind me? + // KB: search path where to find the mo files, probably : delimited #if 0 const wxChar *pszLcPath = wxGetenv("LC_PATH"); if ( pszLcPath != NULL ) @@ -310,7 +320,7 @@ bool wxMsgCatalog::Load(const wxChar *szDirPrefix, const wxChar *szName) #endif // 0 wxString searchPath = GetFullSearchPath(szDirPrefix); - const wxChar *sublocale = wxStrchr(szDirPrefix, _T('_')); + const wxChar *sublocale = wxStrchr(szDirPrefix, wxT('_')); if ( sublocale ) { // also add just base locale name: for things like "fr_BE" (belgium @@ -328,20 +338,20 @@ bool wxMsgCatalog::Load(const wxChar *szDirPrefix, const wxChar *szName) // not yet be loaded (and it's normal) // // (we're using an object because we have several return paths) - NoTransErr noTransErr; - wxLogVerbose(_("looking for catalog '%s' in path '%s'."), - szName, searchPath.c_str()); + NoTransErr noTransErr; + wxLogVerbose(wxT("looking for catalog '%s' in path '%s'."), + szName.c_str(), searchPath.c_str()); wxString strFullName; if ( !wxFindFileInPath(&strFullName, searchPath, strFile) ) { - wxLogWarning(_("catalog file for domain '%s' not found."), szName); + wxLogWarning(_("catalog file for domain '%s' not found."), szName.c_str()); return FALSE; } // open file wxLogVerbose(_("using catalog '%s' from '%s'."), - szName, strFullName.c_str()); + szName.c_str(), strFullName.c_str()); wxFile fileMsg(strFullName); if ( !fileMsg.IsOpened() ) @@ -408,7 +418,13 @@ const char *wxMsgCatalog::GetString(const char *szOrig) const size_t32 nIncr = 1 + (nHashVal % (m_nHashSize - 2)); - while ( TRUE ) { +#if defined(__VISAGECPP__) +// VA just can't stand while(1) or while(TRUE) + bool bOs2var = TRUE; + while(bOs2var) { +#else + while (1) { +#endif size_t32 nStr = Swap(m_pHashTable[nIndex]); if ( nStr == 0 ) return NULL; @@ -463,7 +479,10 @@ bool wxLocale::Init(const wxChar *szName, // change current locale (default: same as long name) if ( szLocale == NULL ) - szLocale = szName; + { + // the argument to setlocale() + szLocale = szShort; + } m_pszOldLocale = wxSetlocale(LC_ALL, szLocale); if ( m_pszOldLocale == NULL ) wxLogError(_("locale '%s' can not be set."), szLocale); @@ -483,7 +502,7 @@ bool wxLocale::Init(const wxChar *szName, m_pMsgCat = NULL; bool bOk = TRUE; if ( bLoadDefault ) - bOk = AddCatalog(_T("wxstd")); + bOk = AddCatalog(wxT("wxstd")); return bOk; } @@ -515,13 +534,17 @@ wxLocale::~wxLocale() // get the translation of given string in current locale const wxMB2WXbuf wxLocale::GetString(const wxChar *szOrigString, - const wxChar *szDomain) const + const wxChar *szDomain) const { if ( wxIsEmpty(szOrigString) ) return szDomain; const char *pszTrans = NULL; +#if wxUSE_UNICODE const wxWX2MBbuf szOrgString = wxConvCurrent->cWX2MB(szOrigString); +#else // ANSI + #define szOrgString szOrigString +#endif // Unicode/ANSI wxMsgCatalog *pMsgCat; if ( szDomain != NULL ) { @@ -568,7 +591,12 @@ const wxMB2WXbuf wxLocale::GetString(const wxChar *szOrigString, return (wxMB2WXbuf)(szOrigString); } else - return (wxMB2WXbuf)(wxConvCurrent->cMB2WX(pszTrans)); + { + return wxConvertMB2WX(pszTrans); // or preferably wxCSConv(charset).cMB2WX(pszTrans) or something, + // a macro similar to wxConvertMB2WX could be written for that + } + + #undef szOrgString } // find catalog by name in a linked list, return NULL if !found