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

# setlocale

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

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

### Описание

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

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

function 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`.

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

Версия | Описание
--- | ---
8.5.0 | Передача целого числа `0` в качестве аргумента `locales` больше не поддерживается и теперь выбрасывает ошибку TypeError.

### Примеры

Пример #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()

    <?php
    /* Получение текущих настроек */
    $current = setlocale(LC_ALL, null);

    echo "Текущая локаль '$current'";
    ?>

Пример #3 Примеры установки локали функцией 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. Языки, которые поддерживает ОС, перечисляет » документация по языковым строкам, а значения стран и регионов — » документация по строкам стран и регионов.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open