Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 020 089 раз!

Форум

Добро пожаловать, Гость!

Отсутствует русская локаль

Обсуждение вопросов на другие темы связанные с веб-разработкой
tank5400
Сообщения: 3
C нами: 1 год 3 мес

Непрочитанное сообщение tank5400 » 21 авг 2015, 13:15

Всем привет. Обнаружил проблему. Если в файле php задать setlocale одним из значений "russian" "rus" "ru" "ru_RU" или "ru_RU.UTF-8" локаль не меняется на русскую. Наример, август выводится как august

Аватара пользователя
Максим
Сообщения: 4874
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 21 авг 2015, 13:43

Может у вас Windows английская? Там русской локали нет, как бы вы её не включали. Если же русская локаль у вас есть, то под Windows вы её неверно включаете, потому что в Windows нет ru_RU или ru_RU.UTF-8. В русской винде к примеру есть такие значения:

LC_ALL=Russian_Russia.65001
LC_COLLATE=Russian_Russia.65001
LC_CTYPE=Russian_Russia.1251
LC_MONETARY=Russian_Russia.65001
LC_NUMERIC=Russian_Russia.65001
LC_TIME=Russian_Russia.65001

В скриптах можно указать только те локали (региональные стандарты) которые присутствуют в операционной системе.

tank5400
Сообщения: 3
C нами: 1 год 3 мес

Непрочитанное сообщение tank5400 » 21 авг 2015, 17:54

Максим писал(а):Может у вас Windows английская? Там русской локали нет, как бы вы её не включали. Если же русская локаль у вас есть, то под Windows вы её неверно включаете, потому что в Windows нет ru_RU или ru_RU.UTF-8. В русской винде к примеру есть такие значения:

LC_ALL=Russian_Russia.65001
LC_COLLATE=Russian_Russia.65001
LC_CTYPE=Russian_Russia.1251
LC_MONETARY=Russian_Russia.65001
LC_NUMERIC=Russian_Russia.65001
LC_TIME=Russian_Russia.65001

В скриптах можно указать только те локали (региональные стандарты) которые присутствуют в операционной системе.

нет windows 10 русская (до этого была windows 8, та же проблема). причем выгружал на обычный хостинг, выводится как положено.
LC_ALL=Russian_Russia.65001 также не подходит

Аватара пользователя
Максим
Сообщения: 4874
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 21 авг 2015, 19:08

tank5400, значит ваш скрипт не использует strftime и выводит дату напрямую через date(). Используйте strftime для форматирования даты и времени с учетом локали.

tank5400
Сообщения: 3
C нами: 1 год 3 мес

Непрочитанное сообщение tank5400 » 22 авг 2015, 10:58

Максим писал(а):tank5400, значит ваш скрипт не использует strftime и выводит дату напрямую через date(). Используйте strftime для форматирования даты и времени с учетом локали.


В том-то и дело, что скрипт выводит дату через strftime . Но почему-то такая проблема именно на open server.

[upd=1440242036][/upd]
Просто непонятно, если open server - это имитация сервера, почему в нем отсутствуют локали, которые присутствуют на обычном стандартном хостинге. Можно было бы добавить их туда - и все бы работало

Аватара пользователя
Максим
Сообщения: 4874
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 22 авг 2015, 16:03

tank5400 писал(а):LC_ALL=Russian_Russia.65001 также не подходит


Значит юникодная кодировка для локали под windows так и не работает (в php это давно). Используйте русскую Russian_Russia.1251:

echo ucfirst(strftime("%A %d %B %Y %X<br>"));
setlocale(LC_ALL,'Russian_Russia.1251');
echo ucfirst(strftime("%A %d %B %Y %X<br>"));

Результат:
Saturday 22 August 2015 17:01:14
Суббота 22 Август 2015 17:01:14


tank5400 писал(а):если open server - это имитация сервера, почему в нем отсутствуют локали


Open Server не имеет отношения к локалям, это всё зависит от операционной системы, в данном случае Windows.


Вернуться в «Оффтоп и другие темы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя