gpt4 book ai didi

Symfony2.2 : default_locale always applying in twig translations

转载 作者:行者123 更新时间:2023-12-01 05:21:49 26 4
gpt4 key购买 nike

我在使用 Symfony2.2 时遇到了一个奇怪的问题。我有一个使用两种语言的项目:en/fr。所以我像往常一样(像 Symfony2.0)在 Ressources/Views/translations/中创建了两个翻译文件“messages.en.yml”和“messages.fr.yml”。但是即使我们设置了请求对象和语言环境 session ,twig 中的翻译也无法改变。翻译总是由 default_locale (config.php) 设置。

示例:如果 default_locale = en,即使我在 fr(请求和 session )中设置了 _locale 对象,我的所有网站(在 twig 中)都将被翻译为 en。当然,如果我手动将 default_locale 更改为 fr 网站自然是 fr ...

但是,_locale session 有效,但我不知道语言环境请求是否有效,当然翻译也适用于 Controller ......

有我的文件:

配置文件:

framework:
#esi: ~
translator: { fallback: %locale% } # = en
# ...
default_locale: %locale% # = en

Controller :
public function indexAction()
{
$this->get('session')->set('_locale', 'fr');
$this->getRequest()->setLocale($lang);
exit($this->getRequest()->getLocale()); // = fr
exit($this->get('translator')->trans('Symfony2 is great')); // = Symfony2 est génial

return $this->render('TestBundle:Controller:test.html.twig');

看法 :
{% block content %}
<p>lang : {{ app.request.locale }}</p> {#} = "fr", OK{#}
<p>{{ 'Symfony2 is great'|trans }}</p> {#} = "Symfony2 is great", WAIT WHAT?{#}

我必须辞职以强制方法 Controller 开头的语言环境具有请求的语言环境(存储在 session 中),如下所示:

Controller :
if($this->get('session')->get('_locale')){
$lang = $this->get('session')->get('_locale');
$this->getRequest()->setLocale($lang);
}

换句话说,我确实在注册请求对象时遇到了问题......因为最后的代码在 Controller 中运行良好,并且在带有 app.request.locale 的 Twig 页面中很好地显示了语言环境,但不是翻译...... .(抱歉我的英语不好,感谢您的帮助)

最佳答案

由于我的事件监听器的优先级较低,我遇到了同样的问题。语言环境将被 Translator 的 TranslatorListener 覆盖。增加我的事件监听器的优先级对我有用:

services:
app.locale_listener:
class: AppBundle\EventListener\LocaleListener
tags:
- { name: kernel.event_listener, priority: 11, ... }

来源: https://github.com/symfony/symfony/issues/12878#issuecomment-68628808

关于Symfony2.2 : default_locale always applying in twig translations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com