Почему строки не отображаются при переводе строк в WPML?

У меня в моих файлах php есть такая строка:

<?php
__('My string A', 'a_theme');
_e('My string B', 'a_theme');
?>

и не появляются в "Переводе строк".

Я также купил и установил эту тему: http://preview.ait-themes.com/index.php?bartype=desktop&theme=touroperator и строки из этой темы также не отображаются в разделе «Перевод строк» ​​WPML.

Это один из примеров строки, которая уже была в теме, когда я ее установил:

<input type="text" id="dir-searchinput-location" class="dir-searchinput-select" placeholder="{__ 'Destination'}">

Есть ли какая-то дополнительная конфигурация, которую мне нужно сделать, или что-то еще?

Спасибо за помощь


person iWizard    schedule 10.11.2013    source источник


Ответы (3)


Чтобы строки отображались в разделе Перевод строк, сначала необходимо перейти в раздел Локализация тем и подключаемых модулей. Прокрутите вниз до раздела Строки в теме и нажмите кнопку Сканировать тему на наличие строк. После этого WPML обнаружит любые незарегистрированные или вновь добавленные строки, которые правильно отформатированы для локализации.

Если это сработает, вы увидите свою тему a-theme в столбце Домен и количество обнаруженных строк в столбце Количество. Нажав кнопку Просмотреть строки, требующие перевода, вы перейдете к Переводу строк. Если какая-либо из строк неправильно отформатирована для локализации, счетчик не будет обновлен.

Если вы обновите существующие строки или добавите новые, вам потребуется повторно отсканировать их, прежде чем WPML добавит их в преобразование строк.

Форматирование в вашем первом примере выглядит нормально, и WPML должен обнаружить строки, но во втором примере вы не объявили домен. Без домена WPML не подберет строку.

Правильный формат

__('Your string', 'yourDomain') or _e('Your string', 'yourDomain')

В этом случае домен должен быть именем вашей темы, 'a_theme'.

person user2895499    schedule 10.11.2013
comment
Вы правы во всем, кроме двух вещей. Во втором примере WPML не обнаружит строку, потому что это умный tpl, а wpml не обнаруживает строки в tpl. Что касается домена, если вы установите только вот так __('Моя строка'), это будет работать (проверено). - person iWizard; 11.11.2013
comment
Если это сработает.... А когда это не сработает? :) Сканер не может найти мои строки. Ни в моей теме, ни в моих плагинах. - person gubbfett; 09.03.2016
comment
@gubbfett вы используете строковые литералы для домена? Некоторое время назад я пытался использовать константу, но WPML не нашел ее. Синтаксический анализатор был построен так, чтобы требовать строковый литерал. - person Matt Vanderpol; 28.04.2016

Эти строки каким-то образом кэшируются. Итак, если вы добавили новый (правильно) и он по-прежнему не отображается в переводе строк, перейдите в «Локализация тем и плагинов» и нажмите кнопку «Сканировать тему на наличие строк». Это приведет к переиндексации строк, и ваша новая добавленная должна появиться (у меня сработало).

person MilanG    schedule 18.08.2015

У меня такая же проблема, моя тема "bookyourtravel", а плагин "перевод строк WPML" не переводил эти тексты:

<?php _e('Accommodations', 'bookyourtravel'); ?>
<?php _e('Tour', 'bookyourtravel'); ?>
<?php _e('Accommodation', 'bookyourtravel'); ?>    

Без перевода!!!

Мое решение было:

  1. В WPML перейдите в «локализация тем и плагинов», установите флажок «Переведено WPML» и нажмите «Сохранить».
  2. Теперь в «Переведенной строке» нажмите кнопку: сохраните настройки и пересканируйте строки.

Если вы используете Кэш, то Очистите весь кеш на страницах.

готово, это сработало!!!!!!!

источник: https://wpml.org/forums/topic/using-gettext-for-hard-coded-strings-what-else/

person ederrafo    schedule 12.10.2015