我坚持使用TranslatableListener的$ defaultLocale。
https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#default-locale
我发现只有Symphony的设置可能性,但Zend Framework 2没有。
有一个教条的扩展包,可以轻松设置名为“StofDoctrineExtensionsBundle”的DoctrineExtensions,但我没有找到类似ZF2的东西。
以下链接显示了设置可翻译和其他DoctrineExtensions的最佳实践,但是我应该在哪里放置它并且不是更方便的方法?
我只想知道如何在ZF2环境中配置TranslatableListener的$ defaultLocale。
更新:
我在我的引导程序中尝试了以下内容:
$translatableListener = new TranslatableListener();
$translatableListener->setDefaultLocale('de-DE');
$doctrineEventManager->addEventSubscriber($translatableListener);
但仍然得到:
... / vendor / gedmo / doctrine-extensions / lib / Gedmo / Translatable / TranslatableListener.php:464 Gedmo \ Translatable \ Mapping \ Event \ Adapter \ ORM-> loadTranslations
$object Rental\Entity\Rental
$translationClass "Rental\Entity\RentalTranslation"
$locale "en_US"
$objectClass "Rental\Entity\Rental"
答案 0 :(得分:1)
所以我的错误是,我将TranslatableListener配置了两次。
在我的学说配置中(仅用于解释之前有注释,删除整行):
'doctrine' => [
'eventmanager' => [
'orm_default' => [
'subscribers' => [
'Gedmo\Timestampable\TimestampableListener',
'Gedmo\Sluggable\SluggableListener',
// 'Gedmo\Translatable\TranslatableListener',
],
],
],
并在bootstrap:
// sets the default locale and the actual locale
$translatableListener = new TranslatableListener();
$translatableListener->setDefaultLocale('de-DE');
$translatableListener->setTranslatableLocale(\Locale::getDefault());
$doctrineEventManager->addEventSubscriber($translatableListener);
如果你想在Zend Framework 2中为可翻译的Doctrine扩展设置DefaultLocale和TranslatableLocale,那么在bootstrap中设置它并且不要在教条配置中第二次添加它。 / p>
答案 1 :(得分:0)
如果你想保留:
'doctrine' => [
'eventmanager' => [
'orm_default' => [
'subscribers' => [
'Gedmo\Timestampable\TimestampableListener',
'Gedmo\Sluggable\SluggableListener',
// the line below because in future you might need it
'Gedmo\Translatable\TranslatableListener',
],
],
],