| Integration | |
| =========== | |
| .. _babel-integration: | |
| Babel | |
| ----- | |
| Jinja provides support for extracting gettext messages from templates | |
| via a `Babel`_ extractor entry point called | |
| ``jinja2.ext.babel_extract``. The support is implemented as part of the | |
| :ref:`i18n-extension` extension. | |
| Gettext messages are extracted from both ``trans`` tags and code | |
| expressions. | |
| To extract gettext messages from templates, the project needs a Jinja | |
| section in its Babel extraction method `mapping file`_: | |
| .. sourcecode:: ini | |
| [jinja2: **/templates/**.html] | |
| encoding = utf-8 | |
| The syntax related options of the :class:`Environment` are also | |
| available as configuration values in the mapping file. For example, to | |
| tell the extractor that templates use ``%`` as | |
| ``line_statement_prefix`` you can use this code: | |
| .. sourcecode:: ini | |
| [jinja2: **/templates/**.html] | |
| encoding = utf-8 | |
| line_statement_prefix = % | |
| :ref:`jinja-extensions` may also be defined by passing a comma separated | |
| list of import paths as the ``extensions`` value. The i18n extension is | |
| added automatically. | |
| Template syntax errors are ignored by default. The assumption is that | |
| tests will catch syntax errors in templates. If you don't want to ignore | |
| errors, add ``silent = false`` to the settings. | |
| .. _Babel: https://babel.readthedocs.io/ | |
| .. _mapping file: https://babel.readthedocs.io/en/latest/messages.html#extraction-method-mapping-and-configuration | |
| Pylons | |
| ------ | |
| It's easy to integrate Jinja into a `Pylons`_ application. | |
| The template engine is configured in ``config/environment.py``. The | |
| configuration for Jinja looks something like this: | |
| .. code-block:: python | |
| from jinja2 import Environment, PackageLoader | |
| config['pylons.app_globals'].jinja_env = Environment( | |
| loader=PackageLoader('yourapplication', 'templates') | |
| ) | |
| After that you can render Jinja templates by using the ``render_jinja`` | |
| function from the ``pylons.templating`` module. | |
| Additionally it's a good idea to set the Pylons ``c`` object to strict | |
| mode. By default attribute access on missing attributes on the ``c`` | |
| object returns an empty string and not an undefined object. To change | |
| this add this to ``config/environment.py``: | |
| .. code-block:: python | |
| config['pylons.strict_c'] = True | |
| .. _Pylons: https://pylonshq.com/ |