summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Birtwell <michael.birtwell@starleaf.com>2016-10-12 17:15:43 +0100
committerMichael Birtwell <michael.birtwell@starleaf.com>2016-11-21 14:32:49 +0000
commit2ba92312514fcac4902c624b571e8c8a7081658b (patch)
tree5d0d8eacf24bdca65ddb3122fddbd4b57629127f
parent467bf955711e9224bb9f51a9620282d98e61f6c6 (diff)
downloadbabel-2ba92312514fcac4902c624b571e8c8a7081658b.tar.gz
pofile reader: Fix multi line msgctxt
-rw-r--r--babel/messages/pofile.py3
-rw-r--r--tests/messages/test_pofile.py14
2 files changed, 17 insertions, 0 deletions
diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py
index 2d1854b..47db8a9 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 cdb90f5..64bf714 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"