summaryrefslogtreecommitdiff
path: root/mako/ext/extract.py
diff options
context:
space:
mode:
Diffstat (limited to 'mako/ext/extract.py')
-rw-r--r--mako/ext/extract.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/mako/ext/extract.py b/mako/ext/extract.py
index 313c088..8dd2e96 100644
--- a/mako/ext/extract.py
+++ b/mako/ext/extract.py
@@ -16,6 +16,7 @@ class MessageExtractor(object):
def extract_nodes(self, nodes):
translator_comments = []
in_translator_comments = False
+ input_encoding = self.config['encoding'] or 'ascii'
comment_tags = list(
filter(None, re.split(r'\s+', self.config['comment-tags'])))
@@ -76,13 +77,18 @@ class MessageExtractor(object):
comment[1] for comment in translator_comments]
if isinstance(code, compat.text_type):
- code = code.encode('ascii', 'backslashreplace')
+ code = code.encode(input_encoding, 'backslashreplace')
used_translator_comments = False
- code = compat.byte_buffer(code)
+ # We add extra newline to work around a pybabel bug
+ # (see python-babel/babel#274, parse_encoding dies if the first
+ # input string of the input is non-ascii)
+ # Also, because we added it, we have to subtract one from
+ # node.lineno
+ code = compat.byte_buffer(compat.b('\n') + code)
for message in self.process_python(
- code, node.lineno, translator_strings):
+ code, node.lineno - 1, translator_strings):
yield message
used_translator_comments = True