Извлечение строк 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> 

One Solution collect form web for “Извлечение строк gettext из файлов Javascript и HTML (шаблонов)”

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

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

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

  • Tex markup, как отобразить его в Html с помощью Python?
  • Статья соскабливание с помощью beautifulsoup: очистка всех тегов <p>
  • как подключить пользовательский интерфейс chatbot к серверу APIAI через python sdk или javascript?
  • как получить следующий obj в цикле модель django
  • Как вы конвертируете Word Document в очень простой html в Python?
  • Данные POST в файл CGI с использованием XMLHttpRequest приводят к тому, что BadHeader
  • Вызов функции python в html-файле
  • Отправка данных из формы HTML в скрипт Python в Flask
  •  
    Interesting Posts for Van-Lav

    объединение двух словарей python в одно, когда чистые значения не являются положительными

    Оператор Python 3 >> для печати в файл

    UnicodeDecodeError, недопустимый байт продолжения

    Virtualenv: невозможно создать virtualenv: IOError: Нет такого файла или каталога: 'python'

    Общая xlabel / ylabel для подзаголовков matplotlib

    Матрица с изображением на tkinter Canvas

    Попытка отправить «альтернативу» с MIME, но она также появляется в надежном почтовом клиенте

    Как показать результат скрипта python в консоли при запуске из редактора ST?

    Python – не могу убить основной поток с помощью KeyboardInterrupt

    Шифрование AES в Node.js соответствует ожидаемому расшифровке в Python

    Как вы пропустите понимание списка в отладчике Python (pdb)?

    python bindings, как это работает?

    Получить объект результата задачи, заданный `task_id` в Celery

    Эффективно поверните множество точек с матрицей вращения в numpy

    Использование свойства () в методах класса

    Python - лучший язык программирования в мире.