Добрый день. Последний раз использовал Doctrine пару лет назад. Для перевода полей сущности использовал StofDoctrineExtensionsBundle где отдельная таблица в БД для хранения переводов, либо по таблице переводов на каждую сущность и они потом джоинились. С появлением в MySql >=5.7.8 поддержки JSON полей нативно появилась возможность хранить переводы в одной колонке:
Колонка name в БД теперь может иметь содержимое:
{"ru": "Тест", "en": "Test"}
и теперь содержимое будет вытаскиваться с ключом ru или en в зависимости от текущей локали или сохранятся под правильным ключом в БД при сабмите формы со значением name=Test2&... , и перевод делается элементарно и просто.
$newsItem->name; // Returns 'Name in English' given that the current app locale is 'en'
$newsItem->getTranslation('name', 'nl'); // returns 'Naam in het Nederlands'
app()->setLocale('nl'); // Change current locale to nl
$newsItem->name = 'Sets name for nl locale';
Сейчас использую такое расширение поведения в AR Eloquent, но с усложнением бизнес логики присматриваюсь опять к Doctrine и такое поведение там бы было очень кстати, но никак не могу нагуглить что-то подобное.