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 = ''
Copyright (C) 2012-2017 Edgewall Software