阅读symfony 3的文档,我感到非常困惑,而且我不确定自己是否做得正确。这是怎么了我的正常控制器的一个看了开头:在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
));
}
}
我想添加选项MULTY语言。在symfony之前,我看到这样做只需简单地保存会话语言,以及一个用于更改它的按钮。在symfony中,我添加了一个译文文件夹和每种语言的文件。
//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: Марки
这个我在一些titorial看了之后,我可以加我的_locale,在我的路线是这样的:
@Route( “{_区域} /”,名字= “指数”)
而这实际上工作。我可以通过进入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