WPML

Узнайте, как использовать функции gettext, чтобы сделать тексты в темах оформления и плагинах переводимыми в WPML.

Чтобы тексты в темах оформления и плагинах были переводимыми и корректно отображались на Вашем сайте, необходимо выполнить два условия:

  • Обернуть тексты в функцию gettext
  • Добавить аргумент текстового домена

Основы gettext

Рассмотрим следующую строку «Thank you!», которая принадлежит домену «my-plugin-domain»:

__( 'Thank you!', 'my-plugin-domain' );

Чтобы вывести строку в браузере, используйте функцию _e() :

_e( 'Thank you!', 'my-plugin-domain' );

При использовании HTML оберните её в HTML-теги:

<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>

Если у Вас есть ссылка, отделённая от окружающего текста, используйте функцию esc_html_e():

<a href="http://wpml.org/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>

Лучшие практики использования gettext

1. Никогда не оборачивайте переменную или константу в функцию gettext

Это сделает строки недоступными для сканирования и, следовательно, непереводимыми.

Неправильно

<?php
if ( $morning ) {
   define( 'GREETING', 'Good morning' );
} else {
   define( 'GREETING', 'Good afternoon' );
}
 
_e( GREETING, 'my-domain' );
?>

Правильно

<?php
if ( $morning ) {
   _e( 'Good morning', 'my-domain' );
} else {
   _e( 'Good afternoon', 'my-domain' );
}
?>

2. Экранируйте вывод для безопасности

Если строка сразу выводится на экран, используйте функции экранирования, такие как esc_html_ и esc_attr_, для защиты от XSS-атак.

echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';

3. Добавляйте комментарии для переводчиков

Это помогает переводчикам понять контекст, в котором появляются тексты или переменные.

/* translators: %1$s is status label (e.g. "active" and  %2$s is quantity of bits/s (e.g. 12 Gbit/s) */

printf(
esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ),
$state, $speed
);

Дополнительные ресурсы

Чтобы узнать больше о gettext, смотрите официальный кодекс WordPress.

Автор: Amir · Последнее обновление: 21 февраля 2025