2

在 Symfony 3 中获取所有可用的语言环境有些麻烦。这个想法是创建一个自定义语言切换器。

我有

parameters:
locale: en
app.locales: en|fr|ru

我可以获得请求的语言环境或存储在会话语言环境中的用户。但是我怎样才能最终在 Twig 中获得 Controller 的服务中的所有 parameters.app.locales 呢?这样我就可以拥有像 en|fr|ru 这样的 ar 数组。

谢谢。

4

2 回答 2

0

因为您将语言环境指定为参数,所以您可以根据需要检索参数值:

1. 作为服务参数:

通过在服务定义中指定,通过构造函数参数传递语言环境:

服务:

class SomeService {

    private $locales;

    public function __construct(array $locales)
    {
        $this->locales = $locales;
    }

    ...
}

服务定义:

...\Service\SomeService:
    arguments:
        - '%app.locales%'

2. 使用服务容器:

您还可以通过服务容器检索参数:

$locales = $this->container->getParameter('app.locales');

3. 将语言环境传递给 Twig

通过上述方式获取语言环境后,您可以在渲染模板时将它们作为变量传递,就像普通的 Twig 变量一样:

return $this->render('some.template.html.twig', [
    'locales' => $locales,
]);

4.设置具体的Twig参数:

如何在 Symfony2 Twig 模板中获取配置参数

于 2019-11-14T11:52:23.547 回答
0

刚刚在 Symfony 5 中遇到这个。似乎在 TranslatorInterface 中没有方法

因此,在我的情况下,最简单的方法是从参数中获取所有值

$locales = $this->getParameter('app_locales');

就我而言

app_locales: en|fr|de|es|cs|nl|ru|uk|ro|pt_BR|pl|it|ja|id|ca|sl|hr|zh_CN|bg|tr|lt

在 services.yaml 中定义

于 2020-10-25T20:06:45.727 回答