]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/intl.cpp
or -> || (how did that compile on GCC anyway?)
[wxWidgets.git] / src / common / intl.cpp
index 0638da4e9548aa915e2ef1510706762647989cad..67bf71f86f884527cad50cb1c0d2c8c99814ea41 100644 (file)
@@ -65,7 +65,6 @@
 #include "wx/filename.h"
 #include "wx/tokenzr.h"
 #include "wx/fontmap.h"
-#include "wx/encconv.h"
 #include "wx/scopedptr.h"
 #include "wx/apptrait.h"
 #include "wx/stdpaths.h"
@@ -859,9 +858,7 @@ public:
               wxPluralFormsCalculatorPtr& rPluralFormsCalculator);
 
     // fills the hash with string-translation pairs
-    bool FillHash(wxMessagesHash& hash,
-                  const wxString& msgIdCharset,
-                  bool convertEncoding) const;
+    bool FillHash(wxMessagesHash& hash, const wxString& msgIdCharset) const;
 
     // return the charset of the strings in this catalog or empty string if
     // none/unknown
@@ -952,7 +949,7 @@ public:
 
     // load the catalog from disk (szDirPrefix corresponds to language)
     bool Load(const wxString& dirPrefix, const wxString& name,
-            const wxString& msgIdCharset, bool bConvertEncoding = false);
+              const wxString& msgIdCharset);
 
     // get name of the catalog
     wxString GetName() const { return m_name; }
@@ -1306,44 +1303,31 @@ bool wxMsgCatalogFile::Load(const wxString& szDirPrefix, const wxString& szName,
 }
 
 bool wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
