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 - это
- Добавьте пользовательский экстрактор с вашим расширением, указав стандартный вызов gettext, без
-L glade
немного. - Напишите ЕГО правила для вашего формата файла.
- Поместите их в расположение других
.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;
}