gpt4 book ai didi

django - 使用 L10N 为一种语言指定 Django 模板中的日期格式

转载 作者:行者123 更新时间:2023-12-04 15:50:23 25 4
gpt4 key购买 nike

在 Django 模板中,我显示的日期如下:

{{ article.published_at|date }}

显示如下:

Nov. 21, 2018

我想更改此格式,但是:

  • 我正在使用本地化,所以我不想在模板中指定特定的日期格式——每种语言都有自己的日期显示方式。

  • Django DATE_FORMAT 设置 does not have any effectL10N 设置为 True 时。

那么我会怎样:

  1. 当当前语言为英语时,此日期使用不同的格式 (en)
  2. 如果不是en,则使用当前语言的默认日期格式

最佳答案

这是我最终用来替代内置 date filter 的过滤器.

# 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 settings.py 中的 Django 设置来设置自定义日期格式:

DATE_FORMAT = 'j F Y'

如果当前语言是英语,则使用它。否则使用当前语言的默认值。

像这样使用它:

{% load my_filters %}

{{ article.published_at|format_date }}

您可以扩展它来为其他语言提供自定义格式,但这就是我现在所需要的。

我仍然希望有一种方法可以在设置中定义每种语言的日期格式,所以我仍然觉得我错过了一种更简单的方法...

关于django - 使用 L10N 为一种语言指定 Django 模板中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54077604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com