diff --git a/CHANGES b/CHANGES index 84da6846b..7f3388d8e 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,7 @@ Version 2.7 separately in order to work in combination with module loaders as advertised. - Fixed filesizeformat. +- Added a non-silent option for babel extraction. Version 2.6 ----------- diff --git a/docs/extensions.rst b/docs/extensions.rst index c6b6ec9e3..357f59210 100644 --- a/docs/extensions.rst +++ b/docs/extensions.rst @@ -34,7 +34,7 @@ translatable and calls `gettext`. After enabling dummy `_` function that forwards calls to `gettext` is added to the environment globals. An internationalized application then has to -provide at least an `gettext` and optoinally a `ngettext` function into the +provide at least an `gettext` and optionally a `ngettext` function into the namespace. Either globally or for each rendering. Environment Methods diff --git a/docs/integration.rst b/docs/integration.rst index 1875711df..e5c76dc44 100644 --- a/docs/integration.rst +++ b/docs/integration.rst @@ -38,6 +38,15 @@ that templates use ``%`` as `line_statement_prefix` you can use this code: of import paths as `extensions` value. The i18n extension is added automatically. +.. versionchanged:: 2.7 + + Until 2.7 template syntax errors were always ignored. This was done + since many people are dropping non template html files into the + templates folder and it would randomly fail. The assumption was that + testsuites will catch syntax errors in templates anyways. If you don't + want that behavior you can add ``silent=false`` to the settings and + exceptions are propagated. + .. _mapping file: http://babel.edgewall.org/wiki/Documentation/messages.html#extraction-method-mapping-and-configuration Pylons diff --git a/jinja2/ext.py b/jinja2/ext.py index 5ba6efdbf..206756fe7 100644 --- a/jinja2/ext.py +++ b/jinja2/ext.py @@ -552,6 +552,10 @@ def babel_extract(fileobj, keywords, comment_tags, options): The `newstyle_gettext` flag can be set to `True` to enable newstyle gettext calls. + .. versionchanged:: 2.7 + A `silent` option can now be provided. If set to `False` template + syntax errors are propagated instead of being ignored. + :param fileobj: the file-like object the messages should be extracted from :param keywords: a list of keywords (i.e. function names) that should be recognized as translation functions @@ -571,8 +575,10 @@ def babel_extract(fileobj, keywords, comment_tags, options): extensions.add(InternationalizationExtension) def getbool(options, key, default=False): - options.get(key, str(default)).lower() in ('1', 'on', 'yes', 'true') + return options.get(key, str(default)).lower() in \ + ('1', 'on', 'yes', 'true') + silent = getbool(options, 'silent', True) environment = Environment( options.get('block_start_string', BLOCK_START_STRING), options.get('block_end_string', BLOCK_END_STRING), @@ -596,6 +602,8 @@ def getbool(options, key, default=False): node = environment.parse(source) tokens = list(environment.lex(environment.preprocess(source))) except TemplateSyntaxError, e: + if not silent: + raise # skip templates with syntax errors return