2009-03-30 6 views
3

я ищу на использование xgettext для облегчения перевода больших кодового, и у меня есть два вопроса:Как использовать итеративно зная искомых обновить файлы .po для перевода

  • , если у меня есть один файл .po пер- язык, есть ли простой способ обновить их все, используя одно сканирование xgettext для кодовой базы, или я должен запускать xgettext один раз для каждого языка?
  • Если я добавлю целевой langauge в заголовок файла .po с poedit, xgettext, похоже, перезапишет это заголовками по умолчанию. Как я могу остановить это?

Возможно, я использую неправильный инструмент, и в этом случае предложения приветствуются. Я хочу, чтобы иметь возможность сканировать код и обновлять файлы .po любыми новыми строками, но оставляя информацию заголовка неповрежденной.

EDIT: Я знаю, что poedit может сканировать код, но я надеялся найти приложение командной строки для выполнения сканирования, чтобы упростить процесс.

ответ

8

Да, в основном вы используете инструменты неправильно.

xgettext извлекает теги и создает файл шаблона. (например, * .pot файл)

Команда msgmerge обновляет файл .po с изменениями из файла .pot.

У нас есть сделать правила для обновления .po файлов, как показано ниже:

%.en.po : %.pot 
    -[ -e [email protected] ] && msgmerge --width=110 --update [email protected] $< 
    [ -e [email protected] ] || cp $< [email protected] 
+0

Это недостающий кусок головоломки. Большое спасибо за это. –

+0

, если я хорошо понимаю, также вы можете добавить -j в команду xgettext, чтобы только добавлять отсутствующие ключи. Присоединяйте сообщения с существующим файлом. – jamesjara

+0

@jamesjara Я не знаю, удалит ли это удаленные сообщения - msgmerge будет комментировать сообщения в файлах po, которые были удалены из источника. –