Я решил установить "gedmo/doctrine-extensions"
на Symfony, чтобы использовать Translatable
.Gedmo Translatable игнорирует стандартную локаль, установленную в config
Он отлично работает, за исключением того, что слушатель игнорирует стандартную локаль, которую я указал, всегда отступая до en_US
.
Translatable подключен как сервис:
#config.yml
services:
gedmo.listener.translatable:
class: Gedmo\Translatable\TranslatableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setDefaultLocale, [ ru ] ]
- [ setTranslationFallback, [ true ] ]
И когда я пытаюсь find()
объекта в базе данных всегда выбирает en_US
вместо ru
:
$test = $em->find('Vendor\Entity\Test', 1);
//outputs row with 'locale' = "en_US" from `ext_translations_test` table
Только если я указываю язык непосредственно, как :
$test->setTranslatableLocale('ru');
$em->refresh($test);
Это gi ves желаемый перевод.
Есть ли способ установить языковой стандарт по умолчанию, который будет работать?
UPDATE
Добавление другой функции вызова в config.yml
исправлена проблема, Altough теперь я не совсем уверен, что setDefaultLocale()
функция на самом деле делает, так как Gedmo\Translatable\TranslatableListener::$defaultLocale
имущество, предоставляемое с самым ужасным комментарием я когда-либо видел. Постараюсь найти больше ...
services:
gedmo.listener.translatable:
class: Gedmo\Translatable\TranslatableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setDefaultLocale, [ ru ] ]
- [ setTranslatableLocale, [ ru ] ]
- [ setTranslationFallback, [ true ] ]
попробовать '- [setDefaultLocale, [ "ру"]]' с ру в кавычках – Chausser
@Chausser, отрицательный. Тот же результат. – Nevertheless
какая версия расширений доктрины вы используете? – Chausser