当我编写普通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
前一个答案中缺少的一位是"with"部分,该部分用于替换消息的可变部分。
{% trans with {'%name%':name} %}Hello %name%!{% endtrans %}
Symfony2中翻译的精确语法与独立的Twig中略有不同。您将需要查看Symfony2文档,以获取分支模板中的翻译,可以在这里找到。正确的语法应该是这样的:
{% trans %}Hello %name%!{% endtrans %}
我有一个类似的问题:传递我的翻译路径到trans
过滤器,我需要连接一个字符串和一个变量,然后转换成小写。
这里不使用{% trans %}
和{% endtrans %}
,而是使用trans
过滤器:
<span>{{ ('statuses.' ~ status | lower) | trans }}</span>
假设翻译中有:
- status:
- failed: The task has failed
,在模板中你传递变量name
和值FAILED
。