Symfony2 + Twig,翻译中的变量返回"消息必须是简单的文本"

FMa*_*008 9 php symfony twig

当我做普通的PHP时,我只是这样做:

printf(_("Hello %s !"), $name);
Run Code Online (Sandbox Code Playgroud)

现在使用Twig,我必须使用trans标签.所以我复制/粘贴文档示例,这是我的完整模板:

{% extends 'MyAppBundle::layout.html.twig' %}

{% block content %}
    <h1>
        {% trans %}
            Hello {{ name }}!
        {% endtrans %}
    </h1>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

为什么Symfony会返回以下例外?

消息必须是"MyAppBundle :: home.html.twig"中的简单文本

500内部服务器错误 - Twig_Error_Syntax

rov*_*olf 21

前一个答案的一个缺失位是替换消息的可变部分所需的"with"部分.

{% trans with {'%name%':name} %}Hello %name%!{% endtrans %}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是选定的答案 (4认同)

Pro*_*tic 11

在Symfony2中,翻译的精确语法与独立的Twig中的语法略有不同.您需要查看Symfony2文档,了解twig模板中的翻译,可在此处找到.正确的语法看起来像这样:

{% trans %}Hello %name%!{% endtrans %}
Run Code Online (Sandbox Code Playgroud)

  • 嘿谢谢!我也发现了这种语法:{{'welcome.message'| trans({'%titre%':name})}} (4认同)