setlocale
(PHP 4, PHP 5, PHP 7)
setlocale — Устанавливает настройки локали
Описание
$category
, string $locale
, string ...$locales
) : string$category
, array $locale
) : stringУстанавливает настройки локали.
Информация о локали модифицируется во всем процессе, а не по каждому потоку отдельно. Если вы используете PHP на многопоточном сервере, вы можете обнаружить неожиданные изменения в настройках локали во время выполнения скриптов, никогда и не вызывавших setlocale(). Это происходит из-за того, что другие скрипты, запущенные в параллельных потоках данного процесса, в то же самое время поменяли настройки локали для всего процесса с помощью setlocale(). В Windows информация о локали поддерживается для каждого потока, начиная с PHP 5.6.20 и PHP 7.0.5 соответственно.
Список параметров
-
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
передан массив, или после этого аргумента следуют дополнительные аргументы, функция будет использовать элементы массива или аргументы по порядку в качестве имен локали до тех пор, пока установка локали не будет успешной. Это удобно, если одна и та же локаль имеет разное имя в различных системах, или для создания запасного варианта при отсутствии какой-либо локали в системе. -
locales
-
(Необязательные аргументы в виде строк или массивов для установки настроек локали до первой успешной попытки.)
Замечание:
На 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 найдут полезной информацию о значениях
locale
на сайте Microsoft
MSDN. Поддерживаемые языки перечислены в
» документации по языковым строкам, а значения
стран/регионов в
» документации по строкам стран/регионов.