У меня есть сценарий сборки, который сканирует исходный каталог (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 ""
Почему в комментарии две строки источника / строки? (Я думаю, это произошло из-за того, что мы переместили сообщение в источнике.)
Итак, как заставить xgettext игнорировать, если в том же файле обновлено содержимое?
Или я не должен рекомендовать использовать --join-existing
в сценарии сборки? (Но иногда у нас есть ручной элемент в файле банка, так как решить?)
Звучит логично, что xgettext
добавляет информацию (даже ссылку на источник), потому что она явно установлена с опцией --join-existing
, Но следующие обходные пути могут помочь.
Обходной путь 1
Удалите предыдущие ссылки на источники из файла банка с помощью sed перед сборкой нового банка:
sed -i.old '/^#: /d' languages/myapp/myapp.pot
Обходной путь 2
Не используйте опцию --join-existing
и поместите элементы руководства в фиктивный файл php.
Будет ли здесь проблема при использовании PoEdit? Это приложение с графическим интерфейсом и кнопкой «Обновить». Poedit сканирует все файлы и собирает все переводимые строки. Я очень долго им пользовался, и он отлично справляется со своей работой.