@gitdev

Как в Symfony 4 перевести текст внутри entity?

в методе toString возвращается текст, его нужно локализировать. как это сделать?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@Flying
Поскольку entities по определению должны быть очень лёгкими объектами - здесь можно рассмотреть несколько вариантов решения:
  1. Наиболее корректным будет вариант использования Doctrine event listener'а который будет слушать событие postLoad и производить локализацию. Что именно и как локализовывать - можно решить несколькими путями:
    1. Дать entity самой решать как это сделать и позволить event listener'у просто передавать ей объект-переводчик (Translator в случае Symfony). Чтобы понять надо ли передавать переводчик - стоит определить отдельный интерфейс, какой-нибудь TranslatableEntityInterface
    2. Указать event listener'у что переводить, к примеру через кастомные аннотации, решение более сложное, но более гибкое

  2. Можно дать возможность entity дёргать какой-нибудь известный и доступный ей метод из которого она будет получать объект-переводчик, к примеру это может быть какой-нибудь StaticTranslatorProvider со статическим методом getTranslator(). В целом не очень хорошая идея, но работать будет
  3. Можно не трогать entities вообще, а запрашивать локализацию непосредственно во внешнем коде. В целом плохой вариант, но тоже возможный
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kylt_lichnosti
@kylt_lichnosti
Думаю тут вы найдете ответ:
https://symfony.com/doc/current/translation.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы