0

我坚持使用 TranslatableListener 的 $defaultLocale。

https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#default-locale

我发现只有 Symphony 的设置可能性,而不是 Zend Framework 2。

有一个用于教义的扩展包,用于轻松设置名为“StofDoctrineExtensionsBundle”的 DoctrineExtensions,但我没有为 ZF2 找到类似的东西。

以下链接显示了设置可翻译和其他 DoctrineExtensions 的最佳实践,但我应该把它放在哪里,没有更简单的方法吗?

https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/annotations.md#best-practices-for-setting-up-with-annotations

我只想知道如何在 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"
4

2 回答 2

1

所以我的错误是,我配置了 TranslatableListener 两次。

在我的学说配置中(仅作解释,之前有注释,删除整行):

'doctrine' => [       
    'eventmanager'             => [
        'orm_default' => [
            'subscribers' => [
                'Gedmo\Timestampable\TimestampableListener',
                'Gedmo\Sluggable\SluggableListener',
                // 'Gedmo\Translatable\TranslatableListener',
            ],
        ],
    ],

在引导程序中:

// 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 中为 Translatable Doctrine Extension 设置 DefaultLocale 和 TranslatableLocale,则不要在引导程序中进行设置,并且不要在教义配置中再次添加它。

于 2015-02-09T16:08:56.950 回答
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',
        ],
    ],
],

试试这个: https ://stackoverflow.com/a/42859119/3661592

于 2017-03-17T13:48:30.503 回答