我是 symfo 的新手,但我需要翻译我网站的内容。
我正在使用 a2lix(最新版本)和 KNP 教义行为(可翻译)。
假设我有 2 个实体(例如文章和类别)。
与文档 ( https://github.com/KnpLabs/DoctrineBehaviors ) 中的翻译一样,我使用 2 个类别的类别(类别和类别翻译)。为了检索我的类别的翻译,我使用了带有语言环境的查询。我通过 Request $request ($locale = $request->getLocale();) 获得了语言环境。这是我的控制器和我的存储库中的查询的示例。
控制器
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$locale = $request->getLocale();
$entities = $em->getRepository('AcmeBundle:Category')->findAllByLocale($locale);
return $this->render('CTCArtworkBundle:Backend/Artwork:index.html.twig', array(
'entities' => $entities,
));
}
存储库 我正在尝试检索区域设置的信息。
public function findAllByLocale($locale){
return $this->createQueryBuilder('a')
->join('a.translations', 'aTrans')
->where('aTrans.locale = :locale')
->setParameter("locale", $locale)
->addSelect('aTrans')
->getQuery()
->getResult()
;
}
我不知道这是否是一个好习惯,但它对我有用。当我更改 url 时,我在我的 Twig 模板中检索 fr/en 类别:
<tr>
<th>Category</th>
<td>{{ category.translations|First.name }}</td>
</tr>
我的问题
对于我的文章的翻译,我也是这样做的。我有 3 个属性 - 标题 - 描述 - 类别(我正在使用 a2lix_translatedEntity (http://a2lix.fr/bundles/translation-form/#bundle-additional))
当我尝试呈现文章的记录时,我从不检索我的类别名称的翻译,但对于标题和描述却很好。
我也读过(https://github.com/KnpLabs/DoctrineBehaviors#guess-the-current-locale),但我不太明白。这是一种总是通过 locale 的方法吗?
我究竟做错了什么 ?
我被阻止了,找不到任何文档来解决我的问题。对不起我的英语不好 ;-)
任何帮助将不胜感激。非常感谢