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'), {})