在我的Django 1.2.3项目中切换语言时,正确使用{{today|time:"TIME_FORMAT"}}
本地化时间。例如。对于英语,我看到"12:19 a.m."
,当我切换到德语时,它会更改为"12:19:25"
。
据我所知,通过查看文档和代码(defaultfilters.py
和formats.py
),仅使用{{today:time}}
应该执行相同的操作并默认为TIME_FORMAT
但是这不起作用,它总是使用默认的英文格式。
有没有办法避免编辑我的所有模板并将其更改为{{today|time:"TIME_FORMAT"}}
?
同样的事情发生在date
过滤器和DATE_FORMAT
。
答案 0 :(得分:3)
文档说(强调我的):
在没有格式字符串的情况下使用时:
{{ value|time }}
...将使用TIME_FORMAT设置中定义的格式字符串,而不应用任何本地化。
您有两种选择:
编辑所有模板以进行更改,或
创建一个自己的新过滤器,以您想要的方式完成。
答案 1 :(得分:1)
感谢@Ned Batchelder,根据选项2.,我已将以下内容添加到我的自定义模板标记文件中:
from django.template.defaultfilters import date as defaultfilters_date, time as defaultfilters_time
# FORCE {{...|date}} to be equivalent to {{...|date:"DATE_FORMAT"}} so it localizes properly, ditto for time and TIME_FORMAT
@register.filter(name="date")
def date_localized(val, arg=None):
return defaultfilters_date(val, arg or "DATE_FORMAT")
@register.filter(name="time")
def time_localized(val, arg=None):
return defaultfilters_time(val, arg or "TIME_FORMAT")