symfo は初めてですが、サイトのコンテンツを翻訳する必要があります。
私は a2lix (最終バージョン) と KNP 教義の動作 (翻訳可能) を使用しています。
2 つのエンティティ (記事とカテゴリなど) があるとします。
翻訳のドキュメント ( https://github.com/KnpLabs/DoctrineBehaviors ) のように、カテゴリに 2 つのクラス (Category と CategoryTranslation) を使用しています。私のカテゴリの翻訳を取得するために、ロケールでクエリを使用しています。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 を渡す方法ですか?
私は何を間違っていますか?
ブロックされており、問題を解決するためのドキュメントが見つかりません。私の英語でごめんなさい;-)
どんな助けでも大歓迎です。どうもありがとう