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

时间:2011-10-18 17:18:15

标签: php symfony twig

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

printf(_("Hello %s !"), $name);

现在使用Twig,我必须使用trans标签。所以我复制/粘贴documentation example,这是我的完整模板:

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

{% block content %}
    <h1>
        {% trans %}
            Hello {{ name }}!
        {% endtrans %}
    </h1>
{% endblock %}

为什么Symfony会返回以下内容?

  

消息必须是“MyAppBundle :: home.html.twig”

中的简单文本      

500内部服务器错误 - Twig_Error_Syntax

2 个答案:

答案 0 :(得分:21)

上一个答案的一个缺失位是替换消息的可变部分所需的“with”部分。

{% trans with {'%name%':name} %}Hello %name%!{% endtrans %}

答案 1 :(得分:11)

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

{% trans %}Hello %name%!{% endtrans %}