Команда 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,
которая собирает статические файлы проекта