我已决定在Symfony上安装"gedmo/doctrine-extensions"
以使用Translatable
。Gedmo Translatable忽略在配置中设置的默认语言环境
它工作正常,除了侦听器忽略我指定的默认语言环境,始终回落到en_US
。
可翻译被插入的服务:
#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);
It gi预期的翻译。
有什么办法可以设置默认的语言环境吗?
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,[ “RU”]]'有鸿儒引号 – Chausser 2014-10-29 17:58:56
@Chausser,负。同样的结果。 – Nevertheless 2014-10-29 18:31:09
您使用的是什么版本的学说扩展? – Chausser 2014-10-29 18:44:26