Команда compilemessages

Команда compilemessages применяется для компиляции файлов перевода с расширением .po в бинарные файлы .mo, которые Django использует для подстановки переведенных строк в приложении. Команда обрабатывает все каталоги locale в проекте и создает скомпилированные версии файлов перевода для каждой поддерживаемой локали. Обычно команда запускается после создания или обновления файлов перевода командой makemessages.

Синтаксис

pythonpython manage.py compilemessages

Команда также принимает несколько опциональных параметров для управления процессом компиляции.

pythonpython manage.py compilemessages [--locale LOCALE] [--exclude EXCLUDE] [--use-fuzzy] [--ignore PATTERN]

Пример . С указанием локали

Чтобы скомпилировать файлы перевода только для конкретной локали:

pythonpython manage.py compilemessages --locale ru

Результат выполнения команды:

python"processing file django.po in /app/locale/ru/LC_MESSAGES"
"compiled message file created: /app/locale/ru/LC_MESSAGES/django.mo"

Пример . С исключением локали

Можно исключить определенные локали из процесса компиляции:

pythonpython manage.py compilemessages --exclude ru --exclude uk

Пример . С использованием нечетких переводов

По умолчанию нечеткие переводы игнорируются при компиляции. Чтобы включить их, используйте параметр --use-fuzzy:

pythonpython manage.py compilemessages --use-fuzzy

Пример . Игнорирование путей

Команда поддерживает игнорирование определенных каталогов с помощью параметра --ignore:

pythonpython manage.py compilemessages --ignore venv --ignore .git

Полный пример рабочего процесса

Рассмотрим полный процесс создания и компиляции переводов в Django проекте:

python# Создание файлов перевода для русской локали
python manage.py makemessages --locale ru

# Редактирование файла locale/ru/LC_MESSAGES/django.po
# Добавление переводов для строк

# Компиляция файлов перевода
python manage.py compilemessages --locale ru

# Проверка работы перевода в приложении
python manage.py shell

Результат проверки в shell:

pythonfrom django.utils.translation import gettext as _
translated = _("Hello, world!")
print(translated)

Результат выполнения кода:

python"Привет, мир!"

Смотрите также

  • команда makemessages,
    которая создает файлы перевода для интернационализации
  • команда runserver,
    которая запускает сервер для разработки
  • команда migrate,
    которая применяет миграции к базе данных
  • команда collectstatic,
    которая собирает статические файлы проекта