NSProject
Sept. 2, 2022, 1:11 a.m.

Мультиязычность Django

Django

Интересует меня такой вопрос. При работе с датой в шаблоне с использованием тега timesince что идёт с джангой. При переключении языка на русский оно не переводится. То есть как было 55 minutes так и осталось.
Как это исправить чтоб оно тоже переводил ось?

2

Do you like it? Share on social networks!

11
Evgenii Legotckoi
  • Sept. 2, 2022, 3:13 p.m.

Попробуйте использовать localtime

  1. {% load tz %}
  2.  
  3. {% localtime on %}
  4. {{ value }}
  5. {% endlocaltime %}
  6.  
  7. {% localtime off %}
  8. {{ value }}
  9. {% endlocaltime %}
    NSProject
    • Sept. 2, 2022, 3:34 p.m.

    Я видел при поиске в гугле что можно сделать через blocktrans. Или это не лучшая идея?

      Evgenii Legotckoi
      • Sept. 2, 2022, 4:02 p.m.

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

        NSProject
        • Sept. 2, 2022, 5:32 p.m.
        • (edited)

        что то у меня не очень идут дела с loadtime. Можкт из за того что это джанго4 версии. В общем не отрабатывает этот тег совсем. Смысл в том что мне просто нужно что бы отображалось сколько минут, часов, месяцев и тд назад отображалось. И это нормально что localtime on и localtime off отображаются вместе одновременно?

          Evgenii Legotckoi
          • Sept. 2, 2022, 5:35 p.m.

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

            NSProject
            • Sept. 2, 2022, 6:39 p.m.

            Оно выводит сколько времени прошло с момента публикации или же если про пользователей. То есть онлайн или когда заходил последний раз.

            models.py

            1. class Comment(models.Model):
            2.  
            3. " Тут другие поля модели "
            4. create_at = models.DateTimeField(auto_now_add=True)
            5.  
            6. objects = CommentManager()
            7.  
            8. def __str__(self):
            9. return self.content[0:200]
            10.  
            11. def likes_count(self):
            12. return self.likes.count()
            13.  
            14. def likes_user(self):
            15. return self.likes.filter(id=self.user.id).exists()
            16.  
            17. def filename(self):
            18. return os.path.basename(self.file.name)

            и вот собственно сам вывод в шаблоне

            1. <p class="text-muted mb-0"><small>{{ comment.create_at|timesince }}</small></p>
              Evgenii Legotckoi
              • Sept. 2, 2022, 6:55 p.m.
              • The answer was marked as a solution.

              У меня аналогичный функционал реализован в шаблоне так

              1. {% trans "asked" %} {{ topic.pub_date|naturaltime }}

              Но если верить документации, то для этого достаточно подключить нужные модули

              To activate these filters, add 'django.contrib.humanize' to your INSTALLED_APPS setting. Once you’ve done that, use {% load humanize %} in a template, and you’ll have access to the following filters.

              И это работает. Смею предположить, что у вас в файле settings.py не включены следующие настройки

              1. USE_I18N = True
              2. USE_L10N = True
              3. USE_TZ = True

              по существу они все касаются локализации, USE_TZ отвечает именно за ввсяким localtime и прочее

                NSProject
                • Sept. 2, 2022, 8:02 p.m.

                Ну к стати да точно у меня нет USE_L10N вообще. Но вот про humanize я где то что то пропустил в документации. Или попросту не дошёл до этого места. Спасибо за помощь всё заработало.

                  NSProject
                  • Sept. 2, 2022, 8:14 p.m.

                  А самое прикольное во всём этом то что изначально я написал свой велосипед для реализации функционала и лишь потом решил спросить ))) А то кода многовато выходило

                    Evgenii Legotckoi
                    • Sept. 2, 2022, 8:16 p.m.

                    Это так всегда. Я регулярно выметаю грязь из кода.

                      NSProject
                      • Sept. 2, 2022, 8:30 p.m.

                      Так дело ещё в том что я в python вообще случайно попал из php. Так что многого и не знаю, но в принципе всё же более менее сейчас ориентируюсь. Мне просто захотелось попробовать Django и я переписал всё что было сделано на ванильном Php и Laravel.

                        Comments

                        Only authorized users can post comments.
                        Please, Log in or Sign up
                        • Last comments
                        • Evgenii Legotckoi
                          March 9, 2025, 9:02 p.m.
                          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                        • VP
                          March 9, 2025, 4:14 p.m.
                          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                        • ИМ
                          Nov. 22, 2024, 9:51 p.m.
                          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                        • Evgenii Legotckoi
                          Oct. 31, 2024, 11:37 p.m.
                          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                        • A
                          Oct. 19, 2024, 5:19 p.m.
                          Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html