Symfony2:如何设置默认语言环境和不区分大小写的翻译

时间:2015-04-05 04:00:54

标签: php symfony translation locale multilingual

我刚刚开始使用symfony2,面临一些困难,需要像你这样的专家帮助。

问题1:如何设置默认的区域设置和后备区域设置,以便人们尝试点击类似www.example.com/home或www.example.com/fr/home(不支持的区域设置)的内容将重定向到www.example.com/cn/home?

我从symfony2文档(http://symfony.com/doc/current/book/translation.html)中读了很多内容,并且还在google上搜索,但我仍然无法使其正常工作。不仅默认语言环境不起作用,后备语言环境也无效。例如,当用户尝试输入我的应用不支持的www.example.com/fr/home时,它会将用户重定向到www.example.com/cn/home,但它无法执行此操作。

我也尝试清除缓存,但似乎无法正常工作。

问题2:如何匹配不区分大小写的翻译键?

例如,在我的翻译文件中(" message.cn.yml")包含

Welcome: 欢迎

因此,在我的树枝模板中,我使用{{' 欢迎' |转换}}它会帮助我转换为欢迎,但当我使用{{' 欢迎' |它不会转换。有没有办法让它不区分大小写,所以我不需要故意添加密钥" welcome :欢迎"到message.cn.yml文件。

非常感谢您的帮助和建议。谢谢。

以下是我的应用文件供您参考:

翻译文件:

enter image description here

参数文件:

enter image description here

配置文件:

enter image description here

特定包中的路由文件(" Acme / DemoBundle"):

enter image description here

Twig文件:

enter image description here

这是我点击

时的结果
  1. 本地主机/区域/网络/ app_dev.php /
  2. enter image description here

    1. 本地主机/区域/网络/ app_dev.php / EN
    2. enter image description here

      1. 本地主机/区域/网络/ app_dev.php / CN
      2. enter image description here

        1. 本地主机/区域/网络/ app_dev.php / FR
        2. enter image description here

1 个答案:

答案 0 :(得分:0)

您可以为请求设置区域设置:

 $this->container->get('request_stack')->getCurrentRequest()->setLocale($locale);

您可以使用请求侦听器为每个请求设置区域设置: http://symfony.com/doc/current/cookbook/service_container/event_listener.html#request-events-checking-types

对于您的第二个问题,您可以将转换添加到小写:

   {{ 'WELCOME'|lower | translate}}

或者你可以创建自己的自定义枝条扩展,进行翻译和其他内容: http://symfony.com/doc/current/cookbook/templating/twig_extension.html