我需要一些解决方案,使用来自gedmo/doctrine扩展的可翻译插件,将具有en和es语言翻译的记录器添加到固定装置中。
我测试了几种方法,但我无法达到目标
$musicGenre = new MusicalGenre();
$musicGenre->setName($genre);
$musicGenre->setEnabled(true);
$this->addReference(self::MUSIC_GENRE_REFERENCE."-".$key, $musicGenre);
$manager->persist($musicGenre);
/*$musicGenre2 = new MusicalGenreTranslation();
$musicGenre2->setLocale('es_ES');
$musicGenre2->setObjectClass(MusicalGenre::class);
$musicGenre2->setField('genre');
$musicGenre2->setContent($genre);
$musicGenre2->setForeignKey($key+1);
$manager->persist($musicGenre2);*/
我不知道如何用其他语言设置或更新每个记录,因为默认记录是用英语插入的。
我找到了一个丑陋的解决方案,但运行了。
$musicGenre = new MusicalGenre();
$musicGenre->setName($genre);
$musicGenre->setEnabled(true);
$musicGenre->setCreatedBy('admin');
$musicGenre->setUpdatedBy('admin');
$musicGenre->setCreatedAt(new DateTime());
$musicGenre->setUpdatedAt(new DateTime());
**$musicGenre->setTranslatableLocale('en');**
$this->addReference(self::MUSIC_GENRE_REFERENCE."-".$key, $musicGenre);
$manager->persist($musicGenre);
$manager->flush();
$musicGenre2 = new MusicalGenreTranslation();
$musicGenre2->setLocale('es');
$musicGenre2->setObjectClass(MusicalGenre::class);
$musicGenre2->setField('name');
$musicGenre2->setContent(self::GENRES_ES[$key]);
$musicGenre2->setForeignKey($musicGenre->getId());
$manager->persist($musicGenre2);
$manager->flush();
$musicGenre3 = new MusicalGenreTranslation();
$musicGenre3->setLocale('en');
$musicGenre3->setObjectClass(MusicalGenre::class);
$musicGenre3->setField('name');
$musicGenre3->setContent($genre);
$musicGenre3->setForeignKey($musicGenre->getId());
$manager->persist($musicGenre3);
$manager->flush();
在第一块,我把音乐流派插在桌子上。对于它的翻译,我正在做一个手动插入音乐流派与当地翻译。