【问题标题】:How to translate dates in django template?如何在 Django 模板中翻译日期?
【发布时间】:2016-05-02 07:48:06
【问题描述】:

我已阅读文档,我将 i18n 放在顶部并尝试通过以下方式翻译日期变量:

{%  blocktrans %}
                   {{ month_verbose }}
{% endblocktrans %}

但它不起作用,我也想将 month_verbose 翻译成当前语言。 我不知道如何将当前语言与翻译与日期结合起来。 那么在 django 模板中翻译日期的最佳方法是什么?

UPD View for this template Var 月份详细在第 39 行 Template here 第 33 行详细月份

【问题讨论】:

  • 你的脚本有错误{% block trans %}{{ month_verbose}}{% endblock %}
  • @ZagorodniyOlexiy,我认为这就像在文档中一样 link
  • @shmee,它只在不同的视图中格式化日期类型。我想把month verbose翻译成另一种语言,默认是英文。
  • month_verbose 来自哪里?

标签: python django django-templates translation django-i18n


【解决方案1】:

django.middleware.locale.LocaleMiddleware 添加到settings.MIDDLEWARE_CLASSES

您可以删除blocktrans 标签。 Django date 过滤器值在USE_L10N=True 时自动本地化,因此无需使用localize 模板标签或过滤器。

# prints out "uk"
{{ request.LANGUAGE_CODE }} 

# prints out "Січ"
{{ month_verbose|date:"M" }}

【讨论】:

  • DATETIME_FORMAT 未在设置中设置,此代码没有更改为其他语言的翻译
  • 我已经为答案添加了一些更新。另外,你的 settings.py 中有 USE_L10N = True 吗?
  • 是的,它已设置并且在模板中 l10n 也已设置,最后您在代码中的修改结果不佳:月份详细信息因日期过滤器而消失。 Month-verbose 已仅包含月份文本格式。
  • 您需要将month_verbose 直接传递到您的模板中——作为python 日期时间对象。当前的settings.LANGUAGE_CODE 是什么?如果您更改该值,本地化是否有效?
  • 您是否安装了 LocaleMiddleware? django.middleware.locale.LocaleMiddleware
猜你喜欢
  • 2012-03-08
  • 2015-12-04
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2015-02-16
相关资源
最近更新 更多