Я знаю, что есть, по крайней мере, два способа извлечь строки 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>