(PHP 4, PHP 5, PHP 7, PHP 8)
setlocale — Устанавливает настройки локали
$category
, string $locales
, string ...$rest
): string|falseАльтернативная сигнатура (не поддерживается с именованными аргументами):
$category
, array $locale_array
): string|falseУстанавливает настройки локали.
Информация о локали модифицируется во всем процессе, а не по каждому потоку отдельно. Если вы используете PHP на многопоточном сервере, вы можете обнаружить неожиданные изменения в настройках локали во время выполнения скриптов, никогда и не вызывавших 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
Если в качестве locales
передана пустая строка
""
или null
, имена локалей будут взяты из одноимённых
переменных окружения или переменной с именем "LANG".
Если в качестве 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'";
?>
Пользователи Windows найдут полезной информацию о значениях
locales
на сайте Microsoft
MSDN. Поддерживаемые языки перечислены в
» документации по языковым строкам, а значения
стран/регионов в
» документации по строкам стран/регионов.