В 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