-                                const wxString& msgIdCharset,
-                                bool convertEncoding) const
+                                const wxString& msgIdCharset) const
 {
-#if wxUSE_UNICODE
-    // this parameter doesn't make sense, we always must convert encoding in
-    // Unicode build
-    convertEncoding = true;
-#elif wxUSE_FONTMAP
-    if ( convertEncoding )
+    // conversion to use to convert catalog strings to the GUI encoding
+    wxMBConv *inputConv,
+            *inputConvPtr = NULL; // same as inputConv but safely deleteable
+
+    if ( !m_charset.empty() )
     {
+#if !wxUSE_UNICODE && wxUSE_FONTMAP
         // determine if we need any conversion at all
         wxFontEncoding encCat = wxFontMapperBase::GetEncodingFromName(m_charset);
-        if ( encCat == wxLocale::GetSystemEncoding() )
+        if ( encCat != wxLocale::GetSystemEncoding() )
+#endif
         {
-            // no need to convert
-            convertEncoding = false;
+            inputConvPtr =
+            inputConv = new wxCSConv(m_charset);
         }
     }
-#endif // wxUSE_UNICODE/wxUSE_FONTMAP
-
-#if wxUSE_WCHAR_T
-    // conversion to use to convert catalog strings to the GUI encoding
-    wxMBConv *inputConv,
-            *inputConvPtr = NULL; // same as inputConv but safely deleteable
-    if ( convertEncoding && !m_charset.empty() )
-    {
-        inputConvPtr =
-        inputConv = new wxCSConv(m_charset);
-    }
     else // no need or not possible to convert the encoding
     {
 #if wxUSE_UNICODE
         // we must somehow convert the narrow strings in the message catalog to
         // wide strings, so use the default conversion if we have no charset
         inputConv = wxConvCurrent;
-#else // !wxUSE_UNICODE
-        inputConv = NULL;
-#endif // wxUSE_UNICODE/!wxUSE_UNICODE
+#endif
     }
 
     // conversion to apply to msgid strings before looking them up: we only
@@ -1353,43 +1337,6 @@ bool wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
                             ? NULL
                             : new wxCSConv(msgIdCharset);
 
-#elif wxUSE_FONTMAP
-    wxASSERT_MSG( msgIdCharset.empty(),
-                wxS("non-ASCII msgid languages only supported if wxUSE_WCHAR_T=1") );
-
-    wxEncodingConverter converter;
-    if ( convertEncoding )
-    {
-        wxFontEncoding targetEnc = wxFONTENCODING_SYSTEM;
-        wxFontEncoding enc = wxFontMapperBase::Get()->CharsetToEncoding(m_charset, false);
-        if ( enc == wxFONTENCODING_SYSTEM )
-        {
-            convertEncoding = false; // unknown encoding
-        }
-        else
-        {
-            targetEnc = wxLocale::GetSystemEncoding();
-            if (targetEnc == wxFONTENCODING_SYSTEM)
-            {
-                wxFontEncodingArray a = wxEncodingConverter::GetPlatformEquivalents(enc);
-                if (a[0] == enc)
-                    // no conversion needed, locale uses native encoding
-                    convertEncoding = false;
-                if (a.GetCount() == 0)
-                    // we don't know common equiv. under this platform
-                    convertEncoding = false;
-                targetEnc = a[0];
-            }
-        }
-
-        if ( convertEncoding )
-        {
-            converter.Init(enc, targetEnc);
-        }
-    }
-#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
-    (void)convertEncoding; // get rid of warnings about unused parameter
-
     for (size_t32 i = 0; i < m_numStrings; i++)
     {
         const char *data = StringAtOfs(m_pOrigTable, i);
@@ -1400,12 +1347,10 @@ bool wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
 #if wxUSE_UNICODE
         msgid = wxString(data, *inputConv);
 #else // ASCII
-        #if wxUSE_WCHAR_T
-            if ( inputConv && sourceConv )
-                msgid = wxString(inputConv->cMB2WC(data), *sourceConv);
-            else
-        #endif
-                msgid = data;
+        if ( inputConv && sourceConv )
+            msgid = wxString(inputConv->cMB2WC(data), *sourceConv);
+        else
+            msgid = data;
 #endif // wxUSE_UNICODE
 
         data = StringAtOfs(m_pTransTable, i);
@@ -1422,19 +1367,12 @@ bool wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
             wxString msgstr;
 #if wxUSE_UNICODE
             msgstr = wxString(str, *inputConv);
-#elif wxUSE_WCHAR_T
+#else
             if ( inputConv )
                 msgstr = wxString(inputConv->cMB2WC(str), *wxConvUI);
             else
                 msgstr = str;
-#else // !wxUSE_WCHAR_T
-        #if wxUSE_FONTMAP
-            if ( bConvertEncoding )
-                msgstr = wxString(converter.Convert(str));
-            else
-        #endif
-                msgstr = str;
-#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
+#endif // wxUSE_UNICODE/!wxUSE_UNICODE
 
             if ( !msgstr.empty() )
             {
@@ -1452,10 +1390,8 @@ bool wxMsgCatalogFile::FillHash(wxMessagesHash& hash,
         }
     }
 
-#if wxUSE_WCHAR_T
     delete sourceConv;
     delete inputConvPtr;
-#endif // wxUSE_WCHAR_T
 
     return true;
 }
@@ -1483,7 +1419,7 @@ wxMsgCatalog::~wxMsgCatalog()
 #endif // !wxUSE_UNICODE
 
 bool wxMsgCatalog::Load(const wxString& dirPrefix, const wxString& name,
-                        const wxString& msgIdCharset, bool bConvertEncoding)
+                        const wxString& msgIdCharset)
 {
     wxMsgCatalogFile file;
 
@@ -1492,27 +1428,9 @@ bool wxMsgCatalog::Load(const wxString& dirPrefix, const wxString& name,
     if ( !file.Load(dirPrefix, name, m_pluralFormsCalculator) )
         return false;
 
-    if ( !file.FillHash(m_messages, msgIdCharset, bConvertEncoding) )
+    if ( !file.FillHash(m_messages, msgIdCharset) )
         return false;
 
-#if !wxUSE_UNICODE
-    // we should use a conversion compatible with the message catalog encoding
-    // in the GUI if we don't convert the strings to the current conversion but
-    // as the encoding is global, only change it once, otherwise we could get
-    // into trouble if we use several message catalogs with different encodings
-    //
-    // this is, of course, a hack but it at least allows the program to use
-    // message catalogs in any encodings without asking the user to change his
-    // locale
-    if ( !bConvertEncoding &&
-            !file.GetCharset().empty() &&
-                wxConvUI == &wxConvLocal )
-    {
-        wxConvUI =
-        m_conv = new wxCSConv(file.GetCharset());
-    }
-#endif // !wxUSE_UNICODE
-
     return true;
 }
 
@@ -1582,16 +1500,23 @@ void wxLocale::DoCommonInit()
 bool wxLocale::Init(const wxString& name,
                     const wxString& shortName,
                     const wxString& locale,
-                    bool            bLoadDefault,
-                    bool            bConvertEncoding)
+                    bool            bLoadDefault
+#if WXWIN_COMPATIBILITY_2_8
+                   ,bool            bConvertEncoding
+#endif
+                    )
 {
     wxASSERT_MSG( !m_initialized,
                     wxS("you can't call wxLocale::Init more than once") );
 
+#if WXWIN_COMPATIBILITY_2_8
+    wxASSERT_MSG( bConvertEncoding,
+                  wxS("wxLocale::Init with bConvertEncoding=false is no longer supported, add charset to your catalogs") );
+#endif
+
     m_initialized = true;
     m_strLocale = name;
     m_strShort = shortName;
-    m_bConvertEncoding = bConvertEncoding;
     m_language = wxLANGUAGE_UNKNOWN;
 
     // change current locale (default: same as long name)
@@ -1695,6 +1620,11 @@ static const char *wxSetlocaleTryUTF8(int c, const wxString& lc)
 
 bool wxLocale::Init(int language, int flags)
 {
+#if WXWIN_COMPATIBILITY_2_8
+    wxASSERT_MSG( !(flags & wxLOCALE_CONV_ENCODING),
+                  wxS("wxLOCALE_CONV_ENCODING is no longer supported, add charset to your catalogs") );
+#endif
+
     bool ret = true;
 
     int lang = language;
@@ -1883,8 +1813,7 @@ bool wxLocale::Init(int language, int flags)
     }
 
     if ( !Init(name, canonical, retloc,
-            (flags & wxLOCALE_LOAD_DEFAULT) != 0,
-            (flags & wxLOCALE_CONV_ENCODING) != 0) )
+            (flags & wxLOCALE_LOAD_DEFAULT) != 0) )
     {
         ret = false;
     }
@@ -2541,7 +2470,7 @@ bool wxLocale::AddCatalog(const wxString& szDomain,
 
     wxMsgCatalog *pMsgCat = new wxMsgCatalog;
 
-    if ( pMsgCat->Load(m_strShort, szDomain, msgIdCharset, m_bConvertEncoding) )
+    if ( pMsgCat->Load(m_strShort, szDomain, msgIdCharset) )
     {
         // add it to the head of the list so that in GetString it will
         // be searched before the catalogs added earlier