diff --git a/odoo/addons/base/i18n/base.pot b/odoo/addons/base/i18n/base.pot index a172bfc9f3c..7c9137a7e96 100644 --- a/odoo/addons/base/i18n/base.pot +++ b/odoo/addons/base/i18n/base.pot @@ -14994,6 +14994,16 @@ msgstr "" msgid "Error message returned when the constraint is violated." msgstr "" +#. module: base +#. odoo-python +#: code:addons/translate.py:0 +#, python-format +msgid "" +"Error while parsing view:\n" +"\n" +"%s" +msgstr "" + #. module: base #. odoo-python #: code:addons/base/models/ir_ui_view.py:0 diff --git a/odoo/tools/translate.py b/odoo/tools/translate.py index 454015369cb..246cf188d26 100644 --- a/odoo/tools/translate.py +++ b/odoo/tools/translate.py @@ -26,6 +26,7 @@ from lxml import etree, html from psycopg2.extras import Json import odoo +from odoo.exceptions import UserError from odoo.modules.module import get_resource_path from . import config, pycompat from .misc import file_open, get_iso_codes, SKIPPED_ELEMENT_TYPES @@ -293,7 +294,11 @@ def serialize_xml(node): _HTML_PARSER = etree.HTMLParser(encoding='utf8') def parse_html(text): - return html.fragment_fromstring(text, parser=_HTML_PARSER) + try: + parse = html.fragment_fromstring(text, parser=_HTML_PARSER) + except TypeError as e: + raise UserError(_("Error while parsing view:\n\n%s") % e) from e + return parse def serialize_html(node): return etree.tostring(node, method='html', encoding='unicode')