From: Christopher Lenz Date: Thu, 5 Jul 2007 17:25:13 +0000 (+0000) Subject: When parsing catalog headers, look for the content-type first, to be able to use... X-Git-Tag: 1.0~439 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea64779ee56e979f647980cbcc4aac592c82446d;p=thirdparty%2Fbabel.git When parsing catalog headers, look for the content-type first, to be able to use a specified encoding on all other headers. --- diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index e836abf8..ab4beba7 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -267,10 +267,17 @@ class Catalog(object): def _set_mime_headers(self, headers): for name, value in headers: - name = name.lower() + if name == 'content-type': + mimetype, params = parse_header(value) + if 'charset' in params: + self.charset = params['charset'].lower() + break + for name, value in headers: + name = name.lower().decode(self.charset) + value = value.decode(self.charset) if name == 'project-id-version': parts = value.split(' ') - self.project = ' '.join(parts[:-1]) + self.project = u' '.join(parts[:-1]) self.version = parts[-1] elif name == 'report-msgid-bugs-to': self.msgid_bugs_address = value @@ -288,10 +295,6 @@ class Catalog(object): int(tzoffset[2:])) dt = datetime.fromtimestamp(ts) self.creation_date = dt.replace(tzinfo=tzoffset) - elif name == 'content-type': - mimetype, params = parse_header(value) - if 'charset' in params: - self.charset = params['charset'].lower() mime_headers = property(_get_mime_headers, _set_mime_headers, doc="""\ The MIME headers of the catalog, used for the special ``msgid ""`` entry. @@ -403,7 +406,7 @@ class Catalog(object): flags = set() if self.fuzzy: flags |= set(['fuzzy']) - yield Message(u'', u'\n'.join(buf), flags=flags) + yield Message(u'', '\n'.join(buf), flags=flags) for key in self._messages: yield self._messages[key] diff --git a/babel/messages/frontend.py b/babel/messages/frontend.py index 3ee9c1a1..877a0641 100755 --- a/babel/messages/frontend.py +++ b/babel/messages/frontend.py @@ -605,7 +605,7 @@ class CommandLineInterface(object): if options.list_locales: identifiers = localedata.list() longest = max([len(identifier) for identifier in identifiers]) - format = '%%-%ds %%s' % (longest + 1) + format = u'%%-%ds %%s' % (longest + 1) for identifier in localedata.list(): locale = Locale.parse(identifier) print format % (identifier, locale.english_name)