diff --git a/openerp/addons/base/tests/test_translate.py b/openerp/addons/base/tests/test_translate.py index 95b306e1837..8aab490e0fa 100644 --- a/openerp/addons/base/tests/test_translate.py +++ b/openerp/addons/base/tests/test_translate.py @@ -50,13 +50,6 @@ class TranslationToolsTestCase(unittest.TestCase): self.assertEquals(result, source) self.assertItemsEqual(terms, [source]) - def test_translate_xml_text_entity_unescaped(self): - """ Test xml_translate() on plain text with HTML entities. """ - terms = [] - source = "Blah blah blah" - with self.assertRaises(XMLSyntaxError): - xml_translate(terms.append, source) - def test_translate_xml_text_entity(self): """ Test xml_translate() on plain text with HTML escaped entities. """ terms = [] diff --git a/openerp/tools/translate.py b/openerp/tools/translate.py index 07b587d1467..7a5f6452fa2 100644 --- a/openerp/tools/translate.py +++ b/openerp/tools/translate.py @@ -271,10 +271,11 @@ def xml_translate(callback, value): trans.process(root) return trans.get_done() except etree.ParseError: - # fallback in case it is a translated term... - root = etree.fromstring("
%s
" % encode(value)) - trans.process(root) - return trans.get_done()[5:-6] # remove tags
and
+ # fallback for translated terms: use an HTML parser and wrap the term + wrapped = "
%s
" % encode(value) + root = etree.fromstring(wrapped, etree.HTMLParser(encoding='utf-8')) + trans.process(root[0][0]) # html > body > div + return trans.get_done()[5:-6] # remove tags
and
def html_translate(callback, value): """ Translate an HTML value (string), using `callback` for translating text