git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38666
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
const wxString& msgIdCharset,
bool convertEncoding) const
{
const wxString& msgIdCharset,
bool convertEncoding) const
{
+#if wxUSE_UNICODE
+ // this parameter doesn't make sense, we always must convert encoding in
+ // Unicode build
+ convertEncoding = true;
+#elif wxUSE_FONTMAP
// determine if we need any conversion at all
if ( convertEncoding )
{
// determine if we need any conversion at all
if ( convertEncoding )
{
convertEncoding = false;
}
}
convertEncoding = false;
}
}
+#endif // wxUSE_UNICODE/wxUSE_FONTMAP
#if wxUSE_WCHAR_T
// conversion to use to convert catalog strings to the GUI encoding
wxMBConv *inputConv,
#if wxUSE_WCHAR_T
// conversion to use to convert catalog strings to the GUI encoding
wxMBConv *inputConv,
- *csConv = NULL; // another ptr just to be able to delete it later
- if ( convertEncoding )
+ *inputConvPtr = NULL; // same as inputConv but safely deleteable
+ if ( convertEncoding && !m_charset.empty() )
- if ( m_charset.empty() )
- {
- inputConv = wxConvCurrent;
- }
- else
- {
- inputConv =
- csConv = new wxCSConv(m_charset);
- }
+ inputConvPtr =
+ inputConv = new wxCSConv(m_charset);
- else // no need to convert the encoding
+ else // no need or not possible to convert the encoding
- // we still need the conversion for Unicode build
+ // 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;
inputConv = wxConvCurrent;
#else // !wxUSE_UNICODE
inputConv = NULL;
for (size_t32 i = 0; i < m_numStrings; i++)
{
const char *data = StringAtOfs(m_pOrigTable, i);
for (size_t32 i = 0; i < m_numStrings; i++)
{
const char *data = StringAtOfs(m_pOrigTable, i);
- wxString msgid(data, *inputConv);
+ msgid = wxString(data, *inputConv);
#if wxUSE_WCHAR_T
if ( inputConv && sourceConv )
msgid = wxString(inputConv->cMB2WC(data), *sourceConv);
else
#endif
#if wxUSE_WCHAR_T
if ( inputConv && sourceConv )
msgid = wxString(inputConv->cMB2WC(data), *sourceConv);
else
#endif
#endif // wxUSE_UNICODE
data = StringAtOfs(m_pTransTable, i);
#endif // wxUSE_UNICODE
data = StringAtOfs(m_pTransTable, i);
size_t index = 0;
while (offset < length)
{
size_t index = 0;
while (offset < length)
{
+ const char * const str = data + offset;
+
-#if wxUSE_WCHAR_T
- #if wxUSE_UNICODE
- msgstr = wxString(data + offset, *inputConv);
- #else
+#if wxUSE_UNICODE
+ msgstr = wxString(str, *inputConv);
+#elif wxUSE_WCHAR_T
- msgstr = wxString(inputConv->cMB2WC(data + offset), wxConvLocal);
+ msgstr = wxString(inputConv->cMB2WC(str), *wxConvUI);
- msgstr = wxString(data + offset);
- #endif
#else // !wxUSE_WCHAR_T
#if wxUSE_FONTMAP
if ( convertEncoding )
#else // !wxUSE_WCHAR_T
#if wxUSE_FONTMAP
if ( convertEncoding )
- msgstr = wxString(converter.Convert(data + offset));
+ msgstr = wxString(converter.Convert(str));
- msgstr = wxString(data + offset);
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
if ( !msgstr.empty() )
{
hash[index == 0 ? msgid : msgid + wxChar(index)] = msgstr;
}
#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
if ( !msgstr.empty() )
{
hash[index == 0 ? msgid : msgid + wxChar(index)] = msgstr;
}
- offset += strlen(data + offset) + 1;
+
+ // skip this string
+ offset += strlen(str) + 1;
++index;
}
}
#if wxUSE_WCHAR_T
delete sourceConv;
++index;
}
}
#if wxUSE_WCHAR_T
delete sourceConv;
+ delete inputConvPtr;
+#endif // wxUSE_WCHAR_T