Mercurial > babel > old > mirror
comparison babel/messages/catalog.py @ 212:2c00a52bc073
When parsing catalog headers, look for the content-type first, to be able to use a specified encoding on all other headers.
author | cmlenz |
---|---|
date | Thu, 05 Jul 2007 17:25:13 +0000 |
parents | 6cd31048eb5c |
children | bd8b1301b27e |
comparison
equal
deleted
inserted
replaced
211:9d102737797c | 212:2c00a52bc073 |
---|---|
265 headers.append(('Generated-By', 'Babel %s\n' % VERSION)) | 265 headers.append(('Generated-By', 'Babel %s\n' % VERSION)) |
266 return headers | 266 return headers |
267 | 267 |
268 def _set_mime_headers(self, headers): | 268 def _set_mime_headers(self, headers): |
269 for name, value in headers: | 269 for name, value in headers: |
270 name = name.lower() | 270 if name == 'content-type': |
271 mimetype, params = parse_header(value) | |
272 if 'charset' in params: | |
273 self.charset = params['charset'].lower() | |
274 break | |
275 for name, value in headers: | |
276 name = name.lower().decode(self.charset) | |
277 value = value.decode(self.charset) | |
271 if name == 'project-id-version': | 278 if name == 'project-id-version': |
272 parts = value.split(' ') | 279 parts = value.split(' ') |
273 self.project = ' '.join(parts[:-1]) | 280 self.project = u' '.join(parts[:-1]) |
274 self.version = parts[-1] | 281 self.version = parts[-1] |
275 elif name == 'report-msgid-bugs-to': | 282 elif name == 'report-msgid-bugs-to': |
276 self.msgid_bugs_address = value | 283 self.msgid_bugs_address = value |
277 elif name == 'last-translator': | 284 elif name == 'last-translator': |
278 self.last_translator = value | 285 self.last_translator = value |
286 ts = time.mktime(tt) | 293 ts = time.mktime(tt) |
287 tzoffset = FixedOffsetTimezone(int(tzoffset[:2]) * 60 + | 294 tzoffset = FixedOffsetTimezone(int(tzoffset[:2]) * 60 + |
288 int(tzoffset[2:])) | 295 int(tzoffset[2:])) |
289 dt = datetime.fromtimestamp(ts) | 296 dt = datetime.fromtimestamp(ts) |
290 self.creation_date = dt.replace(tzinfo=tzoffset) | 297 self.creation_date = dt.replace(tzinfo=tzoffset) |
291 elif name == 'content-type': | |
292 mimetype, params = parse_header(value) | |
293 if 'charset' in params: | |
294 self.charset = params['charset'].lower() | |
295 | 298 |
296 mime_headers = property(_get_mime_headers, _set_mime_headers, doc="""\ | 299 mime_headers = property(_get_mime_headers, _set_mime_headers, doc="""\ |
297 The MIME headers of the catalog, used for the special ``msgid ""`` entry. | 300 The MIME headers of the catalog, used for the special ``msgid ""`` entry. |
298 | 301 |
299 The behavior of this property changes slightly depending on whether a locale | 302 The behavior of this property changes slightly depending on whether a locale |
401 for name, value in self.mime_headers: | 404 for name, value in self.mime_headers: |
402 buf.append('%s: %s' % (name, value)) | 405 buf.append('%s: %s' % (name, value)) |
403 flags = set() | 406 flags = set() |
404 if self.fuzzy: | 407 if self.fuzzy: |
405 flags |= set(['fuzzy']) | 408 flags |= set(['fuzzy']) |
406 yield Message(u'', u'\n'.join(buf), flags=flags) | 409 yield Message(u'', '\n'.join(buf), flags=flags) |
407 for key in self._messages: | 410 for key in self._messages: |
408 yield self._messages[key] | 411 yield self._messages[key] |
409 | 412 |
410 def __repr__(self): | 413 def __repr__(self): |
411 locale = '' | 414 locale = '' |