相关疑难解决方法(0)

将语言环境和要求添加到所有路由 - Symfony2

我创建了一个不打算翻译的应用程序,但现在我决定添加此功能.问题是我的所有路线都是这样的:

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)

我是否真的必须这样做,有没有办法做更全局或自动,或至少只添加一次请求,因为它们对所有网址是相同的?非常感谢提前!

translation symfony

10
推荐指数
2
解决办法
2万
查看次数

路由中的区域设置,默认语言也没有参数

我想在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路由中的默认语言环境

annotations symfony

4
推荐指数
1
解决办法
7400
查看次数

Symfony 3将所有路由重定向到当前区域设置版本

我正在开发一个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)

Symfony2路由中的默认语言环境

::更新::

我还没有解决我的问题,但我已经接近并学会了一些提高效率的技巧.

DefaultController.php …

php locale symfony symfony-routing

4
推荐指数
2
解决办法
1万
查看次数