diff options
Diffstat (limited to 'i18nfix.py')
-rw-r--r-- | i18nfix.py | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -10,11 +10,24 @@ 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) | ||
20 | yield lineno, funcname, message, comments | 24 | yield lineno, funcname, message, comments |
25 | |||
26 | def wrap_gettext(f): | ||
27 | """ | ||
28 | Call gettext with whitespace normalized. | ||
29 | """ | ||
30 | def wrapper(message): | ||
31 | message = normalize(message) | ||
32 | return f(message) | ||
33 | return wrapper | ||