1

我正在使用最新版本的 symfony (3.1.3) 我想跨多个变量。但我没有找到好的解决方案

现在我正在做:

{% block h1 %}{{ 'service.create'|trans }} {{ ('service'|trans) }}{% endblock %}

我尝试:

{% block h1 %}{{ 'service','service.create'|trans }} }} { %endblock %}

但没有运气。

我也尝试

{% trans %}service.create|service{% endtrans %}

谢谢

4

4 回答 4

1

您可以像这样在翻译中使用参数:

{{ 'service.create'|trans }}
{{ 'service.create'|trans({'%separator%': 'any text'}) }}

在你的messages.ru.yml

...
service:
    create: ... %separator% ...
    ...

如果您separator是在 html 中,请raw像这样添加:

{{ 'service.create'|trans({'%separator%': '<br>'})|raw }}

您在 symfony 文档中有更多详细信息

于 2017-01-16T19:19:45.560 回答
0

您可以在后端翻译字符串:

public function indexAction($name)
{
    $translated = $this->get('translator')->trans('Hello '.$name);

    return new Response($translated);
}

或在树枝模板中:

<h1>{{ 'service.create'|trans }}</h1>

每次创建新的翻译资源(或安装包含翻译资源的包)时,请务必清除缓存,以便 Symfony 可以发现新的翻译资源:

php bin/console cache:clear

更多信息:http ://symfony.com/doc/current/translation.html

于 2016-08-17T06:56:52.663 回答
0

如果你有一个“service.yml.en”文件或类似的东西:

{{ service.create|trans({}, "service") }}

在这里,翻译器将在您的 service.yml.en 文件中搜索并加载正确的翻译密钥。

如果您想进行高级翻译,可以使用这样的变量(例如):

{{ (className|lower ~ "." ~ field)|trans({}, className|lower) }}

在这里,如果你有一个“user.yml.en”并且你想加载类似“user.width”的东西,它会起作用。

祝你好运 :)

于 2017-01-17T13:03:08.643 回答
0

我只需要跨多个变量。树枝不支持...

于 2016-08-18T01:13:15.827 回答