Работа с переводами
Команда translate объединяет подкоманды для компиляции переводов,
обновления существующих локалей и инициализации нового языка.
Команда
uv run python manage.py translate <subcommand>
Используйте эту группу команд, когда нужно собрать .mo-файлы,
обновить существующие каталоги локалей или добавить новый язык.
По умолчанию: команда используется вместе с одной из подкоманд compile, update или init.
Подкоманды
| Подкоманда | Назначение |
|---|---|
translate compile |
Компилирует существующие каталоги переводов через pybabel compile. |
translate update |
Извлекает новые строки и обновляет уже существующие локали. |
translate init |
Создает новую локаль через pybabel init. |
Дополнительные примеры запуска
Компиляция существующих переводов
uv run python manage.py translate compile --directory submodules/auth_perms/localization
Подходит, когда .po-файлы уже обновлены и нужно получить актуальные .mo-файлы.
Обновление существующих локалей
uv run python manage.py translate update --path submodules/auth_perms --config submodules/auth_perms/babel.cfg --directory submodules/auth_perms/localization
Команда извлекает переводимые строки из кода и синхронизирует уже существующие языковые каталоги.
Инициализация нового языка
uv run python manage.py translate init --language de --path submodules/auth_perms --config submodules/auth_perms/babel.cfg --directory submodules/auth_perms/localization
Используйте этот запуск, когда нужно добавить новый язык в каталог локализаций.
Как работает
translate compileберет каталог локализаций и вызываетpybabel compileдля уже существующих языков.translate updateсначала создает временный файлmessages.potчерезpybabel extract, затем обновляет существующие каталоги переводов.translate initтоже строитmessages.pot, после чего создает новый каталог локали черезpybabel init.- Для
updateиinitважны корректные пути к исходникам, файлуbabel.cfgи каталогу локализаций.
Что важно учесть
- Все подкоманды зависят от установленного
pybabelв окружении запуска. - Пути к файлам переводов, каталогу локализаций и
babel.cfgлучше передавать явно. translate compileработает только с уже существующими локалями.translate updateобновляет существующие языки, аtranslate initпредназначена именно для создания новой локали.- Подкоманды
updateиinitсоздают временныйmessages.potв текущей рабочей директории и затем удаляют его.