次のように、小枝に DateTime オブジェクトを表示しています。
<td>{{ transaction.getDate|date("F - d - Y") }}</td>
今、月を翻訳可能にしたいのですが、たとえば次のApril - 20 - 2012
ように表示する必要があります。Avril - 20 - 2012
これはできますか?もしそうなら、どのように?
私はSymfony2に取り組んでいます。
またはThe Intl Extensionを使用します。
{{ "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
そして service でフィルターを有効にします:
services:
twig.extension.intl:
class: Twig_Extensions_Extension_Intl
tags:
- { name: twig.extension }
月の部分を取得して翻訳できます。
{% set month = transaction.getDate|date('F') %}
{% set dayAndYear = transaction.getDate|date('d - Y') %}
{{ '%s - %s'|format(month|trans, dayAndYear) }}
インライン小枝ソリューションと、より読みやすい翻訳メッセージ ファイルを使用した別のソリューション:
<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、==、!=、<、>、>=、<=、in、一致、開始、終了、..、+、-、~、*、/、//、%、is、**、|、[]、および .:
最初の部分の括弧の説明: ('month.'~transaction.getDate|date("m"))|trans|raw
| transaction.getDate|date("m") が最初に実行されます。演算子は ~ 演算子よりも優先されます。transaction.getDate の月が 5 月の場合、transaction.getDate|date("m") return 03 string And after 'month.' をこの文字列に連結すると、month.03 になります。
また、括弧の間に 'month.'~transaction.getDate|date("m") を設定しているため、フィルタ trans は文字列 month.03 が評価された後にのみ適用されます...