当前位置: 首页 > 知识库问答 >
问题:

在Symfony 2.1中设置语言环境

元俊雅
2023-03-14

我正在尝试在我的symfony 2.1网站上安装一个语言转换器。

我遵循官方文档,设置翻译文件,但使用$request设置语言环境-

然而,我仍然无法让它工作,我不太确定我的侦听器声明,它有什么问题吗?

我的控制器:

public function englishAction(Request $request)
{
    $this->get('session')->set('_locale', 'en_US');
    return $this->redirect($request->headers->get('referer'));
}

配置中的服务声明。yml:

services:
    my_listener:
        class:        "FK\MyWebsiteBundle\Listener\LocaleListener"

我的路线:

homepage:
    pattern:  /{_locale}
    defaults: { _controller: FKMyWebsiteBundle:Default:index, _locale: en }
    requirements:
        _locale: en|fr|cn
about:
    pattern:  /{_locale}/about
    defaults: { _controller: FKMyWebsiteBundle:Default:about, _locale: en }
    requirements:
        _locale: en|fr|cn

共有2个答案

萧卜霸
2023-03-14

您应该将转换器实例链接到symfony内核容器:

$this->container->get('translator')->setLocale('fr');
鲁单弓
2023-03-14

用yml声明LocaleListener(受新LocaleListener的当前声明启发:\vendor\symfony\symfony\src\symfony\Bundle\FrameworkBundle\Resources\config\web.xml)

services:
    my_listener:
        class: "FK\MyWebsiteBundle\Listener\LocaleListener"
        arguments: [%locale%]
        tags:
            -  { name: kernel.event_subscriber }

一些片段:

模板中的语言切换器:

{% for locale in ['en', 'fr', 'cn'] %}
    <li {% if locale == app.request.locale %}class="active"{% endif %}>
        <a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale' : locale})) }}">{{ locale }}</a>
    </li>
{% endfor %}

从控制器更改区域设置的重定向:

$LocalizedUrl = $this->get('router')->generate(
    $request->attributes->get('_route'), 
    ['_locale' => $locale] + $request->attributes->get('_route_params')
);

return new \Symfony\Component\HttpFoundation\RedirectResponse($LocalizedUrl);
 类似资料:
  • 问题内容: 当我在Linux机器上使用默认的Java语言环境时,它带有美国语言环境设置,应在哪里进行更改以使其具有正确的语言环境? 问题答案: 我相信Java会从启动它的环境变量中收集这些信息,因此您需要确保正确设置LANG和LC_ *环境变量。 语言环境手册页包含有关所述环境变量的完整信息。

  • 问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以

  • 问题内容: 我想使用欧洲格式显示日期,但使用DatePipe shortDate 格式仅使用美国日期样式显示。 我假设多数民众赞成在默认语言环境是en_US。也许我在文档中丢失了,但是如何更改Angular2应用程序中的默认语言环境设置?也许有某种方法可以将自定义格式传递给DatePipe? 问题答案: 从Angular2 RC6开始,您可以通过添加提供程序在应用程序模块中设置默认语言环境: 货币

  • 问题内容: 我正在尝试运行我的python文件,该文件首先读取中文字符串并打印。 这是我的Dockerfile 这是我的python文件: 然后我运行: 我得到的错误: 当我在本地运行它时,它工作正常。 问题答案: 在使用主管和gunicorn部署Django应用程序时遇到了同样的问题。 解决的问题是将以下行添加到我的主管配置文件中: 对于您的情况,请确保要打印的中文语言环境可用并已安装在Dock

  • 在设定期间您可选择用于 M600 的语言。 您可选择以下语言之一: 广东话(香港) 丹麦语 荷兰语 英语(美国、英国) 芬兰语 法语(法国、加拿大) 德语 印度尼西亚语 意大利语 日语 韩语 中文(台湾) 挪威语(巴克摩) 波兰语 葡萄牙语(巴西) 俄语 西班牙语(美国、西班牙、拉美) 瑞典语 泰语 土耳其语 越南语 请注意,您的智能手表最终会将您的语言设定复制到手机。换句话说,即如您在 M600

  • 问题内容: 背景: 付款服务在后台对付款结果执行ping操作时,将调用该视图-之后,我需要以正确的语言发送电子邮件以确认付款,依此类推。我可以从付款服务器的请求中获取语言代码,并希望将其与Django的i18n系统一起使用,以确定以哪种语言发送电子邮件。 因此,我需要在视图中设置django应用程序的语言。然后一次完成我的模板渲染和电子邮件发送。 设置仅在我测试时影响下一个视图。 还有其他方法吗?