Как сгенерировать новый шаблон .pot из переведенного файла .po

Начав с неполного файла gettext .pot , полученный в результате файл .po translations теперь содержит большое количество строк перевода, которые изначально не были записаны в файл .pot .

Как я могу создать файл .pot для других языков (строки с пустым переводом) из переведенного файла .po ?

Спасибо за вашу помощь.

    Вы можете использовать что-то вроде этого:

    msgfilter -i xx.po -o new.pot true 

    msgfilter применяет программу ко всем переводам в файле, а true – это просто какая-то программа, которая ничего не выводит для любого ввода.

    Возможно, вам придется немного помассировать комментарий заголовка после этого, чтобы он выглядел как новый POT-файл.

    Вы этого не сделаете. Вы создаете файл .pot из исходного кода. msgmerge берет новый .pot-файл и существующий файл .po и объединяет старые записи в новый файл.

    Я думаю, что самым чистым подходом было бы использовать решение, предложенное Питером Эйзентраутом:

    msgfilter -i xx.po -o new.pot true

    Вы также можете сохранить заголовок gettext, добавив --keep-header перед окончательным true аргументом. В этом случае вам нужно проверить полученный заголовок, потому что он может содержать специфические для языка инструкции (например, количество множественных правил).

    Для пользователей Windows: для использования этого подхода вам нужна программа, которая действует как true (то есть она ничего не делает, кроме запуска succesflully), как и true для Windows, которую я написал именно по этой причине.

    Это потребовало времени, чтобы выяснить способ сделать это, но в конце концов я нашел решение с помощью Notepad ++. В меню « Поиск | Заменить …» мне удалось заменить все на регулярное выражение.

    Найти: msgstr ".*"

    Заменить на: msgstr ""

    если вы хотите обновить строки перевода, вам не нужен файл .pot. Из poedit: каталог, обновление из .pot-файла, затем в окне браузера измените файлы .pot только на «все файлы», выберите ваш файл .po и он обработает

    Просто встань на вопрос, вот команда подстановки vim, чтобы сделать .pot-файл из перевода заполненного файла .po.

    :% s / msgid \ _. \ {- \} msgstr \ (\ (". " \ _. \) \) / msgid \ 1msgstr "" \ r /

    Хотя команда, сообщаемая @richhallstoke, работает с Linux и Mac

     msgfilter -i xx.po -o new.pot true 

    В Windows это не удается, потому что у нас нет true команды.

    Я только что выпустил онлайн-инструмент, который выполняет эту операцию (среди прочего): просто перетащите в свой браузер свой файл .po, нажмите значок «Инструменты» и нажмите «Преобразовать в .pot».

    PS: этот онлайн-инструмент является FOSS: его исходный код находится на GitHub .