Я использую переводимый модуль KnpLabs / Doctrine2Behaviors для управления интернационализацией внутри моего проекта Symfony2.
Я также использую пакет jms / i18n-routing-bundle для настройки текущей локали через префикс URL (''/ fr ',' /en').
У меня есть объект Post:
<?php
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;
/**
* @ORM\Entity
*/
class Post
{
use ORMBehaviors\Translatable\Translatable;
/**
* @ORM\Column(type="string", length=255)
*/
protected $someFieldIDoNotNeedToTranslate;
...
public function getName()
{
return $this->proxyCurrentLocaleTranslation('getName', array());
}
public function setName($name)
{
return $this->proxyCurrentLocaleTranslation('setName', array($name));
}
...
}
И объект PostTranslation:
<?php
use Doctrine\ORM\Mapping as ORM;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;
/**
* @ORM\Entity
*/
class PostTranslation
{
use ORMBehaviors\Translatable\Translation;
/**
* @ORM\Column(type="string", length=255)
*/
protected $name;
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string
* @return null
*/
public function setName($name)
{
$this->name = $name;
}
}
Теперь я хочу следующеережим работы:
- Включить создание поста только в локали по умолчанию
- Сделать возможным перевод существующей сущности при просмотре в другой локали
Созданиев локали по умолчанию работает хорошо.Я использую функцию setCurrentLocale в своей новой сущности перед предоставлением ее в форму.
Но когда я редактирую сущность в другой локали, она заменяет данные локали по умолчанию вместо создания нового перевода для этой локали,несмотря на использование функции setCurrentLocale на объекте перед предоставлением его в форму редактирования.
Я также пытался создать новый перевод своей сущности в предварительно заданных событиях формы, но безуспешно.
Как я могу сказать, что переводимый модуль Knp должен создать новый перевод моей сущности, если он не существует в выбранной локали?
PS: Когда я вручную создаю трансляции в обеих локалях в таблице,Модуль корректно отображает и редактирует данные в зависимости от выбранной локали.