Функция switch_to_locale()
в WordPress позволяет программно переключить язык сайта на заданную локаль. Это может быть полезно для адаптации интерфейса под предпочтения конкретного пользователя или для обеспечения многоязычности на сайте.
switch_to_locale( string $locale ): bool
Параметры
- $locale (string, обязательный): Локаль, на которую нужно переключиться. Например,
ru_RU
для русского языка илиen_US
для английского.
Возвращаемое значение
- bool: Возвращает
true
при успешном переключении локали иfalse
в случае ошибки.
Как работает функция
Функция switch_to_locale()
была введена в WordPress версии 4.7 и предназначена для управления переводом сайта для отдельного пользователя. Она будет работать, только если пользователь установил язык перевода в настройках своего профиля или если он зарегистрировался в версии WordPress 4.7 или выше. Если пользователь не выбрал язык после обновления, локаль переключаться не будет.
Для проверки, была ли локаль переключена, можно использовать функцию is_locale_switched()
.
Хуки при переключении локали
При переключении локали срабатывают несколько событий:
change_locale
: Срабатывает, когда локаль была изменена. Ядро использует этот хук для пере-создания типов записей и таксономий.switch_locale
: Срабатывает, когда локаль переключена.restore_previous_locale
: Срабатывает, когда локаль возвращается к предыдущей.
Пример 1: Переключение языка сайта на лету
Предположим, ваш сайт работает на русском языке, но вы хотите, чтобы админка отображалась на английском. Вы можете сделать это следующим образом:
if (is_admin()) {
switch_to_locale('en_US');
}
Кроме того, вы можете использовать хук для автоматического переключения локали:
add_action('init', function() {
switch_to_locale('en_US');
});
Этот код будет выполняться на этапе инициализации WordPress и переключит локаль на английскую.
Пример 2: Установка языка админки по условию
Вы можете определить локаль пользователя на основе его IP-адреса и записать эти данные в куки user_locale
. Это позволит выставить язык сайта в зависимости от страны, из которой пришел пользователь:
add_action('init', function() {
if (isset($_COOKIE['user_locale'])) {
switch_to_locale($_COOKIE['user_locale']);
}
});
В этом примере, если куки user_locale
установлены, функция переключит локаль на ту, которая указана в куки.
Пример 3: Проверка переключенной локали
Вы также можете проверить, была ли локаль успешно переключена, используя функцию is_locale_switched()
:
add_action('init', function() {
switch_to_locale('en_US');
if (is_locale_switched()) {
echo "Локаль была успешно переключена на английский.";
}
});
Заключение
Функция switch_to_locale()
предоставляет разработчикам мощный инструмент для управления языком интерфейса в WordPress. Используя её, вы можете легко адаптировать контент и интерфейс под предпочтения отдельных пользователей, что может значительно улучшить пользовательский опыт на многоязычных сайтах. С помощью приведенных примеров вы можете легко интегрировать эту функцию в ваши темы и плагины.