Локализация и переводы
Обновлено: 09 Октябрь 2026
Версия: 2.4.0
Локализация и переводы
Переводы интерфейса ASK хранятся в файлах GNU gettext (.po / .mo).
Структура
| Путь | Назначение |
|---|---|
locale/ru/LC_MESSAGES/django.po |
Общие строки: config/, templates/partials/, templates/login/, строки из нескольких модулей |
<app>/locale/ru/LC_MESSAGES/django.po |
Строки конкретного Django-приложения (Python-код и шаблоны templates/<app>/) |
locale/ru/LC_MESSAGES/djangojs.po |
JavaScript-строки (в основном Django admin) |
Пример: модуль finance — finance/locale/ru/LC_MESSAGES/django.po.
Django автоматически подхватывает locale/ в каждом установленном приложении; дополнительная настройка LOCALE_PATHS не требуется.
Рабочий процесс
- Добавить UI-строки на английском с
gettext/gettext_lazy/{% trans %}. - Извлечь новые строки:
source .venv/bin/activate
python manage.py makemessages -l ru --ignore=.venv
- Разнести строки из корневого
locale/по приложениям (послеmakemessagesшаблоны изtemplates/<app>/попадают в корневой файл):
python manage.py split_locale --locale ru
- Перевести новые
msgstrв соответствующих.poфайлах. - Скомпилировать:
python manage.py compilemessages -l ru --ignore=.venv
Команда split_locale
python manage.py split_locale анализирует #:-ссылки в locale/ru/LC_MESSAGES/django.po и переносит записи в <app>/locale/ru/LC_MESSAGES/django.po, если все ссылки относятся к одному приложению.
--dry-run— показать статистику без записи файлов--no-backup— не создаватьdjango.po.bak
Папки шаблонов с нестандартными именами сопоставляются с приложениями автоматически (templates/sd/ → servicedesk, templates/invoice/ → finance и т.д.).
Строки, встречающиеся в нескольких модулях, остаются в корневом locale/.