From 7e949b437c2faf2331a0439f8fae0f2ed5b3c4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 3 Jan 2000 14:27:24 +0000 Subject: [PATCH] now grabs encoding info not from but from '' (empty string) -- default po header (mo catalog must be, of course, contain the header) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5200 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/intl.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/common/intl.cpp b/src/common/intl.cpp index e21fc7abe3..b34f248d27 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -475,9 +475,20 @@ void wxMsgCatalog::ConvertEncoding() wxFontEncoding enc; // first, find encoding header: - const char *hdr = GetString("$ENCODING"); - if (hdr == NULL) return; // not supported by this catalog - if ((enc = wxTheFontMapper -> CharsetToEncoding(hdr, FALSE)) == wxFONTENCODING_SYSTEM) return; + const char *hdr = StringAtOfs(m_pOrigTable, 0); + if (hdr == NULL) return; // not supported by this catalog, does not have non-fuzzy header + if (hdr[0] != 0) return; // ditto + + /* we support catalogs with header (msgid "") that is _not_ marked as "#, fuzzy" (otherwise + the string would not be included into compiled catalog) */ + wxString header(StringAtOfs(m_pTransTable, 0)); + wxString charset; + int pos = header.Find("Content-Type: text/plain; charset="); + if (pos == -1) return; // incorrectly filled Content-Type header + pos += 34 ; /*strlen("Content-Type: text/plain; charset=")*/ + while (header[pos] != '\n') charset << header[pos++]; + + if ((enc = wxTheFontMapper -> CharsetToEncoding(charset, FALSE)) == wxFONTENCODING_SYSTEM) return; wxFontEncodingArray a = wxEncodingConverter::GetPlatformEquivalents(enc); if (a[0] == enc) return; // no conversion needed, locale uses native encoding