Как итеративно использовать xgettext для обновления файлов .po для перевода
-
22-08-2019 - |
Вопрос
Я рассматриваю возможность использования xgettext чтобы помочь в переводе большой кодовой базы, и у меня есть два вопроса:
- если у меня есть один файл .po для каждого языка, есть ли простой способ обновить их все, используя одно сканирование базы кода с помощью xgettext, или мне нужно запускать xgettext один раз для каждого языка?
- если я добавлю целевой язык в заголовок файла .po с помощью поредактировать, xgettext, похоже, перезаписывает это заголовками по умолчанию.Как я могу остановить это?
Возможно, я использую не тот инструмент, в этом случае предложения приветствуются.Я хочу иметь возможность сканировать код и обновлять файлы .po, добавляя в них любые новые строки, оставляя при этом любую информацию заголовка нетронутой.
РЕДАКТИРОВАТЬ:Я знаю, что poedit может сканировать код, но я надеялся найти приложение командной строки для выполнения сканирования, чтобы упростить автоматизацию процесса.
Решение
Да, по сути вы неправильно используете инструменты.
xgettext
извлекает теги и создает файл шаблона.(например.*.pot-файл)
А msgmerge
Команда обновляет файл .po, внося в него изменения из файла .pot.
У нас есть правила для обновления файлов .po, как показано ниже:
%.en.po : %.pot
-[ -e $@ ] && msgmerge --width=110 --update $@ $<
[ -e $@ ] || cp $< $@