Перевод строк в WPML позволяет переводить тексты внутри темы и плагинов.

Но для того, чтобы эти переводы отображались на сайте, должны быть выполнены некоторые условия:

  • Тексты должны быть маркированы вызовами GetText.
  • Должен присутствовать аргумент textdomain.

Любые жестко закодированные в PHP тексты, которые не маркированы вызовами GetText с textdomain, не будут доступны для перевода через WPML.

Примеры

Статический текст, не маркированный GetText

<h2>Links</h2>

Проблема: Слово ‘Links’ не маркировано вызовом GetText. Оно не доступно для перевода.

Решение: Необходимо маркировать текст вызовом эхо-вывода GetText:

<h2><?php _e('Links','theme-text-domain'); ?></h2>

Мы маркировали ‘Links’ вызовом gettext call _e() (переводимый эхо-вывод). Теперь WPML может его перевести.

Текст в функции не маркирован GetText

by <?php echo(the_author('', false)); ?>

Проблема: Фраза не доступна для перевода.

Решение: Фраза частично содержит статический и динамический текст. Его нужно маркировать одним вызовом GetText с использованием аргументов.

<?php printf( __( 'by %s', 'theme-text-domain' ), the_author('', false) ); ?>

Переводчик получит текст вида «by %s». Это хорошо, так как он может поменять порядок слов, что требуется в некоторых языках.

Обратите внимание: в этом случае мы использовали вызов GetText __(). Он похож на _e(), но он не записывает текст для вывода (как например, вывод echo). Вызов printf совершает вывод.

Отсутствует аргумент text-domain

<?php _e('Roadmap') ?>

Проблема: В вызове GetText нет аргумента textdomain.

Решение: Добавьте text-domain.

<?php _e('Roadmap','theme-text-domain') ?>

Аргумент text-domain указывает для GetText (и WPML), к чему относится текст. Эта строка ни для кого не имеет никакого значения, кроме вас. Вы можете выбрать любую строку, но не будьте противоречивы. Значение text-domain будет группировать связанные между собой строки.

Конечно же, «theme-text-domain» — не очень подходящее и не уникальное имя. Например, если название вашей темы «star-geeks», это значение получше подойдет для аргумента text-domain.