Указание формата даты в шаблонах Django с L10N для одного языка - PullRequest
0 голосов
/ 07 января 2019

В шаблоне Django я отображаю дату как:

{{ article.published_at|date }}

, который отображается как:

ноябрю 21, 2018

Я хотел бы изменить этот формат, , но :

  • Я использую локализацию, поэтому я не хочу указывать конкретный формат даты в шаблоне - у каждого языка будет свой способ отображения дат.

  • Настройка Django DATE_FORMAT не оказывает никакого влияния , если настройка L10N равна True.

Так как бы я:

  1. Используйте другой формат для этой даты, когда текущим языком является английский (en)
  2. Использовать формат даты по умолчанию для текущего языка, если он не en

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Это фильтр, который я использовал в качестве замены встроенного date фильтра .

# myapp/templatetags/my_filters.py
from django import template
from django.conf import settings
from django.template.defaultfilters import date
from django.utils import dateformat
from django.utils.translation import get_language

register = template.Library()

@register.filter(expects_localtime=True, is_safe=False)
def format_date(value):
    if value in (None, ''):
        return ''

    language_code = get_language()

    if language_code == 'en':
        # Language is English, so use the format defined in settings:
        return dateformat.format(value, settings.DATE_FORMAT)
    else:
        # Language is not English, so use language-specific default:
        return date(value)

Я использую обычную DATE_FORMAT настройку Django в settings.py для установки пользовательского формата даты:

DATE_FORMAT = 'j F Y'

Используется, если текущий язык английский. В противном случае используется текущий язык по умолчанию.

Используйте это как:

{% load my_filters %}

{{ article.published_at|format_date }}

Вы можете расширить это, чтобы предоставить пользовательские форматы для дополнительных языков, но это все, что мне сейчас нужно.

Я все еще ожидал, что в настройках будет возможность определять форматы дат для каждого языка, поэтому я все еще чувствую, что упустил более простой способ сделать это ...

0 голосов
/ 07 января 2019

Содержит ли ваш шаблон тег {% load l10n %}?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...