1

そして、国際化とタイムゾーンが終わって、やっともっと面白い機能に移れると思ったちょうどその時、最後にもう一度噛まれました。:)

私のテンプレート内では、次のものがある限り、テンプレートは日時を UTC から現在選択されているタイムゾーンに自動的に変換します。また、別のカルチャ (米国から英国への形式) に切り替えることもでき、それに応じて日付と時刻の形式が変更されます。単に完璧です。

{% load l10n %}
{% for item in calls %}
     <td>{{ item.conversation_datetime }}</td>
     <td>{{ item.conversation_datetime }}</td>
{% endfor %}

あとは、前者のローカライズされた日付と後者のローカライズされた時間を抽出するだけです。そこで、そこにテンプレート タグを付けてみましょう。

{% load l10n %}
{% for item in calls %}
     <td>{{ item.conversation_datetime|date }}</td>
     <td>{{ item.conversation_datetime|time }}</td>
{% endfor %}

でも、もし人生がよかったなら、私はここに座ってこれを書いたりしないでしょうか? ;) これらのフィルターが設定された時点で、これら 2 つのフィールドの形式は米国の文化に固定されているようです。日付の形式は mm/dd/yyyy で、時刻は午前 12 時です。

以前に成功したように英国語を選択しても、もはや何の効果もありません。

実際のところ、formats.py をオーバーライドしenen-gb、en/format.py にTIME_FORMAT = 'P'午前 12 時/午後 12 時に対応するエントリがあることを確認できます。

en_GB/formats.py には、TIME_FORMAT = 'G:i'24 時間に対応する があります。テンプレートでフィルター タグを使用することについて、私が見落としている別の点があると思いますか?

4

1 に答える 1

1

編集:2番目のアプローチが解決策です。以下のコメントも参照してください。

あなたが観察する動作は、実際にドキュメントに記載されています(日付フィルターを参照):

フォーマット文字列なしで使用する場合:ローカライズを適用せずに、設定{{ value|date }}で定義されたフォーマット文字列が使用されます。DATE_FORMAT

timeフィルターについても同じことが言えます。ドキュメントで確認できることから、localizeフィルターを使用してローカライズを強制できます。

{% load l10n %}
{% for item in calls %}
     <td>{{ item.conversation_datetime|date|localize }}</td>
     <td>{{ item.conversation_datetime|time|localize }}</td>
{% endfor %}

または、使用する設定を渡すこともできます (ソリューション):

{% load l10n %}
{% for item in calls %}
     <td>{{ item.conversation_datetime|date:"DATE_FORMAT" }}</td>
     <td>{{ item.conversation_datetime|time:"TIME_FORMAT" }}</td>
{% endfor %}

ドキュメントには、これに関して次のように記載されています。

渡される形式は、定義済みのものDATE_FORMATDATETIME_FORMATSHORT_DATE_FORMATまたはのいずれかSHORT_DATETIME_FORMAT、または上記の表に示されている形式指定子を使用するカスタム形式です。定義済みの形式は、現在のロケールによって異なる場合があることに注意してください。

于 2012-08-30T12:44:30.037 に答える