gpt4 book ai didi

python - 内置模板标签似乎破坏了 i18n

转载 作者:太空宇宙 更新时间:2023-11-03 19:13:24 26 4
gpt4 key购买 nike

就在我以为我已经完成了国际化和时区并最终可以转向更有趣的功能时,我最后一次被咬了。 :)

在我的模板中,只要我有以下内容,模板就会自动将日期时间从 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 %}

但如果生活是美好的,我就不会坐在这里写这篇文章了,不是吗? ;)设置这些过滤器后,这两个字段的格式似乎就固定为美国文化。日期格式为 mm/dd/yyyy,时间为 12 小时 am/pm。

像我之前成功那样选择英国语言不再有任何效果。

事实上,我已经覆盖了enen-gb的formats.py,并且可以确认en/format.py具有条目TIME_FORMAT = 'P' 对应于上午/下午 12 小时。

而 en_GB/formats.py 的 TIME_FORMAT = 'G:i' 对应于 24 小时。您认为在模板中使用过滤器标签还有一个我忽略的地方吗?

最佳答案

编辑:第二种方法是解决方案。另请参阅下面的评论。

文档中确实提到了您观察到的行为(请参阅 date filter ):

When used without a format string: {{ value|date }} the formatting string defined in the DATE_FORMAT setting will be used, without applying any localization.

对于时间过滤器也提到了同样的情况。从我在文档中看到的,您可以使用 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 %}

文档对此表示:

The format passed can be one of the predefined ones DATE_FORMAT, DATETIME_FORMAT, SHORT_DATE_FORMAT or SHORT_DATETIME_FORMAT, or a custom format that uses the format specifiers shown in the table above. Note that predefined formats may vary depending on the current locale.

关于python - 内置模板标签似乎破坏了 i18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12196001/

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