Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 3从自己的字典设置翻译,并使用url切换_Php_Symfony_Symfony 3.3 - Fatal编程技术网

Php Symfony 3从自己的字典设置翻译,并使用url切换

Php Symfony 3从自己的字典设置翻译,并使用url切换,php,symfony,symfony-3.3,Php,Symfony,Symfony 3.3,我使用Symfony 3创建了新的easy web(我是Symfony的新手,我在google中查看了一些帖子,在Symfony中查看了一些文档,或者在StackOverflow上查看了这里,但没有任何东西起作用),我只需要设置: url路由/默认为enlang和/cs捷克lang,/fr法语lang,具有切换另一页面的通用选项,例如/contacts,/fr/contacts/fr/about等 使用位于app/Resources/translations 像这样在细枝中使用本地化{{'so

我使用Symfony 3创建了新的easy web(我是Symfony的新手,我在google中查看了一些帖子,在Symfony中查看了一些文档,或者在StackOverflow上查看了这里,但没有任何东西起作用),我只需要设置:

  • url路由
    /
    默认为
    en
    lang和
    /cs
    捷克lang,
    /fr
    法语lang,具有切换另一页面的通用选项,例如
    /contacts,/fr/contacts/fr/about
  • 使用位于
    app/Resources/translations
  • 像这样在细枝中使用本地化
    {{'someone'| trans}}
我设置了config.yml:

parameters:
     locale: cs

framework:
     translator: { fallbacks: [cs] }
<a href="#">{{ contacts|trans }}</a>
messages.en.yml

contacts: Contacts
并在base.html.twig中调用它:

parameters:
     locale: cs

framework:
     translator: { fallbacks: [cs] }
<a href="#">{{ contacts|trans }}</a>


非常感谢

这是我的工作解决方案

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');
    }
<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>
在控制器中:

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');
    }
<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>
模板头.html.twig:

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');
    }
<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>

反恐精英
EN

问题出在哪里?在列表中,翻译不起作用,我不知道哪里出了问题或缺少了什么(例如在控制器中),我想我需要一些路由字符串。您正在返回cs,是否有
messages.cs.yml
文件?另外,请尝试清除缓存以确保问题持续存在。全力以赴,没有任何帮助,默认lang可以正常工作,但如果我将/en/param添加到url,我会收到主题消息
未找到“GET/en/”
的路由,是否退出一些通用路由以获得语言翻译支持?我现在在routing.yml
app:resource:“@AppBundle/Controller/”type:annotation