私は過去 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();
翻訳されるのはタイトルだけですが、スラッグはフランス語のみです。私はドキュメントからその解決策を試しました...しかし、TranslationListenerはありません(ファイルが存在しません)。ドキュメントには、私にとってあまり意味のないメモが 1 つだけあります。
注: これらの翻訳は、オブジェクトの通常のフィールドとして処理されません。スラッグを翻訳する場合、追加の翻訳はスラッグの生成方法がわからないため、作成時に追加の翻訳としての値を処理する必要があります。
私は行き詰まりを感じていることを認めなければなりません。誰かがその問題についての知識を共有してくれませんか!