Изменение языка сайта с помощью функции SWITCH_TO_LOCALE()

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!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *