"D" вместо "дней" в Django Naturaltime

Я работаю в мобильном приложении с DRF в качестве бэкэнда и использую naturaltime встроенная функция, но поскольку это мобильное приложение, пространство на экране - большая проблема (по крайней мере, для меня). Итак, на произвольную дату я получаю:

"1 week, 2 days ago"

Что приятно, но мне интересно, если это возможно получить

"1w, 2d ago"

Я знаю, что могу заменить слова в строке, но я надеюсь, что есть лучший способ. Любое предложение? Спасибо!

3 ответа

Вероятно, лучший способ сделать это - "локализовать" имена. Вы можете посмотреть на источник django.contrib.humanize , Для перевода сделайте резервную копию и измените файл в django/contrib/humanize/locale/<your language>/LC_MESSAGES/django.po особенно начиная со строки 240. Затем запустите manage.py compilemessages обновить .mo файлы.

РЕДАКТИРОВАТЬ:

Альтернативный способ сделать это без изменения установки Django:

  1. Добавьте следующие строки в settings.py, если вы уже не сделали так:

    LOCALE_PATHS = (
        "/path/to/my/project/locale/",
    )
    
  2. Добавить подкаталог с именем en на вышеуказанный путь

  3. Добавить файл с именем django.po к en каталог, который вы только что создали.
  4. Вставьте содержимое naturaltime перевод в файл.
  5. Измените их по своему вкусу.
  6. Бежать manage.py compilemessages обновить .mo файлы из каталога, который manage.py находится в, затем дождитесь распространения изменений.

Вы можете попробовать этот фильтр shortnaturaltime. https://github.com/ollieglass/django-shortnaturaltime

Это не похоже на то, что вы можете настроить:

https://github.com/django/django/blob/master/django/contrib/humanize/templatetags/humanize.py

Другие вопросы по тегам