9

当我在做纯 PHP 时,我只是这样做:

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

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

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

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

为什么 Symfony 返回以下异常?

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

500 内部服务器错误 - Twig_Error_Syntax

4

3 回答 3

21

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

{% trans with {'%name%':name} %}Hello %name%!{% endtrans %}
于 2011-10-21T00:09:30.057 回答
11

Symfony2 中的精确翻译语法与独立 Twig 中的略有不同。您需要查看 Symfony2 文档以了解 twig 模板中的翻译,可在此处找到。正确的语法如下所示:

{% trans %}Hello %name%!{% endtrans %}
于 2011-10-18T17:34:50.950 回答
0

我有一个类似的问题:要将我的翻译路径传递给trans过滤器,我需要连接一个字符串和一个变量,然后转换为小写。

这里{% trans %}{% endtrans %}没有使用,而是trans过滤:

<span>{{ ('statuses.' ~ status | lower) | trans }}</span>

假设在翻译中有:

- status:
  - failed: The task has failed

并在模板中传递name带有 value的变量FAILED

于 2021-10-27T17:50:21.963 回答