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

发布于 2024-12-10 18:02:32 字数 572 浏览 0 评论 0原文

当我做普通 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

When I was doing plain PHP, I was simply doing this:

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

Now with Twig, I must use the trans tag. So I've copy/paste the documentation example, and here's my full template:

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

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

Why Symfony return the following exeption ?

A message must be a simple text in "MyAppBundle::home.html.twig"

500 Internal Server Error - Twig_Error_Syntax

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

濫情▎り 2024-12-17 18:02:32

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

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

One missing bit with the previous answer is the "with" portion that is needed to do the replacement of the variable part of the message.

{% trans with {'%name%':name} %}Hello %name%!{% endtrans %}
倾城花音 2024-12-17 18:02:32

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

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

The precise syntax for translations is a little different in Symfony2 than it is in standalone Twig. You'll want to check out the Symfony2 documentation for translations in twig templates, found here. The correct syntax would look something like this:

{% trans %}Hello %name%!{% endtrans %}
比忠 2024-12-17 18:02:32

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

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

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

假设翻译中有:

- status:
  - failed: The task has failed

和在模板中,您传递值为 FAILED 的变量 name

I have a similar issue: to pass my translation path to trans filter, I need to concatenate a string and a variable, then transform into lowercase.

Here {% trans %} and {% endtrans %} are not used, but trans filter instead:

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

Assuming in the translation there is:

- status:
  - failed: The task has failed

and in the template you pass the variable name with value FAILED.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文