Як вивести додаткове поле, що містить переклад на іншу мову

В odoo передбачена можливість перекладу на різні мови не лише інтерфейсу, але й даних. Цей функціонал включається за допомогою параметра translate


name = fields.Char(
required=True, translate=True, )


Виглядає це так



і при натискані з'являється вікно, де можна вносити зміни у переклади




Але якщо треба вивести поле для редагування прямо на форму?




Тут не обійтись без хардкоду. Використаємо властивість обчислювальних полів обробляти введену в них інформацію і підміняти мову контексту при операціях.



name = fields.Char(
required=True, translate=True, )
name_en = fields.Char(
compute='_compute_name_en', inverse='_inverse_name_en', )

def _compute_name_en(self):
for obj in self:
obj.name_en = obj.with_context(lang='en_US').name

def _inverse_name_en(self):
for obj in self:
obj.with_context(lang='en_US').name = obj.name_en



Як вивести додаткове поле, що містить переклад на іншу мову
Володимир Карабанов 17 жовтня, 2022
Поділитися цією публікацією
Теги
Архів
Віджети для полів типу Many2one