xgettext - присоединиться к существующим множественным комментариям в моем файле банка

У меня есть сценарий сборки, который сканирует исходный каталог (PHP) и выполняет xgettext --join-existing ... для обновленного перевода и сохранения в файл банка, например

find . -type f -name '*.php' -not -path './vendor/*' | 
xargs xgettext --join-existing --keyword=_e --keyword=_x 
--keyword=__ --from-code=UTF-8 --default-domain=myapp 
--output=languages/myapp/myapp.pot

Я не знаю, почему после нескольких раз рефакторинга и сборки кода в файле pot будет что-то вроде этого

#: src/Member/Auth.php:196
#: src/Member/Auth.php:135
msgid "Login failed!"
msgstr ""
  1. Почему в комментарии две строки источника / строки? (Я думаю, это произошло из-за того, что мы переместили сообщение в источнике.)

  2. Итак, как заставить xgettext игнорировать, если тот же файл обновил содержимое?

  3. Или я не должен рекомендовать использовать --join-existing в сценарии сборки? (Но иногда у нас есть ручной элемент в файле банка, так как решить?)

2 ответа

Звучит логично, что xgettext добавляет информацию (даже ссылку на источник), потому что она явно установлена ​​с опцией --join-existing, Но следующие обходные пути могут помочь.


Обходной путь 1

Удалите предыдущие ссылки на источники из файла банка с помощью sed перед сборкой нового банка:

sed -i.old '/^#: /d' languages/myapp/myapp.pot

Обходной путь 2

Не используйте опцию --join-existing и поместите элементы руководства в фиктивный файл php.

Будет ли здесь проблема при использовании poedit? Это приложение с графическим интерфейсом и кнопкой "Обновить". Poedit сканирует все файлы и собирает все переводимые строки. Я очень долго им пользовался, и он отлично справляется со своей работой.

Другие вопросы по тегам