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) }}…"
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. Связанная страница содержит инструкции о том, как ее настроить.