9

次のように、小枝に DateTime オブジェクトを表示しています。

<td>{{ transaction.getDate|date("F - d - Y") }}</td>

今、月を翻訳可能にしたいのですが、たとえば次のApril - 20 - 2012ように表示する必要があります。Avril - 20 - 2012

これはできますか?もしそうなら、どのように?

私はSymfony2に取り組んでいます。

4

3 に答える 3

12

または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 }
于 2016-02-25T19:24:38.263 に答える
2

月の部分を取得して翻訳できます。

  {% set month      = transaction.getDate|date('F') %}
  {% set dayAndYear = transaction.getDate|date('d - Y') %}

  {{ '%s - %s'|format(month|trans, dayAndYear) }}
于 2012-04-20T13:55:40.470 に答える
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、==、!=、<、>、>=、<=、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 が評価された後にのみ適用されます...

于 2015-04-24T23:34:48.717 に答える