]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
NullTranslations.__init__(): Back out of setting the default charset
authorBarry Warsaw <barry@python.org>
Fri, 11 Apr 2003 20:26:47 +0000 (20:26 +0000)
committerBarry Warsaw <barry@python.org>
Fri, 11 Apr 2003 20:26:47 +0000 (20:26 +0000)
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

index c81f4846097725d3a83dc082fa0872c03922aec3..aa434098612504b756720da72e257926e389997e 100644 (file)
@@ -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