# HG changeset patch # User cmlenz # Date 1182373150 0 # Node ID 05dcda2674ea85f50dd5a434b22cee57968e2876 # Parent f037bcc3baa708bb5d0b2b23d58077869fb83b1a Merged [141:143] and [145:153] via svnmerge from [source:/trunk]. diff --git a/babel/core.py b/babel/core.py --- a/babel/core.py +++ b/babel/core.py @@ -539,6 +539,10 @@ for name in filter(None, varnames): locale = os.getenv(name) if locale: + if name == 'LANGUAGE' and ':' in locale: + # the LANGUAGE variable may contain a colon-separated list of + # language codes; we just pick the language on the list + locale = locale.split(':')[0] return '_'.join(filter(None, parse_locale(locale))) def negotiate_locale(preferred, available, sep='_'): diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -13,6 +13,7 @@ """Data structures for message catalogs.""" +from cgi import parse_header from datetime import datetime from email import message_from_string import re @@ -37,7 +38,7 @@ class Message(object): """Representation of a single message in a catalog.""" - def __init__(self, id, string='', locations=(), flags=(), auto_comments=(), + def __init__(self, id, string=u'', locations=(), flags=(), auto_comments=(), user_comments=()): """Create the message object. @@ -263,6 +264,10 @@ 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. diff --git a/babel/messages/extract.py b/babel/messages/extract.py --- a/babel/messages/extract.py +++ b/babel/messages/extract.py @@ -260,7 +260,7 @@ elif tok == COMMENT: # Strip the comment token from the line value = value[1:].strip() - if in_translator_comments is True and \ + if in_translator_comments and \ translator_comments[-1][0] == lineno - 1: # We're already inside a translator comment, continue appending # XXX: Should we check if the programmer keeps adding the @@ -271,8 +271,7 @@ # starts with one of the comment tags for comment_tag in comment_tags: if value.startswith(comment_tag): - if in_translator_comments is not True: - in_translator_comments = True + in_translator_comments = True comment = value[len(comment_tag):].strip() translator_comments.append((lineno, comment)) break diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py --- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -60,12 +60,12 @@ ... print (message.id, message.string) ... print ' ', (message.locations, message.flags) ... print ' ', (message.user_comments, message.auto_comments) - ('foo %(name)s', '') - ([('main.py', 1)], set(['fuzzy', 'python-format'])) + (u'foo %(name)s', '') + ([(u'main.py', 1)], set([u'fuzzy', u'python-format'])) ([], []) - (('bar', 'baz'), ('', '')) - ([('main.py', 3)], set([])) - (['A user comment'], ['An auto comment']) + ((u'bar', u'baz'), ('', '')) + ([(u'main.py', 3)], set([])) + ([u'A user comment'], [u'An auto comment']) :param fileobj: the file-like object to read the PO file from :return: an iterator over ``(message, translation, location)`` tuples @@ -97,7 +97,7 @@ del flags[:]; del auto_comments[:]; del user_comments[:] for line in fileobj.readlines(): - line = line.strip() + line = line.strip().decode(catalog.charset) if line.startswith('#'): in_msgid = in_msgstr = False if messages: