Перейти к контенту
  • 0

[FAQ] Русские числа и даты на Windows-хостинге


Вопрос

Довелось помогать конвертировать в тройку под Win. Решил баг с датами и числами. Решение в три шага:

 

1. Если у вас даты выводятся на английском, то в настройках языка выставляем "Локаль" = "Russian" или "rus" - добиваемся кракозябр. Если даты сразу же кракозябрами - этот этап пропускаем.

 

2. Заменяем файл /admin/sources/classes/class_localization.php на файл из аттача:

class_localization4.php.zip

 

3. Радуемся.

 

Рашение основано на использовании постобработки через iconv всех системных выводов.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Мелкий неприятный остаток - в профиле в списке тем и сообщений пользователя остаются в датах кракозябры. Это происходит потому, что IPS сами порой забывают (не знают) про свои же классы локализации и шапрят даты напрямую. Решение простое. В шаблоне "Профили пользователей > tabSingleColumn" заменить строку:

	<p class='posted_info'>{$this->lang->words['posted']} {$row['_date_array']['mday']} {$row['_date_array']['smonth']} {$row['_date_array']['year']}</p>

 

на строку:

	<p class='posted_info'>{$this->lang->words['posted']} {$row['_post_date']}</p>

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да я уже разве что только в космосе не искал решение этой проблемы.

 

Спасибо. Не силен в этих делах на судя по описанию процесс не сложный.

 

Мелкий неприятный остаток - в профиле в списке тем и сообщений пользователя остаются в датах кракозябры. Это происходит потому, что IPS сами порой забывают (не знают) про свои же классы локализации и шапрят даты напрямую. Решение простое. В шаблоне "Профили пользователей > tabSingleColumn" заменить строку:

 

у меня этой проблемы нет на 3.1.2.

 

Сделал все как Вы указали в первом посту.

Изменено пользователем buskopan
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Доброго времени суток!

 

Краказябры нашлись. В календаре и некоторых дополнительных полях профиля пользователя.

 

поправки в tabSingleColumn не исправили ситуацию.

post-89633-079572900 1287110076_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хм, странно, я поддерживаю один форум на win-хостинге. В 3.1.х даты нормально отображаются и без велосипедов оО

 

Посмотрю сегодня, может я просто забыл что все же правил что-то :)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Форум 312 изначально оригинальный английский, русификация сверху.

Сделал 2 пункта - даты всё равно на английском... "October 2010" :(

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Нде... а выше на один пост прочитать?

 

Повторю на всякий случай... IPB312, сделал 1 и 2 пункт в точности... но на форуме всё равно английские месяца... :(

Отправлено 10 September 2010
Регистрация:  10-September 10

Изменено пользователем VoprosIPB
Ссылка на комментарий
Поделиться на других сайтах

  • 0
настройках языка выставляем "Локаль" = "Russian" или "rus"

 

У вас же Windows-хостинг? Пробуйте по-очереди:

RU
Russian
rus
Russian_Russia
ru-RU.utf8

И так далее... К сожалению, не знаю как получить список локалей для PHP под Win, поэтому решал всегда перебором. На разных win-серверах разные значения срабатывают, и еще тут важен регистр :)

 

А вот официальный ответ от разработчиков:

Ultimately, it's a server limitation. If you need UTF-8, and Windows doesn't support it, don't use Windows. This is not an issue with IPB specifically. You'd have the same problem with any PHP script.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
У вас же Windows-хостинг? Пробуйте по-очереди:

Хостинг - UNIX...

 

При замене стандартного шаблона дизайна на другой - п.2 меняется или нет?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

К сожалению, не знаю как получить список локалей для PHP под Win

Увы не как. Только через Regional and Language Options.

Но как правило везде "Russian_Russia.65001" Только в английской версии от этого не легче.

 

Хостинг - UNIX...

А тема называется: Русские числа и даты на Windows-хостинге

 

Хостинг Zenon. Local = ru_RU.UTF-8

 

При замене стандартного шаблона дизайна на другой - п.2 меняется или нет?

Нет

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ritsuka, Ph-A

А тема называется: Русские числа и даты на Windows-хостинге

Ох, прошу прощения! Тороплюсь немного, не заметил. :unsure:

 

Хостинг Zenon. Local = ru_RU.UTF-8

Ура, появились кракозябры! :D

Отправлено 10 сентября 2010

Хотя я уже сделал п.2 и п.4 (tabSingleColumn)... в чём недоделка? :(

Получил русское слово "сентября" декодером, перекодировал так: "CP1251 → UTF-8"

Изменено пользователем VoprosIPB
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хотя я уже сделал п.2 и п.4 (tabSingleColumn)... в чём недоделка? :(

Тем что решения для Windows - хостинга.

 

 

 

P.S. прикрепленный файл class_localization.php от 3.0.5. У вас 3.1.2

Ссылка на комментарий
Поделиться на других сайтах

  • 0
VoprosIPB, на Linux-хостинге ничего не нужно. Верните оригинальный файл и поставье указанную "ru_RU.UTF-8" локаль - все должно прийти в норму :)
Ссылка на комментарий
Поделиться на других сайтах

  • 0

УРЯЯ! Русские месяцы! :D

Всем большое спасибо! :x:

 

PS Рекомендую переименовать топик в просто: [FAQ] Русские числа и даты

И добавить в начале текст типа: если у вас хостинг UNIX - достаточно только правильно выставить кодировку, правильное название которой спросите у своего хостера, а файл менять не нужно.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

VoprosIPB, на Linux-хостинге ничего не нужно. Верните оригинальный файл и поставье указанную "ru_RU.UTF-8" локаль - все должно прийти в норму :)

 

Сегодня вдруг обнаружил что месяца стали на английском, хотя до этого всё было в норме.

Хостинг UNIX, полез посмотрел локаль в админке, стоит ru_RU.UTF-8

 

Подскажите, куда копать?

 

UPD

 

Залил вот такой скриптик:

 

<?php
$locale= NULL;
$a = setlocale(LC_ALL, $locale);
if ($a!==false) echo "Locale <b>$a</b> is set!";
else echo "Locale <b>$locale</b> is NOT supported at this hosting";

 

Выдало следующее:

 

Locale C is set!

 

Терроризировать хостера? Что говорить? :)

 

UPD 2

 

Модифицировал скрипт так:

 

<?php
$locale= "ru_RU.UTF-8";
$a = setlocale(LC_ALL, $locale);
if ($a!==false) echo "Locale <b>$a</b> is set!";
else echo "Locale <b>$locale</b> is NOT supported at this hosting";

 

Получил следующее:

Locale ru_RU.UTF-8 is NOT supported at this hosting

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ответ от техподдержки:

 

Добрый день. На сервере используются следующие локали:

ru_RU.cp1251

ru_RU.koi8r

ru_RU.utf8

 

 

В настройках форума поменяйте ru_RU.UTF-8, на ru_RU.utf8

 

Изменил, не помогло!

 

xxxxxxxx@server ~ $ locale -a

C

POSIX

ru_RU.cp1251

ru_RU.koi8r

ru_RU.utf8

Изменено пользователем dengol
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Сегодня вдруг обнаружил что месяца стали на английском, хотя до этого всё было в норме.

Дергать хостера, что они сделали.

 

В настройках форума поменяйте ru_RU.UTF-8, на ru_RU.utf8

 

Изменил, не помогло!

Должно помочь.

Если нет, то на shared решит только хостер.

 

xxxxxxxx@server ~ $ locale -a

Да. locale -a единственный способ под Linux(FreeBSD) посмотреть доступные локали.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.