Mercurial > babel > old > babel-test
comparison babel/messages/catalog.py @ 545:afdab04b8527
Catalog class should not do decoding of input strings (fixes #256)
author | fschwarz |
---|---|
date | Sat, 19 Mar 2011 19:34:40 +0000 |
parents | 030ddf3f5b13 |
children |
comparison
equal
deleted
inserted
replaced
544:030ddf3f5b13 | 545:afdab04b8527 |
---|---|
322 headers.append(('Generated-By', 'Babel %s\n' % VERSION)) | 322 headers.append(('Generated-By', 'Babel %s\n' % VERSION)) |
323 return headers | 323 return headers |
324 | 324 |
325 def _set_mime_headers(self, headers): | 325 def _set_mime_headers(self, headers): |
326 for name, value in headers: | 326 for name, value in headers: |
327 if name.lower() == 'content-type': | 327 name = name.lower() |
328 mimetype, params = parse_header(value) | |
329 if 'charset' in params: | |
330 self.charset = params['charset'].lower() | |
331 break | |
332 for name, value in headers: | |
333 name = name.lower().decode(self.charset) | |
334 value = value.decode(self.charset) | |
335 if name == 'project-id-version': | 328 if name == 'project-id-version': |
336 parts = value.split(' ') | 329 parts = value.split(' ') |
337 self.project = u' '.join(parts[:-1]) | 330 self.project = u' '.join(parts[:-1]) |
338 self.version = parts[-1] | 331 self.version = parts[-1] |
339 elif name == 'report-msgid-bugs-to': | 332 elif name == 'report-msgid-bugs-to': |
340 self.msgid_bugs_address = value | 333 self.msgid_bugs_address = value |
341 elif name == 'last-translator': | 334 elif name == 'last-translator': |
342 self.last_translator = value | 335 self.last_translator = value |
343 elif name == 'language-team': | 336 elif name == 'language-team': |
344 self.language_team = value | 337 self.language_team = value |
338 elif name == 'content-type': | |
339 mimetype, params = parse_header(value) | |
340 if 'charset' in params: | |
341 self.charset = params['charset'].lower() | |
345 elif name == 'plural-forms': | 342 elif name == 'plural-forms': |
346 _, params = parse_header(' ;' + value) | 343 _, params = parse_header(' ;' + value) |
347 self._num_plurals = int(params.get('nplurals', 2)) | 344 self._num_plurals = int(params.get('nplurals', 2)) |
348 self._plural_expr = params.get('plural', '(n != 1)') | 345 self._plural_expr = params.get('plural', '(n != 1)') |
349 elif name == 'pot-creation-date': | 346 elif name == 'pot-creation-date': |
588 message.user_comments)) | 585 message.user_comments)) |
589 current.flags |= message.flags | 586 current.flags |= message.flags |
590 message = current | 587 message = current |
591 elif id == '': | 588 elif id == '': |
592 # special treatment for the header message | 589 # special treatment for the header message |
593 headers = message_from_string(message.string.encode(self.charset)) | 590 def _parse_header(header_string): |
594 self.mime_headers = headers.items() | 591 # message_from_string only works for str, not for unicode |
592 headers = message_from_string(header_string.encode('utf8')) | |
593 decoded_headers = {} | |
594 for name, value in headers.items(): | |
595 name = name.decode('utf8') | |
596 value = value.decode('utf8') | |
597 decoded_headers[name] = value | |
598 return decoded_headers | |
599 self.mime_headers = _parse_header(message.string).items() | |
595 self.header_comment = '\n'.join(['# %s' % comment for comment | 600 self.header_comment = '\n'.join(['# %s' % comment for comment |
596 in message.user_comments]) | 601 in message.user_comments]) |
597 self.fuzzy = message.fuzzy | 602 self.fuzzy = message.fuzzy |
598 else: | 603 else: |
599 if isinstance(id, (list, tuple)): | 604 if isinstance(id, (list, tuple)): |