Забыли пароль?
Запросите новый здесь.

Автор темы: pvam
ID темы: 2188
Информация:
Тема содержит 1 сообщения, была просмотрена 3371 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Локализация
 Распечатать тему
Русскоязычная дата на портале
pvam
Особенности
Полная реализация русскоязычной записи даты на портале, включая отображение даты виде прошедшего периода.

Примеры
- 18 мая 2014
- Май, 18 2014
- только что

Реализация
Дополнение не затрагивает интерфейса. Для применения на различных версиях привожу только дополнительный код, который нужно вставить (поменять) в следующих файлах:

1) /locale/Russian/admin/settings.php
2) /locale/Russian/global.php
3) /administration/settings_time.php
4) /maincore.php

settings.php
Создаем идентификаторы формата даты.
В конце файла: все периоды можете оставить по своему усмотрению. Добавляем первую главную строчку и немного правим то что есть:
Загрузить источник  GeSHi: PHP
  1. $locale['dateformats'][] = "period";
  2. $locale['dateformats'][] = "%m/%d/%Y";
  3. $locale['dateformats'][] = "%d/%m/%Y";
  4. $locale['dateformats'][] = "%d-%m-%Y";
  5. $locale['dateformats'][] = "%d.%m.%Y";
  6. $locale['dateformats'][] = "%m/%d/%Y %H:%M";
  7. $locale['dateformats'][] = "%d/%m/%Y %H:%M";
  8. $locale['dateformats'][] = "%d-%m-%Y %H:%M";
  9. $locale['dateformats'][] = "%d.%m.%Y %H:%M";
  10. $locale['dateformats'][] = "%m/%d/%Y %H:%M:%S";
  11. $locale['dateformats'][] = "%d/%m/%Y %H:%M:%S";
  12. $locale['dateformats'][] = "%d-%m-%Y %H:%M:%S";
  13. $locale['dateformats'][] = "%d.%m.%Y %H:%M:%S";
  14. $locale['dateformats'][] = "%b %d %Y";
  15. $locale['dateformats'][] = "%d. %B %Y";
  16. $locale['dateformats'][] = "%d %B %Y";
  17. $locale['dateformats'][] = "%b %d %Y %H:%M";
  18. $locale['dateformats'][] = "%d. %B %Y %H:%M";
  19. $locale['dateformats'][] = "%d %B %Y %H:%M";
  20. $locale['dateformats'][] = "%b %d %Y %H:%M:%S";
  21. $locale['dateformats'][] = "%d. %B %Y %H:%M:%S";
  22. $locale['dateformats'][] = "%d %B %Y %H:%M:%S";
Добавлено за 0.051 секунд, используя GeSHi 1.0.8.10


global.php
Создаем массивы русскоязычного формирования даты
раздел // Full & Short Months пишем так:
Загрузить источник  GeSHi: PHP
  1. // Full & Short Months
  2. $locale['months'] = " |января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря";
  3. $locale['shortmonths'] = " |Январь|Февраль|Март|Апрель|Май|Июнь|Июль|Август|Сентябрь|Октябрь|Ноябрь|Декабрь";
  4. $locale['periods_name'] = "только что|5 минут назад|10 минут назад|20 минут назад|полчаса назад|час назад|2 часа назад|4 часа назад|12 часов назад|вчера|позавчера|3 дня назад|4 дня назад|5 дней назад|6 дней назад|на прошлой неделе|2 недели назад|3 недели назад|в прошлом месяце|2 месяца назад|3 месяца назад|полгода назад|в прошлом году|2 года назад|3 года назад|4 года назад|5 лет назад|6 лет назад|7 лет назад|8 лет назад|9 лет назад|10 лет назад|15 лет назад|20 лет назад|50 лет назад|в прошлом веке";
  5. $locale['periods_time'] = "120|300|600|1200|1800|3600|7200|14400|43200|86400|172800|259200|345600|432000|518400|604800|1209600|1814400|2592000|5270400|7862400|15768000|31536000|63072000|94608000|126144000|157680000|189216000|220752000|252288000|283824000|315360000|473040000|630720000|1576800000|3153600000|";
Добавлено за 0.031 секунд, используя GeSHi 1.0.8.10


settings_time.php
Создаем отображение выбора формата даты в админ-панели
ищем
Загрузить источник  GeSHi: PHP
  1. $timestamp = time()+($settings2['timeoffset']*3600);
  2. $date_opts = "<option value=''>".$locale['455']."</option>\n";
  3. foreach($locale['dateformats'] as $dateformat) {
  4. $date_opts .= "<option value='".$dateformat."'>".strftime($dateformat, $timestamp)."</option>\n";
  5. }
Добавлено за 0.019 секунд, используя GeSHi 1.0.8.10

меняем strftime на showdate, получаем
Загрузить источник  GeSHi: PHP
  1. $timestamp = time()+($settings2['timeoffset']*3600);
  2. $date_opts = "<option value=''>".$locale['455']."</option>\n";
  3. foreach($locale['dateformats'] as $dateformat) {
  4. $date_opts .= "<option value='".$dateformat."'>".showdate($dateformat, $timestamp)."</option>\n";
  5. }
Добавлено за 0.021 секунд, используя GeSHi 1.0.8.10


maincore.php
Формируем вывод даты.
Меняем полностью функцию showdate
Загрузить источник  GeSHi: PHP
  1. // Format the date & time accordingly
  2. function showdate($format, $val) {
  3. global $settings, $userdata, $locale;
  4. if (isset($userdata['user_offset'])) {
  5. $offset = $userdata['user_offset']+$settings['serveroffset'];
  6. } else {
  7. $offset = $settings['timeoffset']+$settings['serveroffset'];
  8. }
  9. $val = $val + ($offset * 3600);
  10. if ($format == "shortdate" || $format == "longdate" || $format == "forumdate" || $format == "newsdate") {
  11. $format = $settings[$format];}
  12. if ($format != "period") {
  13. $months_long = explode("|", $locale['months']);
  14. $months_short = explode("|", $locale['shortmonths']);
  15. $format = str_replace('%b', $months_short[intval(strftime('%m', $val))], $format);
  16. $format = str_replace('%B', $months_long[intval(strftime('%m', $val))], $format);
  17. return strftime($format, $val);
  18. } else {
  19. $period_name = explode("|", $locale['periods_name']);
  20. $period_time = explode("|", $locale['periods_time']);
  21. $period=time()-$val;
  22. foreach ($period_time as $period_num => $period_value) {
  23. if ($period_value >= $period) { $period_text=$period_name[$period_num]; break;} }
  24. return $period_text;
  25. }
  26. }
Добавлено за 0.024 секунд, используя GeSHi 1.0.8.10


Дополнительно
Если вы хотите видеть и использовать даты в виде "в прошлом веке" (ранее даты Unix) в каком-нибудь "Календаре событий", вы должны в полях с датой в БД включить отрицательные значения (Убрать по умолчанию установленный атрибут UNSIGNED)

к Примеру news_datestamp:
Загрузить источник  GeSHi: MySQL
  1. ALTER TABLE `prefix_news` CHANGE `news_datestamp` `news_datestamp` INT( 10 ) NOT NULL DEFAULT '0'
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.10
x2 x1 x1 x1 x1
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: