symfony 语言环境设置为 en_US

symfony Locale being set to en_US

我已经安装了三个区域设置包:

我的 config.yml 看起来像这样:

jms_i18n_routing:
    default_locale: en
    locales: [en, fr, es]
    strategy: prefix

lunetics_locale:
    strict_mode: false
    allowed_locales: [en, fr, es]
    guessing_order:
        - query
        - router
        - session
        - browser
        - cookie

be_simple_i18n_routing: ~

一切如我所愿,除了我在日志中发现一个错误:

[2015-08-02 01:16:48] request.CRITICAL: Exception thrown when handling an exception (Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("I18nRoute "site_homepage" (en_US) does not exist.") in "TwigBundle:Exception:error.html.twig" at line 77. at /app/cache/prod/classes.php line 4528) {"exception":"[object] (Twig_Error_Runtime(code: 0): An exception has been thrown during the rendering of a template (\"I18nRoute \"site_homepage\" (en_US) does not exist.\") in \"TwigBundle:Exception:error.html.twig\" at line 77. at /app/cache/prod/classes.php:4528, Symfony\Component\Routing\Exception\RouteNotFoundException(code: 0): I18nRoute \"site_homepage\" (en_US) does not exist. at /app/cache/prod/classes.php:14728)"} []

在堆栈中我发现:[2015-08-02 01:16:49] app.INFO: Setting [ en_US ] as locale for the (Sub-)Request [] [] 但是,我不明白如何将语言环境设置为 "en_US"。

我想它来自对 LuneticsLocaleBundle 的猜测,但是具有 "en_US" 的人应该匹配 "en",而不是 "en_US"。

我的主要问题是我不知道如何跟踪它。当我用自己的设置连接到主页时,前面有"fr_FR",绝对没有问题。

有没有人有测试的想法我可以运行解决这个问题?

自从我更新到 symfony2.7 后,Lunetics Bundle 和 JMSi18n 之间存在冲突。

显然这是在处理 sub-requests 时出现的问题,Lunetics 被 JMS 包取代了。

所以我现在只使用 JMS 进行语言环境检测。它比 Lunetics 干净得多,但它有效。