Работа с переводами

Команда 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

Используйте этот запуск, когда нужно добавить новый язык в каталог локализаций.

Как работает

  1. translate compile берет каталог локализаций и вызывает pybabel compile для уже существующих языков.
  2. translate update сначала создает временный файл messages.pot через pybabel extract, затем обновляет существующие каталоги переводов.
  3. translate init тоже строит messages.pot, после чего создает новый каталог локали через pybabel init.
  4. Для update и init важны корректные пути к исходникам, файлу babel.cfg и каталогу локализаций.

Что важно учесть

  • Все подкоманды зависят от установленного pybabel в окружении запуска.
  • Пути к файлам переводов, каталогу локализаций и babel.cfg лучше передавать явно.
  • translate compile работает только с уже существующими локалями.
  • translate update обновляет существующие языки, а translate init предназначена именно для создания новой локали.
  • Подкоманды update и init создают временный messages.pot в текущей рабочей директории и затем удаляют его.