Я только что сделал это для проекта, над которым я работаю, для нас процесс такой:
Во-первых, у меня есть файл POTFILES.in, который содержит список исходных файлов, нуждающихся в переводе. На самом деле у нас есть два файла (например, admin.in и user.in), поскольку интерфейс администратора не всегда нуждается в переводе. Таким образом, мы можем отправлять переводчикам только файл, содержащий строки, которые видят пользователи.
Выполнение следующей команды создаст шаблон .pot из файла POTFILES.in:
.
xgettext --files-from=POTFILES.in --directory=.. --output=messages.pot
Запустите указанную выше команду из каталога po /, который должен быть подкаталогом вашего проекта и содержать файл POTFILES.in. Файл .pot имеет тот же формат, что и файл .po, но это шаблон, не содержащий переводов. Вы создаете новый шаблон всякий раз, когда в ваши исходные файлы добавляются новые переводимые строки.
Чтобы обновить уже переведенные .po файлы и добавить в них новые строки, выполните:
msgmerge --update --no-fuzzy-matching --backup=off da.po messages.pot
В приведенном выше примере я отключаю нечеткое сопоставление, так как наши строки беспорядочные и приносят больше вреда, чем пользы. Я также отключил резервное копирование файлов, так как здесь все в подрывной деятельности. Запустите приведенную выше команду для каждого языка, в этом случае я обновил перевод на датский.
Наконец, запустите msgfmt для создания файлов .mo из файлов .po:
msgfmt nl.po --output-file nl.mo
Конечно, вы не захотите запускать это вручную каждый раз, поэтому создайте несколько сценариев (или, предпочтительно, один или несколько файлов Makefile), чтобы сделать это для вас.
Обратите внимание, что ваш макет каталога немного отличается от моей ситуации, поэтому вам придется немного изменить выходные имена файлов / пути, но шаги должны быть такими же.