(PHP 4, PHP 5, PHP 7)
setlocale — Устанавливает настройки локали
$category
, string $locale
[, string $...
] ) : string$category
, array $locale
) : stringУстанавливает настройки локали.
category
Параметр category
- это именованная константа,
определяющая категорию функций, на которые будет влиять установка локали:
LC_ALL
- все нижеперечисленное
LC_COLLATE
- функции сравнения строк, см.
strcoll()
LC_CTYPE
- функции преобразования и классификации строк, например
strtoupper()
LC_MONETARY
- для функции localeconv()
LC_NUMERIC
- задает символ десятичного разделения (см. также
localeconv())
LC_TIME
- форматирование даты/времени функцией
strftime()
LC_MESSAGES
- для системных сообщений (доступна, если PHP был скомпилирован с поддержкой
libintl)
locale
Если в качестве locale
передана пустая строка
"" или NULL
, имена локалей будут взяты из одноименных
переменных окружения или переменной с именем "LANG".
Если в качестве locale
передан
"0", локаль изменена не будет, а будет возвращено
текущее значение.
Если в качестве locale
передан массив, или
после этого аргумента следуют дополнительные аргументы, функция будет
использовать элементы массива или аргументы по порядку в качестве
имен локали до тех пор, пока установка локали не будет успешной.
Это удобно, если одна и та же локаль имеет разное имя в различных
системах, или для создания запасного варианта при отсутствии какой-либо локали в системе.
...
(Необязательные аргументы в виде строк или массивов для установки настроек локали до первой успешной попытки.)
Замечание:
На Windows setlocale(LC_ALL, '') устанавливает имена локалей из системных региональных/языковых настроек (доступных через Панель Управления).
Возвращает имя вновь установленной локали или FALSE
, если
система не поддерживает установку локали, указанная локаль не
существует или передано недопустимое имя категории.
Недопустимое имя категории также вызывает предупреждение. Имена локалей и категорий описаны в » RFC 1766 и » ISO 639. Разные системы имеют различные схемы именования локалей.
Замечание:
Возвращаемое функцией setlocale() значение зависит от системы, на которой запущен PHP. Она возвращает точно то же значение, что и системная функция setlocale.
Версия | Описание |
---|---|
7.0.0 |
Удалена поддержка для параметра category , передаваемого
как строка. С текущей версии можно пользоваться только константами LC_*.
|
5.3.0 |
Эта функция в настоящее время бросает уведомления E_DEPRECATED ,
если строка передается в параметре category вместо одной из
констант LC_*.
|
Пример #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'";
?>
Информация о локали модифицируется во всем процессе, а не по каждому потоку отдельно. Если вы используете PHP на многопоточном сервере, таком как IIS, HHVM или Apache под Windows, вы можете обнаружить неожиданные изменения в настройках локали во время выполнения скриптов, никогда и не вызывавших setlocale(). Это происходит из-за того, что другие скрипты, запущенные в параллельных потоках данного процесса, в то же самое время поменяли настройки локали для всего процесса с помощью setlocale().
Пользователи Windows найдут полезной информацию о значениях
locale
на сайте Microsoft
MSDN. Поддерживаемые языки перечислены в
» документации по языковым строкам, а значения
стран/регионов в
» документации по строкам стран/регионов.