Локализация моделей предметной области в Neos/Flow

Веб-сайт, который я в настоящее время разрабатываю с помощью Neos / Flow, включает в себя собственную систему магазинов, реализованную в виде плагина Flow. Продукты, варианты и ваучеры хранятся как модели доменов. Поскольку клиент хочет предоставить свой веб-сайт на разных языках, мне нужно найти способ управлять переводами для объектов домена. Я не могу найти способ, который встроен в Neos/Flow, поэтому моей первой мыслью было просто вставить идентификаторы перевода в переводимые поля (описание и тому подобное), которые затем используются внутри представления с помощью переводчика viewhelper. Это будет работать совершенно нормально, если клиент не захочет редактировать эти поля самостоятельно.

Моей следующей идеей было просто реализовать дополнительное поле для каждого языкового измерения и каждого переводимого поля (например, description_en; description_es, …). Но это был бы худший подход с точки зрения ремонтопригодности и изменчивости. Я обычно работал над проектами TYPO3, где перевод доменных объектов очень прост и готов к работе. Так что этот опыт внутри Neos очень разочаровывает.

Кто-нибудь сталкивался с подобной проблемой или даже нашел решение этой?


person hoebbelsB    schedule 24.05.2018    source источник


Ответы (2)


всякий раз, когда у нас возникало требование иметь многоязычный контент, мы решали эту проблему, сохраняя данные в репозитории контента Neos. Таким образом, обработка языка, также известная как размеры, работает из коробки. Кроме того, создание пользовательского интерфейса для этих записей очень просто с помощью встроенного редактирования или инспектора модуля содержимого.

Обратите внимание, что хранение данных в CR не обязательно означает, что вы должны хранить их в корневом узле /site. Вы также можете добавить новый корневой узел /products для хранения своих продуктов.

Вы можете посмотреть https://github.com/neos/metadata-contentrepositoryadapter, где метаданные хранятся в собственном корне.

Надеюсь, это поможет, Ура, Даниэль

person dlienert    schedule 24.05.2018
comment
Я думаю, что в настоящее время это единственный способ сделать это. Но имхо это ненужная смесь разных понятий. Объекты домена лучше подходят для хранения информации о домене... но на данный момент у меня нет другого выбора, кроме как использовать сочетание постоянных моделей домена и узлов репозитория содержимого. Спасибо за быстрый ответ :) - person hoebbelsB; 24.05.2018

Для справки, что-то подобное можно было бы сделать и с расширением Doctrine Translateable в чистом Flow:

https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md

См. http://flowframework.readthedocs.io/en/stable/TheDefinitiveGuide/PartIII/Persistence.html#on-the-doctrine-event-system о том, как активировать расширение в Flow.

Тем не менее, более чистый подход действительно состоит в том, чтобы фактически разделить модель домена и контент (если вы не создаете CMS, а контент не является вашим доменом;)

person albe    schedule 01.08.2018