Symfony2+Twig,翻译中的变量返回“消息必须是简单文本”
当我做普通 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
上一个答案中缺少的一个位是替换消息的可变部分所需的“with”部分。
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.
Symfony2 中的精确翻译语法与独立的 Twig 中略有不同。您需要查看 Symfony2 文档以了解 twig 模板中的翻译,可以找到 在这里。正确的语法如下所示:
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
过滤器,我需要连接一个字符串和一个变量,然后转换为小写。这里没有使用
{% trans %}
和{% endtrans %}
,而是使用trans
过滤器:假设翻译中有:
和在模板中,您传递值为
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, buttrans
filter instead:Assuming in the translation there is:
and in the template you pass the variable
name
with valueFAILED
.