Локализация кодировки
19.07.2010Голосование
| Тип | Ошибка |
| Состояние | Исправлено |
| Приоритет | Средний |
| Версия | 3.56 |
| Система | * |
| Воспроизводимость | Нет |
| Автор | Блоголётчик |
| Исполнитель | Блоголётчик |
Выяснилось, что на некоторых хостингах, где для php установлена по умолчанию локализация отличная от английского могут возникать проблемы перевода даты на язык локализцлокализации. Проще говоря, если установить в php setlocale(LC_ALL, 'ru_RU'), то то даты портятся, а именно они получаются в кодировке windows. Связано это с поведением функции strftime, на которую влияет установленая локаль.
Способ лечения - отказаться внутри движка отиспользования функции strftime, а все существующие форматы времени перевести на формат для функции date. Сложность перехода еще в том, что придется править темы, в которых есть шаблоны времени: эти шаблоны как раз для функции strftime.
Альтернативный способ лечения это не отказываться от функции strftime, а полученный результать конвертировать в utf8. Положительный момент этого решения в том, что для некоторых языков не нужно будет прописывать секцию date в языковом файле, а обойтись имеющимся значениями названий в php. Как минус - надо будет проверять наличие той или иной кодировки и в случае ее отсутствия все равно необходима секция date в языковом файле.
← Ранее перекрытие метода класса
Позже Ошибка блог клиента →
Комментарии (7) на запись “Локализация кодировки”
Оставить комментарий
А можно перевести это на понятный язык?:) Желательно второй вариант "не отказываться от функции strftime, а полученный результать конвертировать в utf8".
Как это можно реализовать?
Один из способов это например в корне index.php добавить строку
setlocal('en');
второй способ это переводить текст в кодирову utf8. Я скорее всего откажусь от strftime в следующих версиях
setlocale(LC_ALL, array('en', 'en_EN', 'en_US', 'en_BG'));
Вставляю в начало. Последний вариант тоже не срабатывает.
Уберу архивы до апдейта.