Использование перевода

Оглавление

Общие сведения

Как обычно, основная масса информации о том как именно использовать переводы доступна в документации. Постараюсь дополнить то, что осталось за ее рамками.

Система odoo использует везде кодировку utf-8 и поэтому вы можете писать исходные термины и сообщения на любом языке и тогда ваши термины не будут требовать перевода. Это допустимый сценарий, но он имеет ряд недостатков. Поскольку система уже имеет огромное количество готового кода, который имеет смысл использовать(это как это делать, будет описано позже), а в нем все термины созданы на английском языке и для остальных языков применяется перевод. Так вот, когда вы начнете использовать термины например на русском языке, то очень быстро столкнетесь с ситуацией, когда какая-то часть интерфейса требует поменять свое написание и вам придется искать по все системе где вы используете перевод, а где это исходный термин, и легко можно получить когда термин и перевод написаны на одном языке но немного по разному. Поэтому я рекомендую использовать только англоязычные термины, даже если вы совсем плохо знаете язык, вы будете сразу видеть где нужно подтянуть перевод и это будет бросаться в глаза всем участникам. И вы всегда для исправления написания будете использовать один и тот же сценарий, а не бегать по всему коду в поисках всех возможных комбинаций.

Система odoo очень большая и поэтому не все элементы интерфейса могут быть переведены штатными методами, иногда приходится подменять часть представлений или элементов кода как на js, так и на python с помощью наследования

При использовании наследования, переводы могут переводить термины наследуемых модулей(если явно указать источник термина)

Особенности импорта

При попытке загрузить переводы, которые относятся к записям, которые помечены атрибутом noupdate="1"

Перевод контента

Содержимое полей так же может переводиться. Для этого, достаточно добавить атрибут translate=True к атрибутам требуемого поля.

Перевод содержимого полей

Изменения в технической части переводов

Начиная с 16 версии модель ir.translation удалена и теперь все переводы хранятся в сами записях в jsonb полях

Обсуждение

Обсудить можно здесь