Symfony翻译

时间:2016-08-16 22:21:11

标签: twig symfony symfony-3.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 个答案:

答案 0 :(得分: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 doc here

中有更多详细信息

答案 1 :(得分: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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您有“service.yml.en”文件或类似内容:

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

此处翻译人员将搜索您的service.yml.en文件并加载正确的翻译密钥。

如果您想进行预先翻译,可以使用类似的变量(例如):

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

如果你有一个“user.yml.en”并且你想加载像“user.width”这样的东西,那么它就可以了。

祝你好运:)