diff options
Diffstat (limited to 'i18nfix.py')
-rw-r--r-- | i18nfix.py | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -10,11 +10,26 @@ Extract translations from a Jinja2 template, stripping leading newlines. | |||
10 | import jinja2.ext | 10 | import jinja2.ext |
11 | import re | 11 | import re |
12 | 12 | ||
13 | r = re.compile(r"\n[ \t]+") | 13 | def normalize(message): |
14 | message = message.strip() | ||
15 | # collapse whitespaces (including newlines) into one space. | ||
16 | message = re.sub("\s+", " ", message) | ||
17 | return message | ||
18 | |||
14 | 19 | ||
15 | def babel_extract(fileobj, keywords, comment_tags, options): | 20 | def babel_extract(fileobj, keywords, comment_tags, options): |
16 | res = jinja2.ext.babel_extract(fileobj, keywords, comment_tags, options) | 21 | res = jinja2.ext.babel_extract(fileobj, keywords, comment_tags, options) |
17 | for lineno, funcname, message, comments in res: | 22 | for lineno, funcname, message, comments in res: |
18 | message = message.lstrip() | 23 | message = normalize(message) |
19 | message = r.sub("\n", message) | 24 | print("extracting", repr(message)) |
20 | yield lineno, funcname, message, comments | 25 | yield lineno, funcname, message, comments |
26 | |||
27 | def wrap_gettext(f): | ||
28 | """ | ||
29 | Call gettext with whitespace normalized. | ||
30 | """ | ||
31 | def wrapper(message): | ||
32 | message = normalize(message) | ||
33 | print("translating", repr(message)) | ||
34 | return f(message) | ||
35 | return wrapper | ||