То одна локаль используется, то другая
Привет. На разных страницах сайта применяется разная локаль: английская и русская. Нужна только последняя. Чтобы месяцы отображались по русски.
Вот доступные из русских:
ru_RU
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
Команда locale выводит:
[root@vm11010 ~]# locale
LANG=ru_RU.CP1251
LC_CTYPE=«ru_RU.CP1251»
LC_NUMERIC=«ru_RU.CP1251»
LC_TIME=«ru_RU.CP1251»
LC_COLLATE=«ru_RU.CP1251»
LC_MONETARY=«ru_RU.CP1251»
LC_MESSAGES=«ru_RU.CP1251»
LC_PAPER=«ru_RU.CP1251»
LC_NAME=«ru_RU.CP1251»
LC_ADDRESS=«ru_RU.CP1251»
LC_TELEPHONE=«ru_RU.CP1251»
LC_MEASUREMENT=«ru_RU.CP1251»
LC_IDENTIFICATION=«ru_RU.CP1251»
LC_ALL=
В файле i18n:
LANG=«ru_RU.CP1251»
SUPPORTED=«ru_RU.CP1251:ru_RU:ru»
SYSFONT=«latarcyrheb-sun16»
LC_ALL=«ru_RU.CP1251»
Файл testlocale.php
<?
//смотрим текущую локаль
echo setlocale(LC_ALL,"");
?>
выводит:
C
Как-будто значение LANG игнорируется. До этого сайт был на другом сервере. Всё было нормально. Новый хостинг с операционной системой centos. Для работы сайта применяется smarty.
Вот такой скрипт
<?
//смотрим текущую локаль
echo setlocale(LC_ALL,"");
echo «<br />»;
setlocale(LC_ALL, «ru», «ru_RU.CP1251», «ru_RU»);
echo «<br />»;
//опять смотрим чего установилось
echo setlocale(LC_ALL, 0);
echo «<br />»;
//смотрим по-каковски выводит дату
echo strftime(«%A %e %B %Y», mktime(0, 0, 0, 12, 22, 1978));
?>
показывает:
C
ru_RU.CP1251
Пятница 22 Декабрь 1978
Если setlocale(LC_ALL, «ru», «ru_RU.CP1251», «ru_RU»); закоментировать, то покажет:
C
C Friday 22 December 1978
Вот такая запутанная история. Если кто сталкивался, посоветуйте.