我创建了一个不打算翻译的应用程序,但现在我决定添加此功能.问题是我的所有路线都是这样的:
goodbye:
pattern: /goodbye
defaults: { _controller: AcmeBudgetTrackerBundle:Goodbye:goodbye }
Run Code Online (Sandbox Code Playgroud)
我现在想让他们像这样:
goodbye:
pattern: /goodbye/{_locale}
defaults: { _controller: AcmeBudgetTrackerBundle:Goodbye:goodbye, _locale: en }
requirements:
_locale: en|bg
Run Code Online (Sandbox Code Playgroud)
我是否真的必须这样做,有没有办法做更全局或自动,或至少只添加一次请求,因为它们对所有网址是相同的?非常感谢提前!
我想在Symfony2安装上通过url定义页面语言.我的路由通过控制器内部的注释工作.
使用routing.yml
_index:
resource: "@MyMainBundle/Controller/SiteController.php"
type: annotation
Run Code Online (Sandbox Code Playgroud)
siteController.php
/**
* @Route( "/{_locale}/{site}", name="_site_site", defaults={"_locale" = "en"}, requirements={"site" = "about|cities|download|blog", "_locale" = "en|de|fr|es"} )
*/
Run Code Online (Sandbox Code Playgroud)
这很安静,但是我想要的是,以下url调用相同的动作.
http://example.com/download
http://example.com/en/download
http://example.com/de/download
Run Code Online (Sandbox Code Playgroud)
如果没有languge-parameter,页面应该切换回默认语言,但这是我可以在我的操作中处理的内容.
我找到了这个答案,但根本无法让它工作. Symfony2路由中的默认语言环境
我正在开发一个symfony应用程序,我的目标是无论用户在哪个页面上都会导航到页面的语言环境版本.
例如,如果用户导航到"/"主页,它将重定向到"/ en /"
如果它们位于"/ admin"页面,它将重定向到"/ en/admin",以便_locale从路径设置属性.
此外,如果他们从用户浏览器访问/ admin,则需要确定区域设置,因为没有确定区域设置,因此它知道要重定向到哪个页面.
目前我的默认控制器如下所示,因为我正在测试.我正在使用开发模式和分析器来测试翻译是否正常工作.
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
/**
* @Route("/", name="homepage")
* @Route("/{_locale}/", name="homepage_locale")
*/
public function indexAction(Request $request)
{
$translated = $this->get('translator')->trans('Symfony is great');
// replace this example code with whatever you need
return $this->render('default/index.html.twig', [
'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
'translated' => $translated
]);
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户在那里导航,则此当前方法将使用户保持"/",但我希望将其重定向到"/ en /".这也适用于其他页面,如/ admin,或/ somepath/pathagain/article1(/ en/admin,/ en/somepath/pathagain/article1)
我该怎么做?
我读过的参考文献没有帮助:
Symfony2在路由中使用默认语言环境(一种语言的一个URL)
::更新::
我还没有解决我的问题,但我已经接近并学会了一些提高效率的技巧.
DefaultController.php …