ZF2 中可翻译的 DoctrineExtensions - 我如何以及在何处设置 DefaultLocale
DoctrineExtensions translatable in ZF2 - how and where can I setDefaultLocale
我坚持使用 TranslatableListener 的 $defaultLocale。
https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#default-locale
我发现只有 Symphony 的设置可能性,而不是 Zend Framework 2。
有一个名为 "StofDoctrineExtensionsBundle" 的 DoctrineExtensions 的扩展包,用于轻松设置 DoctrineExtensions,但我没有为 ZF2 找到类似的东西。
以下 link 展示了设置可翻译和其他 DoctrineExtensions 的最佳实践,但是我应该把它放在哪里,难道没有更简单的方法吗?
我只想知道如何在 ZF2 环境中配置 TranslatableListener 的 $defaultLocale。
更新:
我在 bootstrap 中尝试了以下内容:
$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"
所以我的错误是,我配置了两次 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 中为 Translatable Doctrine Extension 设置 DefaultLocale 和 TranslatableLocale,请在 bootstrap 中设置并且 不要 添加它第二次在学说配置中。
如果你想保留:
'doctrine' => [
'eventmanager' => [
'orm_default' => [
'subscribers' => [
'Gedmo\Timestampable\TimestampableListener',
'Gedmo\Sluggable\SluggableListener',
// the line below because in future you might need it
'Gedmo\Translatable\TranslatableListener',
],
],
],
试试这个:
我坚持使用 TranslatableListener 的 $defaultLocale。
https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/translatable.md#default-locale
我发现只有 Symphony 的设置可能性,而不是 Zend Framework 2。
有一个名为 "StofDoctrineExtensionsBundle" 的 DoctrineExtensions 的扩展包,用于轻松设置 DoctrineExtensions,但我没有为 ZF2 找到类似的东西。
以下 link 展示了设置可翻译和其他 DoctrineExtensions 的最佳实践,但是我应该把它放在哪里,难道没有更简单的方法吗?
我只想知道如何在 ZF2 环境中配置 TranslatableListener 的 $defaultLocale。
更新:
我在 bootstrap 中尝试了以下内容:
$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"
所以我的错误是,我配置了两次 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 中为 Translatable Doctrine Extension 设置 DefaultLocale 和 TranslatableLocale,请在 bootstrap 中设置并且 不要 添加它第二次在学说配置中。
如果你想保留:
'doctrine' => [
'eventmanager' => [
'orm_default' => [
'subscribers' => [
'Gedmo\Timestampable\TimestampableListener',
'Gedmo\Sluggable\SluggableListener',
// the line below because in future you might need it
'Gedmo\Translatable\TranslatableListener',
],
],
],
试试这个: