SWITCH_TO_LOCALE() │ WP 4.7.0
Функция SWITCH_TO_LOCALE()
позволяет программно изменить язык сайта.
Это одна из многих функций, которые были добавлены в WordPress 4.7 для управления пе��еводом сайта для отдельного пользователя.
Что нужно знать
Эта функция будет работать, если пользователь выбрал язык перевода в настройках своего профиля, либо если он зарегистрирован на версии WordPress 4.7 или выше. Однако, если вы обновили версию сайта, а пользователь ещё не выбрал язык перевода, языковая настройка не изменится. Возможно, это будет исправлено в будущих версиях.
Чтобы проверить, переключён ли ваш язык, используйте функцию is_locale_switched()
.
События при смене языка
Когда происходит смена языка, срабатывают несколько событий:
- change_locale — срабатывает, когда язык уже был изменён. Эта функция используется для воссоздания типов постов и таксономий с правильным языком.
- switch_locale — срабатывает в момент переключения языка.
- restore_previous_locale — срабатывает, когда язык переключается обратно на предыдущий.
Вызовы
Использует: WP_Locale_Switcher::switch_to_locale()
Возвращаемое значение
Функция возвращает true
при успешном выполнении и false
в случае ошибки.
Пример использования
Для использования функции напишите следующий код:
switch_to_locale( $locale );
$locale
(string, обязательный) — название языка, на который нужно переключиться. Например:fr_FR
илиen_AU
.
Полный список доступных языков можно найти в документации WordPress.
Примеры
Пример 1: Переключение языка сайта на лету
Предположим, что наш сайт работает на русском, но мы хотим, чтобы админ-панель была на английском. Вставьте следующий код в файл functions.php
вашей темы:
if( is_admin() ){
switch_to_locale( 'en_US' );
}
Вы также можете сделать это с помощью хука:
add_action( 'init', function(){
switch_to_locale( 'en_US' );
});
Пример 2: Установка языка админ-панели по условию
Предположим, что мы определяем язык пользователя по его IP и сохраняем эту информацию в куки user_locale
. Таким образом, мы можем установить язык сайта на лету:
add_action( 'init', function(){
if( isset( $_COOKIE['user_locale'] ) ){
switch_to_locale( $_COOKIE['user_locale'] );
}
});
Примечания
- Глобальный:
WP_Locale_Switcher
. Объект переключателя языков WordPress.
Изменения
С версии 4.7.0 функция была внедрена.
Код функции
Код функции switch_to_locale
выглядит следующим образом:
function switch_to_locale( $locale ) {
global $wp_locale_switcher;
if ( ! $wp_locale_switcher ) {
return false;
}
return $wp_locale_switcher->switch_to_locale( $locale );
}
Связанные функции
-
Определение языка:
determine_locale()
get_locale()
get_user_locale()
is_locale_switched()
sanitize_locale_name()
-
Локализация:
__()
_e()
- ... и другие функции локализации.
Теперь вы знаете, как использовать функцию SWITCH_TO_LOCALE()
для управления языком вашего сайта WordPress!