Poedit и XML-файлы

Как настроить poedit для извлечения строк из XML-файла?

У меня есть элементы навигации Zend Framework в.xml, как это:

<entry-i>
    <label>Text to translate</label>
    <params>
       ...
    <params>
<entry-i>

И я хочу поедить читать только сообщения от <label>s.

5 ответов

Решение

Я тоже искал решение, и только что заставил его работать!

В Poedit (у меня 1.4.2) добавьте новый парсер (Edit > Preferences) со следующими свойствами:

  • Язык: XML
  • Список расширений, разделенных точкой с запятой (например, .cpp;.h): *.xml
  • Команда парсера: xgettext --force-po -o %o %C %K %F -L glade
  • Элемент в списке ключевых слов: -k%k
  • Элемент в списке входных файлов: %f
  • Кодировка исходного кода: --from-code=%c

В своем проекте перевода добавьте label а также title в список ключевых слов и обновите каталог.

Приведенный выше совет злоупотреблять экстрактором Glade для разбора не-Glade XML-файлов ошибочен. Это никогда не будет работать хорошо (пример: некоторые комментарии здесь). Конечно, это было лучше, чем ничего в 2010 году.

Начиная с gettext 0.19.7 (в комплекте с Poedit начиная с 1.8.7), есть лучший способ: теперь есть встроенная поддержка в gettext для пользовательских файлов XML через правила ITS.

Лучший способ извлечь строки из пользовательского файла XML - это

  1. Добавьте пользовательский экстрактор с вашим расширением, указав стандартный вызов gettext, без -L glade немного.
  2. Напишите ЕГО правила для вашего формата файла.
  3. Поместите их в расположение других .its а также .loc файлы в установке Poedit.

Если у вас возникли проблемы с настройкой Poedit в Windows, особенно если вы получили сообщение об ошибке, гласящее, что glade и expat недоступны, замените прилагаемый файл xgettext.exe на текущий из проекта gnuwin32:

http://gnuwin32.sourceforge.net/packages/gettext.htm

Вам нужно скачать двоичные файлы и зависимости. Тем не менее, только двоичный файл xgettext.exe должен быть извлечен и связанные файлы (просто запустите его, и он скажет вам, что не хватает)

Это работало отлично! Я обнаружил проблему с "glade не поддерживается" с помощью Poedit 1.4.6 в Windows 7, но я исправил ее, загрузив последние двоичные файлы и зависимости gnuwin32, как сказал пользователь 496209. Не загружайте полный пакет, потому что PoEdit поставляется с собственной библиотекой gettext, поэтому просто загрузите двоичные файлы и зависимости и замените запрошенные файлы в папку poedit.

Похоже, PoEdit еще не поддерживает XML.

Я создал небольшой скрипт php для извлечения меток в файл.php, который PoEdit понимает.

$xml = simplexml_load_file("../application/configs/navigation.xml") 
   or die("Error: Cannot open XML file");

echo '<?';
foreach($xml->xpath('//label') as $label){
  echo 'echo _("'.$label.'");'. PHP_EOL;
}
Другие вопросы по тегам