From: Michael Birtwell Date: Wed, 12 Oct 2016 16:15:43 +0000 (+0100) Subject: pofile reader: Fix multi line msgctxt X-Git-Tag: v2.4.0~4^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ba92312514fcac4902c624b571e8c8a7081658b;p=thirdparty%2Fbabel.git pofile reader: Fix multi line msgctxt --- diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py index 2d1854b1..47db8a9f 100644 --- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -190,6 +190,7 @@ class PoFileParser(object): self.offset = lineno if keyword in ['msgid', 'msgid_plural']: + self.in_msgctxt = False self.in_msgid = True self.messages.append(_NormalizedString(arg)) @@ -201,7 +202,9 @@ class PoFileParser(object): self.translations.append([int(idx), _NormalizedString(msg)]) else: self.translations.append([0, _NormalizedString(arg)]) + elif keyword == 'msgctxt': + self.in_msgctxt = True self.context = _NormalizedString(arg) def _process_string_continuation_line(self, line, lineno): diff --git a/tests/messages/test_pofile.py b/tests/messages/test_pofile.py index cdb90f5e..64bf7148 100644 --- a/tests/messages/test_pofile.py +++ b/tests/messages/test_pofile.py @@ -287,6 +287,20 @@ msgstr "Bahr" self.assertEqual(message.context, "other") self.assertEqual(message.string, "Voh") + def test_multiline_context(self): + buf = StringIO(''' +msgctxt "a really long " +"message context " +"why?" +msgid "mid" +msgstr "mst" + ''') + catalog = pofile.read_po(buf) + self.assertEqual(1, len(catalog)) + message = catalog.get('mid', context="a really long message context why?") + assert message is not None + self.assertEqual("a really long message context why?", message.context) + def test_with_context_two(self): buf = BytesIO(b'''msgctxt "Menu" msgid "foo"