我正在学习 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 »</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 »</a></p>
</div>
视图如下
from django.shortcuts import render
import datetime
def home(request):
today = datetime.date.today()
return render(request, "taskbuster/index.html", {'today': today})
测试如下
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 中的工作方式是否发生了变化,导致了这个失败?教程的作者声称在教程的这一点上这个测试应该通过。
PS 如果添加其他更有趣的语言,其中有更符合逻辑的日-> 月-> 年格式来显示日期,他也可以观察到这种失败。考虑以下情况ru
:
AssertionError: '22 June, 2019' != 'Июнь 22, 2019'
- 22 June, 2019
+ Июнь 22, 2019