Django 2.2时间和日期本地化细节

Django 2.2时间和日期本地化细节,django,localization,internationalization,django-2.2,Django,Localization,Internationalization,Django 2.2,我正在学习Django的国际化和本地化方法。为此,我将学习本教程: 我遇到的问题是,教程建议的测试不起作用。此外,我看不出它是如何起作用的 下面是相关的模板位 <div class="row"> <div class="col-md-4"> <h2 id="local-date">{{today}}</h2> <p>This is the time using your local informat

我正在学习Django的国际化和本地化方法。为此,我将学习本教程:

我遇到的问题是,教程建议的测试不起作用。此外,我看不出它是如何起作用的

下面是相关的模板位

  <div class="row">
    <div class="col-md-4">
      <h2 id="local-date">{{today}}</h2>
      <p>This is the time using your local information. </p>
      <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
    </div>
    <div class="col-md-4">
      <h2 id="non-local-date">{{today|unlocalize}}</h2>
      <p>This is the default time format. </p>
      <p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
   </div> 
测试如下

def test_localization(self):
    today = date.today()
    for lang in ['en', 'ca']:
        activate(lang)
        self.browser.get(self.get_full_url("home"))
        local_date = self.browser.find_element_by_id("local-date")
        non_local_date = self.browser.find_element_by_id("non-local-date")
        self.assertEqual(formats.date_format(today, use_l10n=True),
                              local_date.text)
        self.assertEqual(today.strftime('%Y-%m-%d'), non_local_date.text)
我看到的失败是

    self.assertEqual(today.strftime('%B %d, %Y'), non_local_date.text)
AssertionError: 'June 22, 2019' != 'jun. 22, 2019'
- June 22, 2019
? ^  ^
+ jun. 22, 2019
?^^

如您所见,加泰罗尼亚版本与默认的非本地化版本不同。我是不是漏掉了什么明显的东西?这些位在Django中的工作方式是否发生了变化,从而导致了这种故障?本教程的作者声称,在本教程的这一点上,该测试应该通过

另外,如果有人添加了其他更有趣的语言,其中有一种更符合逻辑的日期->月份->年份格式来显示日期,他也可以观察到这种失败。考虑<代码> RU >:

AssertionError: '22 June, 2019' != 'Июнь 22, 2019'
- 22 June, 2019
+ Июнь 22, 2019

我也一直在学习Marina Mele Django教程。我发现它有很多问题。对于日期本地化部分,我花了几个小时才发现教程中的index.html需要有以下load语句才能处理日期本地化和翻译,如中所示:

{% extends "base.html" %}
{% block head_title %}TaskBuster Django Tutorial{% endblock %}
{% load i18n %}
{% load l10n %}

{% block content %}

如果没有此选项,将出现“无效筛选器”错误。我不确定这是否能解决您的问题,但这是一个例子,说明尽管本教程总体上非常好,但您尝试执行所有操作时遇到的问题可能是由于本教程中的错误或遗漏造成的(在某些情况下,可能是由于与必须作为项目一部分安装的较新版本的软件包不兼容)…至少,这提供了有用的(如果令人沮丧的话)调试练习!

我也一直在学习Marina Mele Django教程。我发现了很多问题。关于日期本地化的部分,我花了几个小时,直到我发现教程中的index.html需要同时包含以下两个load语句才能同时处理这两个问题日期本地化和翻译,如:

{% extends "base.html" %}
{% block head_title %}TaskBuster Django Tutorial{% endblock %}
{% load i18n %}
{% load l10n %}

{% block content %}
如果没有这一点,您将得到一个“无效过滤器”错误。我不确定这是否能解决您的问题,但这是一个示例,说明尽管本教程总体上非常好,但您尝试执行所有操作时遇到的问题可能是由于本教程中的错误或遗漏造成的(在某些情况下,可能是由于您必须作为项目的一部分安装的较新版本的软件包不兼容)…至少,这提供了有用的(如果令人沮丧的话)调试实践