symfony 3のドキュメントを読んで、私は非常に混乱しています。これは私の普通のコントローラの1人がスタートを見た様子です:symfony 3プロジェクトに複数言語オプションを追加する
class IndexController extends Controller
{
/**
* @Route("/", name="index")
*/
public function indexAction(Request $request)
{
$articles = $this->getDoctrine()
->getRepository(Article::class)->findAll();
return $this->render("index.html.twig", array(
'articles' => $articles
));
}
}
多言語用のオプションを追加したかったのです。 symfonyを使用する前に、私は簡単なセッションで言語を保存し、これを変更するためのボタンを使ってこれを行うのを見た。 symfonyでは、の翻訳フォルダと、各言語のファイルを追加しました。
@Route( "{_ロケール} /"、名前= "インデックス")
:私はこのような私のルートでは、私のから_locateを追加することができ、いくつかのtitorialで見たこの後
//messages.en.yml
base.menu.1: Home
base.menu.2: Products
base.menu.3: Brands
//messages.bg.yml
base.menu.1: Начало
base.menu.2: Продукти
base.menu.3: Марки
これは実際に働いた。私は私のホームページの言語をbg /、またはen /に変えることができます。
しかし、ロケールはどこにも保存されませんでした。私が他のページに行った場合、どの言語が以前に設定されたのかはわかりません。だから私はより多くのを読んで、私はこのようなのrouting.ymlに私のルートのすべてを保存することで、この問題を解決することができました。
index:
path: /{_locale}/
defaults: { _controller: AppBundle:Index:index }
requirements:
_locale: '%app.locales%'
、その後、私の設定を設定します。
parameters:
locale: bg
app.locales: bg|en
framework:
translator: { fallbacks: ['%locale%'] }
このすべて私のルーティングをコントローラからrouting.ymlに移動しなければならないことを除いて、動作しています。私はこれが正しい方法であるかどうか、私は確信が持てないので、ドキュメントは100%明確ではない(おそらく私はそれを理解することはできません)、良いティトリアルを見つけることはできません。
それだった、ありがとう! – symfonypleb