我在这样的树枝中显示一个DateTime对象:
<td>{{ transaction.getDate|date("F - d - Y") }}</td>
现在我希望这个月可以翻译,
例如,April - 20 - 2012
应显示为:Avril - 20 - 2012
我可以这样做吗? 如果是这样,怎么样?
我正在研究Symfony2。
答案 0 :(得分:9)
{{ "now"|localizeddate('none', 'none', app.request.locale, "Europe/Paris", "cccc d MMMM Y") }}
会给你类似的东西:
jeudi 25 février 2016
要使用symfony 2启用,请添加到composer:
composer require twig/extensions
使用服务激活过滤器:
services:
twig.extension.intl:
class: Twig_Extensions_Extension_Intl
tags:
- { name: twig.extension }
答案 1 :(得分:2)
您可以获取月份部分然后进行翻译:
{% set month = transaction.getDate|date('F') %}
{% set dayAndYear = transaction.getDate|date('d - Y') %}
{{ '%s - %s'|format(month|trans, dayAndYear) }}
答案 2 :(得分:2)
另一种具有内联树枝解决方案和更易读的翻译消息文件的解决方案:
<td>{{ ('month.'~transaction.getDate|date("m"))|trans|raw~' - '~transaction.getDate|date("d - Y") }}</td>
在您的翻译文件中(取决于您设置的配置),例如在messages.fr.yml中进行法语翻译时,您必须添加以下行:
# messages.fr.yml
month.01: Janvier
month.02: Février
month.03: Mars
month.04: Avril
month.05: Mai
month.06: Juin
month.07: Juillet
month.08: Août
month.09: Septembre
month.10: Octobre
month.11: Novembre
month.12: Décembre
说明:
使用〜运算符将所有操作数转换为字符串并将它们连接起来
使用|操作员应用过滤器
使用trans函数来翻译
使用raw来表示日期是安全的(不需要转义html,js ......)
由于运算符优先级定义,所以请注意括号 http://twig.sensiolabs.org/doc/templates.html
运算符优先级如下,首先列出最低优先级运算符:b-and,b-xor,b-or,or,and,==,!=,&lt;,&gt;,&gt; = ,&lt; =,in,matches,starts with,ends with,...,+, - ,〜,*,/,//,%,is,**,|,[]和。:
第一部分括号的解释: (&#39;一个月&#39;〜transaction.getDate |日期(&#34; M&#34;))|反|原始
transaction.getDate | date(&#34; m&#34;)首先执行,因为|运算符在〜运算符上具有更高的优先级。 如果transaction.getDate的月份是may,则transaction.getDate | date(&#34; m&#34;)返回03字符串 过了一个月。&#39;是连接到这个字符串,然后我们有month.03
因为我们在括号之间设置了#month;&#39; ~transaction.getDate | date(&#34; m&#34;),所以只有在评估字符串month.03之后才应用过滤器trans。 ...