diff --git a/sphinx/locale/__init__.py b/sphinx/locale/__init__.py index 44ad64304..135b76b9d 100644 --- a/sphinx/locale/__init__.py +++ b/sphinx/locale/__init__.py @@ -239,3 +239,13 @@ def init(locale_dirs, language, catalog='sphinx'): if hasattr(translator, 'ugettext'): translator.gettext = translator.ugettext return translator, has_translation + + +def get_translator(catalog='sphinx'): + global translators + translator = translators.get(catalog) + if translator is None: + translator = gettext.NullTranslations() + if hasattr(translator, 'ugettext'): + translator.gettext = translator.ugettext + return translator diff --git a/sphinx/util/template.py b/sphinx/util/template.py index 7cb897e7d..01d365994 100644 --- a/sphinx/util/template.py +++ b/sphinx/util/template.py @@ -14,12 +14,14 @@ from jinja2.sandbox import SandboxedEnvironment from sphinx import package_dir from sphinx.jinja2glue import SphinxFileSystemLoader +from sphinx.locale import get_translator class BaseRenderer(object): def __init__(self, loader=None): - self.env = SandboxedEnvironment(loader=loader) + self.env = SandboxedEnvironment(loader=loader, extensions=['jinja2.ext.i18n']) self.env.filters['repr'] = repr + self.env.install_gettext_translations(get_translator()) def render(self, template_name, context): return self.env.get_template(template_name).render(context)