Как создать новый шаблон .pot из переведенного файла .po - PullRequest
6 голосов
/ 09 мая 2011

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

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

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

Ответы [ 7 ]

10 голосов
/ 04 июля 2011

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

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

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

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

2 голосов
/ 22 июня 2017

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

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

В Windows это не работает, поскольку у нас нет команды true.

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

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

1 голос
/ 01 мая 2017

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

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

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

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

1 голос
/ 10 мая 2011

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

Найти: msgstr ".*"

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

1 голос
/ 09 мая 2011

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

0 голосов
/ 02 марта 2016

Обратимся к вопросу, вот команда подстановки vim для создания файла .pot из перевода заполненного файла .po.

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

0 голосов
/ 15 августа 2014

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

...