setlocale

(PHP 4, PHP 5, PHP 7, PHP 8)

setlocaleУстанавливает региональные настройки

Описание

setlocale(int $category, string $locales, string ...$rest): string|false

Альтернативная сигнатура (не поддерживается с именованными аргументами):

setlocale(int $category, array $locale_array): string|false

Функция устанавливает региональные параметры, или локаль.

Внимание

Информация о локали сохраняется для процесса, а не отдельно для каждого потока процесса. Программисты сталкиваются с внезапными изменениями настроек локали во время работы скрипта, если PHP работает с API многопоточного сервера, даже когда сам скрипт не вызывал функцию setlocale(). Это делают другие скрипты, которые работают в отдельных потоках одного процесса и одновременно функцией setlocale() изменяют региональные параметры целого процесса. Информация о региональных настройках в ОС Windows поддерживается для каждого потока с PHP 7.0.5.

Список параметров

category

Параметр category — именованная константа, которая определяет категорию функций, на которые будет влиять установка локали:

  • LC_ALL — всё нижеперечисленное
  • LC_COLLATE — сравнение строк, смотрите описание функции strcoll()
  • LC_CTYPE — классификация и преобразование символов, например, функция ctype_alpha()
  • LC_MONETARY — функция localeconv()
  • LC_NUMERIC — десятичный разделитель, смотрите описание функции localeconv()
  • LC_TIME — форматирование даты или времени функцией strftime()
  • LC_MESSAGES — системные сообщения; доступна, если PHP скомпилировали с поддержкой модуля libintl

locales

Функция возьмёт имена локалей из одноимённых переменных окружения или переменной с именем «LANG», если в параметр locales передали пустую строку "" или null.

Функция не изменит локаль, а вернёт текущее значение, если в параметр locales передали "0".

Функция будет перебирать элементы массива или аргументы по порядку как имена локали до тех пор, пока не установит локаль успешно, если в параметр locales передали массив или после этого аргумента следуют дополнительные аргументы. Этим пользуются, когда в разных системах имена одной и той же локали не совпадают, или когда требуется создать запасной вариант на случай отсутствия локали в системе.

rest

Необязательные аргументы в виде строк или массивов для установки настроек локали до первой успешной попытки.

locale_array

Каждый элемент массива совершает попытки установить новую локаль до первой успешной попытки. Это полезно, если в разных системах локаль известна под разными именами, или на случай запасного варианта при недоступности региональных настроек.

Замечание:

На ОС Windows вызов setlocale(LC_ALL, '') устанавливает имена локалей из системных региональных или языковых настроек, которые доступны в «Панели управления».

Возвращаемые значения

Функция возвращает имя вновь установленной локали или false, если система не поддерживает установку заданной локали, локаль не существует или передали недопустимое имя категории.

Недопустимое имя категории также вызывает предупреждение. Имена локалей и категорий описывают стандарты » RFC 1766 и » ISO 639. В разных системах схемы именования локалей разные.

Замечание:

Значение, которое возвращает функция setlocale(), зависит от системы, на которой запустили PHP. Функция возвращает то же значение, которое возвращает системная функция setlocale.

Примеры

Пример #1 Примеры использования функции setlocale()

<?php

/* Установка голландской локали */
setlocale(LC_ALL, 'nl_NL');

/* Выводит: vrijdag 22 december 1978 */
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));

/* Попытка установить разные локали для немецкого языка */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo
"Предпочтительная локаль для немецкого языка в этой системе: '$loc_de'";

?>

Пример #2 Примеры использования функции setlocale() в ОС Windows

<?php

/* Установка голландской локали */
setlocale(LC_ALL, 'nld_nld');

/* Выводит: vrijdag 22 december 1978 */
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978));

/* Попытка установить разные локали для немецкого языка */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo
"Предпочтительная локаль для немецкого языка в этой системе: '$loc_de'";

?>

Примечания

Подсказка

Полезную информацию о значениях параметра locales пользователям платформ Windows даёт раздел MSDN на сайте Microsoft. Языки, которые поддерживает ОС, перечисляет » документация по языковым строкам, а значения стран и регионов — » документация по строкам стран и регионов.