get_locale()WP 1.5.0

Устанавливает глобальную переменную $locale и получает текущую локаль (язык сайта, например, en_US).

С WP 5.0 появилась функция determine_locale(), которая получает локаль в зависимости от текущего запроса. Для фронта вернет значение функции get_locale(), для админки вернет значение функции get_user_locale() и т.д.

До WP 4.0 локаль устанавливалась в константе WPLANG в файле wp-config.php. Теперь эта константа считается устаревшей.

Также есть опция WPLANG - get_option( 'WPLANG' ). Если она установлена, то эта функция вернет значение этой опции, а не значение установленное в настройках сайта.

Список локалей смотрите здесь.

Обычно эта функция используется в функциях подключения файлов перевода, например, load_textdomain().

Основа для: determine_locale()
1 раз — 0.000015 сек (очень быстро) | 50000 раз — 0.05 сек (скорость света)
Хуки из функции

Возвращает

Строку. Значение локали.

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

$locale = get_locale();

Примеры

0

#1 Посмотрим что у нас в локали в текущий момент:

echo get_locale();
// получим 'ru_RU', если сайт на русском
0

#2 Как установить локаль на сервере

Этот пример показывает как установить локаль LC_MONETARY. Если базовая локаль не установлена, то укажем локаль 'en_US' жестко:

setlocale( LC_MONETARY, get_locale() );
$my_local_settings = localeconv();
if( $my_local_settings['int_curr_symbol'] == '' )
	  setlocale( LC_MONETARY, 'en_US' );
0

#3 Как посмотреть значение установленной локали:

setlocale( LC_MONETARY, get_locale() );
$my_local_settings = localeconv();
print_r( $my_local_settings );

Заметки

  • Global. Строка. $locale The current locale.
  • Global. Строка. $wp_local_package Locale code of the package.

Список изменений

С версии 1.5.0 Введена.

Код get_locale() WP 6.4.3

function get_locale() {
	global $locale, $wp_local_package;

	if ( isset( $locale ) ) {
		/** This filter is documented in wp-includes/l10n.php */
		return apply_filters( 'locale', $locale );
	}

	if ( isset( $wp_local_package ) ) {
		$locale = $wp_local_package;
	}

	// WPLANG was defined in wp-config.
	if ( defined( 'WPLANG' ) ) {
		$locale = WPLANG;
	}

	// If multisite, check options.
	if ( is_multisite() ) {
		// Don't check blog option when installing.
		if ( wp_installing() ) {
			$ms_locale = get_site_option( 'WPLANG' );
		} else {
			$ms_locale = get_option( 'WPLANG' );
			if ( false === $ms_locale ) {
				$ms_locale = get_site_option( 'WPLANG' );
			}
		}

		if ( false !== $ms_locale ) {
			$locale = $ms_locale;
		}
	} else {
		$db_locale = get_option( 'WPLANG' );
		if ( false !== $db_locale ) {
			$locale = $db_locale;
		}
	}

	if ( empty( $locale ) ) {
		$locale = 'en_US';
	}

	/**
	 * Filters the locale ID of the WordPress installation.
	 *
	 * @since 1.5.0
	 *
	 * @param string $locale The locale ID.
	 */
	return apply_filters( 'locale', $locale );
}