From 6008cbd4c2b5b4f5e9941f312804e12c88aa6efe Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Fri, 11 Apr 2003 20:26:47 +0000 Subject: NullTranslations.__init__(): Back out of setting the default charset to iso-8859-1. GNUTranslations._parse(): Back out the addition of a test for Project-ID-Version in the metadata. This was deliberately removed in response to SF patch #700839. Also, re-organize the code in _parse() so we parse the metadata header containing the charset parameter before we try to decode any strings using charset. --- Lib/gettext.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'Lib/gettext.py') diff --git a/Lib/gettext.py b/Lib/gettext.py index c81f4846097..aa434098612 100644 --- a/Lib/gettext.py +++ b/Lib/gettext.py @@ -172,7 +172,7 @@ def _expand_lang(locale): class NullTranslations: def __init__(self, fp=None): self._info = {} - self._charset = 'iso-8859-1' + self._charset = None self._fallback = None if fp is not None: self._parse(fp) @@ -264,24 +264,10 @@ def _parse(self, fp): if mend < buflen and tend < buflen: msg = buf[moff:mend] tmsg = buf[toff:tend] - if msg.find('\x00') >= 0: - # Plural forms - msgid1, msgid2 = msg.split('\x00') - tmsg = tmsg.split('\x00') - if self._coerce: - msgid1 = unicode(msgid1, self._charset) - tmsg = [unicode(x, self._charset) for x in tmsg] - for i in range(len(tmsg)): - catalog[(msgid1, i)] = tmsg[i] - else: - if self._coerce: - msg = unicode(msg, self._charset) - tmsg = unicode(tmsg, self._charset) - catalog[msg] = tmsg else: raise IOError(0, 'File is corrupt', filename) # See if we're looking at GNU .mo conventions for metadata - if mlen == 0 and tmsg.lower().startswith('project-id-version:'): + if mlen == 0: # Catalog description for item in tmsg.splitlines(): item = item.strip() @@ -299,6 +285,20 @@ def _parse(self, fp): ## nplurals = int(nplurals.strip()) plural = v[1].split('plural=')[1] self.plural = c2py(plural) + if msg.find('\x00') >= 0: + # Plural forms + msgid1, msgid2 = msg.split('\x00') + tmsg = tmsg.split('\x00') + if self._coerce: + msgid1 = unicode(msgid1, self._charset) + tmsg = [unicode(x, self._charset) for x in tmsg] + for i in range(len(tmsg)): + catalog[(msgid1, i)] = tmsg[i] + else: + if self._coerce: + msg = unicode(msg, self._charset) + tmsg = unicode(tmsg, self._charset) + catalog[msg] = tmsg # advance to next entry in the seek tables masteridx += 8 transidx += 8 -- cgit v1.2.3-65-gdbad