Перейти к содержанию
Форум поддержки пользователей VamShop

Ошибка вывода даты в накладной и счете


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

Способ оплаты: Оплата наличными при получении

Номер заказа: 14

Дата: їЮЭХФХЫмЭШЪ 23 °ЯаХЫм, 2007

Глючат кодировки при печати счета или накладной в заказах. Это особенность хостинга или настройки магазина? В других местах админки с датами все ОК.

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

Я в текущей версии уже сделал, что б даты выводились по-русски вне зависимости от настроек сервера.

Ты можешь у себя исправить следующим образом:

1. Открывай файл /lang/russian/admin/russian.php

Меняй:


setlocale(LC_TIME, 'ru_RU.CP1251', 'Russian');

[/code] На:
[code]
function vam_date_long_translate($date_string) {
$eng = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
$loc = array("Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье", "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря");
return str_replace($eng, $loc, $date_string);
}


@setlocale(LC_TIME, 'en_US');

2. В файле /admin/includes/functions/general.php меняй:

return strftime(DATE_FORMAT_LONG, mktime($hour, $minute, $second, $month, $day, $year));

}

[/code] На:
[code]
if (function_exists('vam_date_long_translate'))
return vam_date_long_translate(strftime(DATE_FORMAT_LONG, mktime($hour,$minute,$second,$month,$day,$year)));
}

Ссылка на сообщение
Поделиться на другие сайты
  • 5 months later...

Так и не понял, почему ошибка.

Временно исправить проблему с кодировкой дат лучше так:

В файле /inc/vam_date_long.inc.php заменить:


    if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false;

    $year = (int)substr($raw_date, 0, 4);
    $month = (int)substr($raw_date, 5, 2);
    $day = (int)substr($raw_date, 8, 2);
    $hour = (int)substr($raw_date, 11, 2);
    $minute = (int)substr($raw_date, 14, 2);
    $second = (int)substr($raw_date, 17, 2);

  if (function_exists('vam_date_long_translate'))
    return vam_date_long_translate(strftime(DATE_FORMAT_LONG, mktime($hour,$minute,$second,$month,$day,$year)));

    return strftime(DATE_FORMAT_LONG, mktime($hour,$minute,$second,$month,$day,$year));
  }
[/code] на:
[code]
    if ( ($raw_date == '0000-00-00 00:00:00') || empty($raw_date) ) return false;

    $year = substr($raw_date, 0, 4);
    $month = (int)substr($raw_date, 5, 2);
    $day = (int)substr($raw_date, 8, 2);
    $hour = (int)substr($raw_date, 11, 2);
    $minute = (int)substr($raw_date, 14, 2);
    $second = (int)substr($raw_date, 17, 2);

    if (@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {
      return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, $year));
    } else {
      return ereg_replace('2037' . '$', $year, date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, 2037)));
    }
  }

Тогда дата будет цифровая, т.е. числами, а не текстом.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 month later...

Отчего проблема с датами вроде бы выяснил, почему-то setlocale, которая ставится в языковой файле /lang/russian/russian.php - не работает!

Нужно в коркнретных файлах, где проблема с кодировкой даты, т.е. в

/admin/stats_campaigns.php

/admin/print_oder.php

/admin/print_packingslip.php

/print_order.php

/print_product_info.php

Вот во всех этих файлах, после подключения application_top.php нужно добавить следующее:


@setlocale(LC_ALL, 'ru_RU.UTF8');
[/code] Либо:
[code]
@setlocale(LC_ALL, 'ru_RU.CP1251');

Если VaM Shop версии НИЖЕ 1.35

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...