Подтвердить что ты не робот

Извлечение строк gettext из файлов Javascript и HTML (шаблонов)

Я знаю, что есть, по крайней мере, два способа извлечь строки gettext из .js файлов - используя парсер gettext в режиме python (который, как я слышал, имеет некоторые недостатки) и Babel, который написан на python.

Есть ли способ извлечь строки gettext из HTML файлов, а точнее - шаблоны Javascript (подчеркивание, усы и т.д.). Насколько я знаю, ни Вавилон, ни gettext не делают этого.

Мой друг попытался адаптировать Babel для этого, но у него были серьезные проблемы с отсутствием некоторых переводов и т.д.

UPDATE: Друг мне немного поручил, поэтому теперь я могу извлечь все строки так, как я хочу. Единственное, чего мне не хватает, это "комментарии переводчика". Команда, которую я использую, такова:

find . -iname '*.html' -o -iname '*.js' | xargs xgettext --language=Python --from-code=utf-8 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3

Это будет включать pgettext и npgettext в ключевых словах

ОБНОВЛЕНИЕ 2: Я обнаружил, что для извлечения gettext-сообщений, которые находятся внутри атрибутов HTML-тегов, мне нужно вставить разрыв строки между частью JS. Например, мне пришлось преобразовать это:

<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>

В это:

<a href="" title="
<%= ST.i18n.gettext('Click to add another row') %>"></a>

xgettext в режиме Python НЕ будет извлекать сообщение gettext, если оно находится в одной строке. Это быстрый хак, который, похоже, работает для меня, хотя.

ОБНОВЛЕНИЕ 3: Кажется, что xgettext в режиме PHP извлекает сообщения из HTML без проблем (по крайней мере, с шаблонами Undsrscore), и это также относится к комментариям транслятора.

find ../app -iname '*.html' | xargs xgettext --language=PHP --from-code=utf-8 -c --keyword=gettext --keyword=ngettext:1,2 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 -o translations.po

Таким образом, я могу сохранить нормальное форматирование в файлах шаблонов:

<a href="" title="<%= ST.i18n.gettext('Click to add another row') %>"></a>
4b9b3361

Ответ 1

Выделение сообщения Babel расширяемо, и вам нужно создать выделенные экстракторы для новых типов.

Вы не указываете, какие "серьезные проблемы" вы нашли (или ваш друг), поэтому вам нелегко помочь вам здесь более подробно, но любые проблемы с конкретными форматами сводятся к ошибочному извлечению кода.

Вавилон поддерживает загрузку экстракторов из яиц с помощью entry_points, и в результате появляется большой список таких экстракторов, перечисленных в PyPI ( связанные ссылки на Babel, но многие из них являются экстракторами, а еще нет классификатора Trove для экстракторов Babel). Вы можете использовать дополнительные поисковые запросы PyPI для конкретных систем шаблонов, чтобы узнать, есть ли для них экстракторы Babel.