Symfony 3从自己的字典中设置翻译,并使用网址

时间:2017-07-20 09:37:03

标签: php symfony symfony-3.3

我使用Symfony 3创建了一个新的简易网页(我是Symfony的新手,我在谷歌查看了一些帖子,在Symfony上查了一些帖子,或者在StackOverflow上查了一下,但没有什么不起作用)我只需要设置:

  • url路由/为默认en lang,/cs为捷克语,/fr为法语,使用通用选项切换其他页面,例如{{1}等等。
  • 使用位于/contacts, /fr/contacts /fr/about
  • 的我自己的翻译yml文件
  • 在这样的树枝中使用本地化app/Resources/translations

我设置 config.yml

{{ 'someone'|trans }}

messages.en.yml

parameters:
     locale: cs

framework:
     translator: { fallbacks: [cs] }

并在 base.html.twig

中调用它
contacts: Contacts

非常感谢

1 个答案:

答案 0 :(得分:1)

这是我的工作解决方案

config.yml:

parameters:
    locale: cs
    app_locales: cs|en
    web_root: '%kernel.root_dir%/../web/'

framework:
    #esi: ~
    translator: { fallbacks: ['%locale%'] }
    default_locale: "%locale%"

在控制器中:

    /**
     * 
     * @Route(
     *     "/", name="home_cs",   
     *     defaults={"_locale":"%locale%"}
     *     )
     * @Route(
     *     "/{_locale}/", name="home",      
     *     requirements={"_locale":"%app_locales%"}
     *     ) 
     * 
     */
    public function indexAction(Request $request) {
        return $this->render('home/index.html.twig');
    }

模板header.html.twig:

<select class="selectpicker pull-right lang" data-width="fit">
                                    <option data-content='<span class="flag-icon flag-icon-cz"></span>' {% if app.request.getLocale() == 'cs' %}selected{% endif %} >cs</option>
                                    <option data-content='<span class="flag-icon flag-icon-us"></span>' {% if app.request.getLocale() == 'en' %}selected{% endif %} >en</option>
                                </select>