Support gettext translation in templates

This commit is contained in:
Takeshi KOMIYA 2017-02-04 18:35:44 +09:00
parent 40a957009d
commit 7edcec66c9
2 changed files with 13 additions and 1 deletions

View File

@ -239,3 +239,13 @@ def init(locale_dirs, language, catalog='sphinx'):
if hasattr(translator, 'ugettext'): if hasattr(translator, 'ugettext'):
translator.gettext = translator.ugettext translator.gettext = translator.ugettext
return translator, has_translation 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

View File

@ -14,12 +14,14 @@ from jinja2.sandbox import SandboxedEnvironment
from sphinx import package_dir from sphinx import package_dir
from sphinx.jinja2glue import SphinxFileSystemLoader from sphinx.jinja2glue import SphinxFileSystemLoader
from sphinx.locale import get_translator
class BaseRenderer(object): class BaseRenderer(object):
def __init__(self, loader=None): 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.filters['repr'] = repr
self.env.install_gettext_translations(get_translator())
def render(self, template_name, context): def render(self, template_name, context):
return self.env.get_template(template_name).render(context) return self.env.get_template(template_name).render(context)