From: Kenny Root Date: Fri, 17 Jun 2016 06:11:56 +0000 (-0700) Subject: Read locale from .po if it has Language header X-Git-Tag: v2.4.0~18^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F420%2Fhead;p=thirdparty%2Fbabel.git Read locale from .po if it has Language header When a .po file was written out it would write the "Language" header, but it wouldn't subsequently read that header back in. This change makes that symmetric so you can write out a file and get back the same Catalog by reading it in again. Additionally other values like charset get overridden when the header is read, so codify the behavior that the read "Language" header gets set as the locale of the Catalog object. --- diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index aeb9a9e4..84cee432 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -402,6 +402,8 @@ class Catalog(object): self.msgid_bugs_address = value elif name == 'last-translator': self.last_translator = value + elif name == 'language': + self.locale = Locale.parse(value) elif name == 'language-team': self.language_team = value elif name == 'content-type': diff --git a/tests/messages/test_pofile.py b/tests/messages/test_pofile.py index 1bac3603..b4530766 100644 --- a/tests/messages/test_pofile.py +++ b/tests/messages/test_pofile.py @@ -29,6 +29,14 @@ msgstr "Voh"''') catalog = pofile.read_po(buf, locale='en_US') self.assertEqual(Locale('en', 'US'), catalog.locale) + def test_locale_gets_overridden_by_file(self): + buf = StringIO(r''' +msgid "" +msgstr "" +"Language: en_US\n"''') + catalog = pofile.read_po(buf, locale='de') + self.assertEqual(Locale('en', 'US'), catalog.locale) + def test_preserve_domain(self): buf = StringIO(r'''msgid "foo" msgstr "Voh"''') @@ -112,6 +120,7 @@ msgstr "" "POT-Creation-Date: 2007-09-27 11:19+0700\n" "PO-Revision-Date: 2007-09-27 21:42-0700\n" "Last-Translator: John \n" +"Language: de\n" "Language-Team: German Lang \n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" @@ -128,6 +137,7 @@ msgstr "" tzinfo=FixedOffsetTimezone(7 * 60)), catalog.creation_date) self.assertEqual(u'John ', catalog.last_translator) + self.assertEqual(Locale('de'), catalog.locale) self.assertEqual(u'German Lang ', catalog.language_team) self.assertEqual(u'iso-8859-2', catalog.charset) self.assertEqual(True, list(catalog)[0].fuzzy)