WordPress как на ладони
wordpress jino

switch_to_locale() WP 4.7.0

Позволяет программно переключить язык сайта.

Одна из нескольких функции введенных в WP 4.7 для управления переводом сайта для отдельного пользователя.

Функция будет работать только если пользователь установил какой-либо язык перевода в настройках профиля (любой даже «язык сайта»). Или если пользователь регистировался в версии WP 4.7 или выше. Но если вы обновили версию сайта, а пользователь еще не выбирал язык перевода, то локаль переключаться не будет. Возможно в будущем это поправят...

Чтобы проверить переключена ли локаль в текущий момент, используйте функцию is_locale_switched().

Хуки при переключении локали:

При переключении локали срабатывают несколько событий:

  • change_locale - срабатывает когда локаль уже изменена. Ядро использует его, чтобы пере-создать типы записей и таксономий.

  • switch_locale - срабатывает когда локаль переключена.

  • restore_previous_locale - срабатывает, когда локаль возвращена к предыдущей.
Работает на основе: WP_Locale_Switcher::switch_to_locale()

Хуков нет.

Возвращает

True/false. True on success, false on failure.

Использование

switch_to_locale( $locale );
$locale(строка) (обязательный)

Название локали, на которую нужно переключиться. Например: ru_RU или en_US.

Полный список локалей смотрите здесь

Примеры

#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'] );
}

Код switch to locale: wp-includes/l10n.php VER 4.9.1

<?php
function switch_to_locale( $locale ) {
	/* @var WP_Locale_Switcher $wp_locale_switcher */
	global $wp_locale_switcher;

	return $wp_locale_switcher->switch_to_locale( $locale );
}

Cвязанные функции

Из раздела: Локализация

switch_to_locale Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр