Функция translate()
в WordPress предназначена для получения перевода заданного текста. Тем не менее, это низкоуровневая функция, и она не предназначена для прямого использования. Вместо этого рекомендуется использовать более высокоуровневые функции, такие как __()
и _e()
, которые обеспечивают более удобный интерфейс для перевода строк.
translate( string $text, string $domain = 'default' ): string
Параметры
- $text (string, обязательный): Текст, который нужно перевести.
- $domain (string, необязательный): Текстовая область (домен), уникальный идентификатор для получения переведенных строк. По умолчанию используется
'default'
.
Возвращаемое значение
- string: Возвращает переведенный текст. Если перевод не найден или текстовая область не загружена, возвращается оригинальный текст.
Описание
Функция translate()
работает на основе других функций, таких как get_translations_for_domain()
и MO()
. Она также служит основой для более удобных функций, таких как esc_html_e()
, esc_html__()
, _e()
и __()
. Важно помнить, что использование translate()
напрямую не рекомендуется; вместо этого используйте обертки, которые обеспечивают лучшую совместимость и безопасность.
Хуки
При использовании функции translate()
срабатывают следующие хуки:
gettext
: Позволяет изменять строки перевода.gettext_(domain)
: Срабатывает для текстовых областей, позволяя изменять строки перевода для конкретного домена.
Пример 1: Простой перевод текста
В этом примере мы просто используем функцию translate()
для получения перевода текста, указав текстовую область.
$domain = 'my-textdomain';
$text = 'Welcome to my website';
echo translate($text, $domain);
Если перевод для строки «Welcome to my website» существует в загруженном файле .mo
для текстового домена my-textdomain
, будет выведен перевод. Если перевод отсутствует, будет выведен оригинальный текст.
Пример 2: Использование в контексте темы
Хотя использование translate()
непосредственно не рекомендуется, можно показать пример, как это могло бы выглядеть в контексте темы:
add_action('wp_footer', function() {
$domain = 'my-textdomain';
$text = 'Welcome to my website!';
// Получаем перевод
$translated_text = translate($text, $domain);
echo '<footer>' . esc_html($translated_text) . '</footer>';
});
В этом примере текст «Welcome to my website!» будет переведен и выведен в нижнем колонтитуле сайта. Важно использовать esc_html()
для защиты от XSS-атак.
Заключение
Функция translate()
является частью системы перевода WordPress, но не предназначена для прямого использования. Вместо этого лучше использовать более высокоуровневые функции, такие как __()
и _e()
, которые обеспечивают более удобный и безопасный интерфейс для работы с переводами. Тем не менее, понимание работы функции translate()
может помочь вам лучше понять внутреннюю логику системы перевода WordPress и её взаимодействие с текстовыми доменами.