在过去的 2 个小时里,我一直在翻译我的蛞蝓,但没有取得多大成功。首先,让我们看一下我的实体:
/**
* BlogPost
*
* @ORM\Entity
*/
class BlogPost implements Translatable
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(name="title", type="string", length=128)
*/
private $title;
/**
* @Gedmo\Slug(fields={"title"})
* @Gedmo\Translatable
* @ORM\Column(length=128)
*/
private $slug;
这很简单。现在,当我这样做时:
$em = $this->getDoctrine()->getManager();
$blogPost = new BlogPost();
$blogPost->setTitle('my title in FRANCAIS');
$blogPost->setTranslatableLocale('fr_ca');
$em->persist($blogPost);
$em->flush();
$blogPost->setTitle('my title in ENGLISH');
$blogPost->setTranslatableLocale('en_us');
$em->persist($blogPost);
$em->flush();
只有我的标题被翻译,但我的 slug 只有法语。我从文档中尝试了该解决方案......但没有 TranslationListener(该文件不存在)。文档中只有一个注释对我来说意义不大:
注意:这些翻译不会作为你对象的普通字段处理,如果你翻译一个slug附加翻译将不知道如何生成slug,所以在创建它时应该处理作为附加翻译的值。
我必须承认,我觉得自己陷入了死胡同。有人可以分享一些关于这件事的知识!