Нужно ли запускать makemessages каждый раз?

Я читаю документацию django для makemessages, но формулировка не очень ясна:

Проходит по всему исходному дереву текущего каталога и извлекает все строки, помеченные для перевода. Он создает (или обновляет) файл сообщения в каталоге conf/locale (в дереве Django) или locale (для проекта и приложения). После внесения изменений в файлы сообщений вам необходимо скомпилировать их с помощью compilemessages для использования со встроенной поддержкой gettext.

В тексте выше мне не кажется ясным, что означает, что makemessages будет вытягивать строки, помеченные для перевода. (вытащить их для чего? куда?)

Между тем, описание compilemessages имеет смысл, так как оно просто компилирует сообщения после того, как я изменил языковые файлы.

Когда, если вообще, я должен использовать makemessages, если compilemessages выполняет работу, которую я ищу? В чем смысл makemessages?


person Anonymouse    schedule 12.11.2020    source источник


Ответы (1)


makemessages используется для сканирования ваших приложений в поисках строк, помеченных для перевода. Получив эти строки, он помещает их в файл po. Если вы затем добавите дополнительные строки для перевода в свое приложение, вам нужно будет запустить makemessages для создания обновленного файла po. compilemessages использует содержимое файла po для создания файла mo, поэтому сначала необходимо обновить файл po.

makemessages принимает параметр для локали:

pipenv run django-admin makemessages --locale=de

Это позволяет вам создать файл po для каждой локали, поддерживаемой вашим приложением.

person Stu    schedule 12.11.2020
comment
Спасибо @Stu. Я вижу, что запуск makemessages также продолжает удалять строки из моего po-файла. Очень расстраивает. Я думаю, что могу добавить строки в файл ta po, только позволив makemessages автоматически извлекать их из html-файла где-нибудь? - person Anonymouse; 12.11.2020