diff --git a/_extensions/odoo/__init__.py b/_extensions/odoo/__init__.py index 32d58c589..bb0cac558 100644 --- a/_extensions/odoo/__init__.py +++ b/_extensions/odoo/__init__.py @@ -8,7 +8,10 @@ import sphinx.environment import sphinx.builders.html from docutils import nodes def setup(app): - app.set_translator('html', translator.BootstrapTranslator) + if getattr(app.config, 'html_translator_class', None): + app.warn("Overriding the explicitly set html_translator_class setting", + location="odoo extension") + app.config.html_translator_class = 'odoo.translator.BootstrapTranslator' switcher.setup(app) app.add_config_value('odoo_cover_default', None, 'env') diff --git a/_extensions/odoo/translator.py b/_extensions/odoo/translator.py index 3aedd8dbe..48c5e901f 100644 --- a/_extensions/odoo/translator.py +++ b/_extensions/odoo/translator.py @@ -677,3 +677,15 @@ class BootstrapTranslator(nodes.NodeVisitor, object): # internal node def visit_substitution_definition(self, node): raise nodes.SkipNode + + # without set_translator, add_node doesn't work correctly, so the + # serialization of html_domain nodes needs to be embedded here + def visit_div(self, node): + self.body.append(self.starttag(node, 'div')) + def depart_div(self, node): + self.body.append(u'\n') + def visit_address(self, node): + self.body.append(self.starttag(node, 'address')) + def depart_address(self, node): + self.body.append(u'') + # TODO: inline elements