diff options
author | Barry Warsaw <barry@python.org> | 2003-04-11 20:26:47 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2003-04-11 20:26:47 (GMT) |
commit | 6008cbd4c2b5b4f5e9941f312804e12c88aa6efe (patch) | |
tree | c96feee133fe300c52507b9ba83d58472e2344d0 /Lib | |
parent | 3bc093b717fc29ecf4540d4204447f8447d7377d (diff) | |
download | cpython-6008cbd4c2b5b4f5e9941f312804e12c88aa6efe.zip cpython-6008cbd4c2b5b4f5e9941f312804e12c88aa6efe.tar.gz cpython-6008cbd4c2b5b4f5e9941f312804e12c88aa6efe.tar.bz2 |
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.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/gettext.py | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/Lib/gettext.py b/Lib/gettext.py index c81f484..aa43409 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 @@ class GNUTranslations(NullTranslations): 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 @@ class GNUTranslations(NullTranslations): ## 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 |