Django 2.2 Особенности локализации времени и даты - PullRequest
0 голосов
/ 22 июня 2019

Я изучаю способы Django по интернационализации и локализации.Для этого я следую этому руководству:

http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones

Проблема, с которой я столкнулся, заключается в том, что тест, предлагаемый в учебнике, не работает.Кроме того, я не понимаю, как это могло сработать.

Вот соответствующий бит шаблона

  <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> 

Вид выглядит следующим образом

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 Если добавить другие, более интересные языки, для которых существует более логичный формат day-> month-> year для отображениядаты, он может также наблюдать эту неудачу.Рассмотрим случай ru:

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