changeset 73c1250aaa21 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=73c1250aaa21
description:
        Translate view in view_get instead of when parsing view

        This is needed when the inheritance is from a different model.

        issue11591
        review417521003
diffstat:

 trytond/ir/ui/view.py      |  16 ++++++++++++++++
 trytond/model/modelview.py |  10 ----------
 2 files changed, 16 insertions(+), 10 deletions(-)

diffs (60 lines):

diff -r 65c68ff9d858 -r 73c1250aaa21 trytond/ir/ui/view.py
--- a/trytond/ir/ui/view.py     Mon Jul 18 10:02:12 2022 +0200
+++ b/trytond/ir/ui/view.py     Tue Jul 19 20:57:47 2022 +0200
@@ -251,6 +251,9 @@
                 continue
             tree_inherit = etree.fromstring(view.arch, parser=parser)
             tree = self.inherit_apply(tree, tree_inherit)
+        if model:
+            root = tree.getroottree().getroot()
+            self._translate(root, model, Transaction().language)
         arch = etree.tostring(tree, encoding='utf-8').decode('utf-8')
         result = {
             'type': self.rng_type,
@@ -313,6 +316,19 @@
             index = parent.index(target)
             parent.insert(index, child)
 
+    @classmethod
+    def _translate(cls, element, model, language):
+        pool = Pool()
+        Translation = pool.get('ir.translation')
+        for attr in ['string', 'sum', 'confirm', 'help']:
+            if element.get(attr):
+                translation = Translation.get_source(
+                    model, 'view', language, element.get(attr))
+                if translation:
+                    element.set(attr, translation)
+        for child in element:
+            cls._translate(child, model, language)
+
 
 class ShowViewStart(ModelView):
     'Show view'
diff -r 65c68ff9d858 -r 73c1250aaa21 trytond/model/modelview.py
--- a/trytond/model/modelview.py        Mon Jul 18 10:02:12 2022 +0200
+++ b/trytond/model/modelview.py        Tue Jul 19 20:57:47 2022 +0200
@@ -482,7 +482,6 @@
             cls, element, type, fields_width=None, fields_optional=None,
             _fields_attrs=None):
         pool = Pool()
-        Translation = pool.get('ir.translation')
         ModelData = pool.get('ir.model.data')
         ModelAccess = pool.get('ir.model.access')
         Button = pool.get('ir.model.button')
@@ -630,15 +629,6 @@
             else:
                 element.attrib['id'] = str(action.action.id)
 
-        # translate view
-        if Transaction().language != 'en':
-            for attr in ('string', 'sum', 'confirm', 'help'):
-                if element.get(attr):
-                    trans = Translation.get_source(cls.__name__, 'view',
-                            Transaction().language, element.get(attr))
-                    if trans:
-                        element.set(attr, trans)
-
         if element.tag == 'tree' and element.get('sequence'):
             fields_attrs.setdefault(element.get('sequence'), {})
 

Reply via email to