LINUX.ORG.RU

То одна локаль используется, то другая

 ,


0

1

Привет. На разных страницах сайта применяется разная локаль: английская и русская. Нужна только последняя. Чтобы месяцы отображались по русски.

Вот доступные из русских:

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

Вот такая запутанная история. Если кто сталкивался, посоветуйте.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.