Mercurial > babel > old > mirror
changeset 430:70f72bc70a93
Fix for msgctxt parsing in PO files. Thanks to Asheesh Laroia for the patch. Closes #159.
author | cmlenz |
---|---|
date | Tue, 17 Mar 2009 22:26:03 +0000 |
parents | 08e2d18163d9 |
children | 3696a7d2cc4b |
files | babel/messages/pofile.py babel/messages/tests/pofile.py |
diffstat | 2 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -192,6 +192,8 @@ 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('"'):
--- a/babel/messages/tests/pofile.py +++ b/babel/messages/tests/pofile.py @@ -169,6 +169,27 @@ 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"