xgettext не извлекает строку в атрибуте HTML

Я работаю над сайтом Wordpress, используя Timber в качестве движка шаблонов (веточка для Wordpress). Я хочу перевести интерфейс, используя механизм gettext Wordpress через PoEdit (использует xgettext).

Фрагмент шаблона:

<form action="/{{ current_language }}/api/search/{{ viewModel.currentSuperCategory.key }}"
  method="post"
  class="search-results__search"
  id="search-form">
<input placeholder="{{ __('City, region, ZIP', text_domain) }}&hellip;"
       class="input search-results__search__input"
       name="search-query"
       type="text"
       data-search-autocomplete />

Я использую PoEdit для извлечения строк из файла *.twig.

Он работает, если я помещаю {{ __('City, region, ZIP', text_domain) }} на отдельной строке в шаблоне, но он не работает, когда помещается во входной заполнитель, как показано во фрагменте выше.

Я настроил PoEdit, как описано здесь: https://github.com/jarednova/timber/wiki/Text-Cookbook

У кого-нибудь есть идея, почему это так? Xgettext игнорирует строки внутри атрибутов HTML?

Другой пример:

В следующем случае строки извлекаются для перевода:

<i class="fa fa-envelope"></i>
{{ __('Search subscription', text_domain) }}
{{ __('Save free search subscription', text_domain) }}

Но не в следующем случае:

<i class="fa fa-envelope"></i>
<span data-rt-xs="{{ __('Search subscription', text_domain) }}" data-rt-lg="{{ __('Save free search subscription', text_domain) }}"></span>

1 ответ

Это потому, что вы на самом деле извлекаете не из "атрибутов HTML", а из языка шаблонов, который xgettext не имеет поддержки. Думаю, чтобы обойти это, вы используете грубый взлом Python с этой страницы. По сути, вы врете xgettext/Poedit о том, что файл содержит, и, честно говоря, ожидаемых результатов. Является ли файл допустимым файлом Python? Нет, это не ветка. Вы не можете ожидать, что он будет проанализирован правильно, если вы введете в заблуждение инструмент о языке.

Вместо этого я рекомендую делать то, что рекомендует эта страница, и как лучший способ:

Лучшее решение - использовать https://github.com/umpirsky/Twig-Gettext-Extractor, специальный парсер Twig для Poedit. Связанная страница содержит инструкции о том, как ее настроить.

Другие вопросы по тегам