From: Christopher Lenz Date: Tue, 17 Mar 2009 22:26:03 +0000 (+0000) Subject: Fix for msgctxt parsing in PO files. Thanks to Asheesh Laroia for the patch. Closes... X-Git-Tag: 1.0~262 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4563a351add903fd1a93e683fccda7ccc42e416e;p=thirdparty%2Fbabel.git Fix for msgctxt parsing in PO files. Thanks to Asheesh Laroia for the patch. Closes #159. --- diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py index dd24735c..1890294c 100644 --- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -192,6 +192,8 @@ def read_po(fileobj, locale=None, domain=None, ignore_obsolete=False): else: translations.append([0, msg]) elif line.startswith('msgctxt'): + if messages: + _add_message() in_msgid[0] = in_msgstr[0] = False context.append(line[7:].lstrip()) elif line.startswith('"'): diff --git a/babel/messages/tests/pofile.py b/babel/messages/tests/pofile.py index c4525fc6..42580ecf 100644 --- a/babel/messages/tests/pofile.py +++ b/babel/messages/tests/pofile.py @@ -169,6 +169,27 @@ msgstr "Bahr" assert out_buf.getvalue().strip() == buf.getvalue().strip(), \ out_buf.getvalue() + def test_with_context_two(self): + buf = StringIO(r'''msgctxt "Menu" +msgid "foo" +msgstr "Voh" + +msgctxt "Mannu" +msgid "bar" +msgstr "Bahr" +''') + catalog = pofile.read_po(buf, ignore_obsolete=True) + self.assertEqual(2, len(catalog)) + message = catalog.get('foo', context='Menu') + self.assertEqual('Menu', message.context) + message = catalog.get('bar', context='Mannu') + self.assertEqual('Mannu', message.context) + + # And verify it pass through write_po + out_buf = StringIO() + pofile.write_po(out_buf, catalog, omit_header=True) + assert out_buf.getvalue().strip() == buf.getvalue().strip(), out_buf.getvalue() + def test_singlular_plural_form(self): buf = StringIO(r'''msgid "foo" msgid_plural "foo"