Web студия "GrandView"
  Главная   Написать Контакты
   
   
О проекте
Руководство php
 

setlocale

(PHP 3, PHP 4, PHP 5)

setlocale -- Устанавливает локаль

Описание

string setlocale ( mixed category, string locale [, string ...] )

string setlocale ( mixed category, array locale )

category - строка или константа, задающая категорию функций, на которые будет влиять установка локали:

  • LC_ALL - все функции

  • LC_COLLATE - функции сравнения строк, см. strcoll()

  • LC_CTYPE - функции преобразования строк, например strtoupper()

  • LC_MONETARY - функция localeconv()

  • LC_NUMERIC - задает символ десятичной точки (см. также localeconv())

  • LC_TIME - форматирование дат функцией strftime()

Замечание: Начиная с 4.2.0, передача category в виде строки не поддерживается, рекомендуется использовать перечисленные константы. Передача этих констант как строк (в кавычках) вызовет вывод предупреждения.

Если в качестве locale передана пустая строка "", имена локалей будут взяты из соответствующих переменных окружения или переменной с именем "LANG".

Если в качестве locale передан NULL или "0", локаль изменена не будет, а будет возвращено текущее значение.

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

Замечание: Передача нескольких локалей доступна начиная с PHP 4.3.0

Setlocale возвращает имя вновь установленной локали или FALSE если системе не поддерживает установку локали, указанная локаль не существует или передано недопустимое имя категории. Недопустимое имя категории также вызывает предупредение. Имена локалей и категорий описаны в RFC 1766 и ISO 639.

Замечание: Возвращаемое функцией setlocale() значение зависит от системы - это значение, возвращаемое системной функцией setlocale.

Подсказка: Полезная информация о значениях аргумента locale в Windows содержится на сайте MSDN. Поддерживаемые языки перечислены здесь: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_language_strings.asp, поддерживаемые коды стран/регионов - здесь: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_country_strings.asp. Windows поддерживает трехбуквенные коды стран/регионов, определенные в стандарте ISO 3166-Alpha-3, который можно найти на этом сайте Unicode.

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

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

Пример 2. Примеры использования setlocale() в Windows

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

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

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



sha1_file> <rtrim
Last updated: Sat, 27 Jan 2007
 
add a note add a note User Contributed Notes
setlocale
Periklis
13-Sep-2007 02:33
In *some* Windows systems, setting LC_TIME only will not work, you must either set LC_ALL or both LC_CTYPE and LC_TIME. BUT if you have already set LC_TIME using setlocale earlier in the script, dates will not be affected! For example:
<?php
setlocale
(LC_TIME, 'greek');
setlocale(LC_CTYPE, 'greek');
?>
will not work, while
<?php
setlocale
(LC_CTYPE, 'greek');
setlocale(LC_TIME, 'greek');
?>
will do the job.
mvanbaak
09-May-2007 05:03
To complement Sven K's tip about debian:

You can also install the package locales-all
That one holds all the locales there are in compiled form.
szepeshazi at gmail dot com
18-Feb-2007 07:11
For those of you who are unfortunate enough (like me) to work in Windows environment, and try to set the locale to a language _and_ to UTF-8 charset, and were unable to do it, here is a workaround.

For example to output the date in hungarian with UTF-8 charset, this will work:

    $dateString = "%B %d., %A";
    setlocale(LC_ALL,'hungarian');
    $res=strftime($dateString);
    echo(iconv('ISO-8859-1', 'UTF-8', $res));

If anybody knows how to set the locale on Windows to the equivalent of "hu_HU.UTF-8" on unix, please do tell me.
lifeless
20-Nov-2006 09:40
if your server is an ubuntu (debian like)
you need to install the locales you want (default is english and your language) go to aptitude and install -language-pack-*-base it will resolve dependencies and will try to install a suggested package, remove it if you don't care and proceed.
Clayton Smith
26-Sep-2006 11:15
If you already have all the locales installed and "locale -a" is only showing a few languages, then edit /etc/locale.gen and add a line, e.g., es_MX ISO-8859-1.  After you add the line, run the command locale-gen for it to generate the locales based on those settings.
grmela at removethis ent cz
06-Sep-2006 02:58
Just in case you freshly installed some new locales and they doesn't seem to work with setlocale(), don't forget to restart your webserver. It may save you some time browsing your code trying to fix it there :)
Sven K
07-Jun-2006 03:08
If your system doesn't show any installed locales by "locale -a", try installing them by "dpkg-reconfigure locales" (on debian).
08-Mar-2006 12:17
The example from bruno dot cenou at revues dot org below shows the possibility, but I want to spell it out: you can add charset info to setlocale.

Example:

Into my utf-8-encoded page I want to insert the name of the current month, which happens to be March, in German "M
Новости
11 июля 2007
Сайт запущен
© 2007 info@grandviewstudio.com

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 324

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/sites/grandviewstudiocom/www/65f67d67a94ad980786580ae69e11c07/sape.php on line 330
Z058440144362 Z348613067571