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
// 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; }
}
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
-
- // 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
#endif // !wxUSE_UNICODE
bool wxMsgCatalog::Load(const wxString& dirPrefix, const wxString& name,
- const wxString& msgIdCharset, bool bConvertEncoding)
+ const wxString& msgIdCharset)
{
wxMsgCatalogFile file;
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;
}
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)
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;
}
if ( !Init(name, canonical, retloc,
- (flags & wxLOCALE_LOAD_DEFAULT) != 0,
- (flags & wxLOCALE_CONV_ENCODING) != 0) )
+ (flags & wxLOCALE_LOAD_DEFAULT) != 0) )
{
ret = false;
}
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