NSProject
NSProject1. September 2022 15:11

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

Django

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

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

11
Evgenii Legotckoi
  • 2. September 2022 05:13

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

{% load tz %}

{% localtime on %}
    {{ value }}
{% endlocaltime %}

{% localtime off %}
    {{ value }}
{% endlocaltime %}
    NSProject
    • 2. September 2022 05:34

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

      Evgenii Legotckoi
      • 2. September 2022 06:02

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

        NSProject
        • 2. September 2022 07:32
        • (bearbeitet)

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

          Evgenii Legotckoi
          • 2. September 2022 07:35

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

            NSProject
            • 2. September 2022 08:39

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

            models.py

            class Comment(models.Model):
            
                " Тут другие поля модели "
                create_at = models.DateTimeField(auto_now_add=True)
            
                objects = CommentManager()
            
                def __str__(self):
                    return self.content[0:200]
            
                def likes_count(self):
                    return self.likes.count()
            
                def likes_user(self):
                    return self.likes.filter(id=self.user.id).exists()
            
                def filename(self):
                    return os.path.basename(self.file.name)
            

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

            <p class="text-muted mb-0"><small>{{ comment.create_at|timesince }}</small></p>
            
              Evgenii Legotckoi
              • 2. September 2022 08:55
              • Die Antwort wurde als Lösung markiert.

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

              {% 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 не включены следующие настройки

              USE_I18N = True
              USE_L10N = True
              USE_TZ = True
              

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

                NSProject
                • 2. September 2022 10:02

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

                  NSProject
                  • 2. September 2022 10:14

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

                    Evgenii Legotckoi
                    • 2. September 2022 10:16

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

                      NSProject
                      • 2. September 2022 10:30

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

                        Kommentare

                        Nur autorisierte Benutzer können Kommentare posten.
                        Bitte Anmelden oder Registrieren
                        Letzte Kommentare
                        ИМ
                        Игорь Максимов5. Oktober 2024 07:51
                        Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                        d
                        dblas55. Juli 2024 11:02
                        QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                        k
                        kmssr8. Februar 2024 18:43
                        Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                        Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                        EVA
                        EVA25. Dezember 2023 10:30
                        Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                        Jetzt im Forum diskutieren
                        J
                        JacobFib17. Oktober 2024 03:27
                        добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                        JW
                        Jhon Wick1. Oktober 2024 15:52
                        Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                        КГ
                        Кирилл Гусарев27. September 2024 09:09
                        Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                        F
                        Fynjy22. Juli 2024 04:15
                        при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                        Folgen Sie uns in sozialen Netzwerken