2015-11-25 17 views
1

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

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

<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 файла.

Это является работать, если я помещаю {{__ («Город, область, почтовый индекс», text_domain)}} на отдельной строке в шаблоне, но не работает при размещении на входе как показано в приведенном выше фрагменте.

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

Кто-нибудь есть идея, почему это так? Является ли 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 atttributes», но из языка шаблонов, для которого xgettext не поддерживается. Чтобы обойти это, я предполагаю, используя грубую взломанную Python с этой страницы. Фактически, вы лжете xgettext/Poedit о том, что файл содержит, с результатами, которые, честно говоря, можно ожидать. Является ли файл действительным Файл Python? Нет, это не так, это Twig. Вы не можете ожидать, что он будет правильно разобран, когда вы вводите в заблуждение инструмент о языке.

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

приятнее решением является использование Twig-Gettext-Extractor, специальный Twig парсер PoEdit. На связанной странице содержатся инструкции по ее настройке.

+0

Спасибо за ваш ответ. Вы, конечно, правы в том, что обходной путь Python является взломом. Я также попытался использовать Twig-Gettext-Extractor. Но сама команда не работает: RuntimeException: Gettext command '" xgettext --sort-output [...] не удалось с кодом ошибки 1 и выводить: '. Я не могу отлаживать его, так как это системная команда и ошибка на самом деле не помогает. Я попытаюсь заставить его работать. – dschenk