Склоняем название месяца

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

Вот что должно получиться

Итак, представьте, что дата в шапке форума у вас отображается как 8 Сентябрь 2011.

Для исправления данного безобразия попробуйте сделать следующее. Откройте Subs.php, найдите блок:

if (setlocale(LC_TIME, $txt['lang_locale']))
    {
        if (!isset($non_twelve_hour))
            $non_twelve_hour = trim(strftime('%p')) === '';
        if ($non_twelve_hour && strpos($str, '%p') !== false)
            $str = str_replace('%p', (strftime('%H', $time) < 12 ? $txt['time_am'] : $txt['time_pm']), $str);

        foreach (array('%a', '%A', '%b', '%B') as $token)
            if (strpos($str, $token) !== false)
                $str = str_replace($token, !empty($txt['lang_capitalize_dates']) ? $smcFunc['ucwords'](strftime($token, $time)) : strftime($token, $time), $str);
    }
    else
    {
        // Do-it-yourself time localization.  Fun.
        foreach (array('%a' => 'days_short', '%A' => 'days', '%b' => 'months_short', '%B' => 'months') as $token => $text_label)
            if (strpos($str, $token) !== false)
                $str = str_replace($token, $txt[$text_label][(int) strftime($token === '%a' || $token === '%A' ? '%w' : '%m', $time)], $str);

        if (strpos($str, '%p') !== false)
            $str = str_replace('%p', (strftime('%H', $time) < 12 ? $txt['time_am'] : $txt['time_pm']), $str);
    }

и поменяйте на:

// Do-it-yourself time localization.  Fun.
    foreach (array('%a' => 'days_short', '%A' => 'days', '%b' => 'months_short', '%B' => 'months') as $token => $text_label)
        if (strpos($str, $token) !== false)
            $str = str_replace($token, $txt[$text_label][(int) strftime($token === '%a' || $token === '%A' ? '%w' : '%m', $time)], $str);

    if (strpos($str, '%p') !== false)
        $str = str_replace('%p', (strftime('%H', $time) < 12 ? $txt['time_am'] : $txt['time_pm']), $str);

Кроме того, если сайт работает на UNIX-хостинге, попробуйте убрать 0 из обозначения текущего числа: вместо 08 сентября 2011 отобразится 8 сентября 2011.

Для этого зайдите в Общие настройки форума и найдите опцию Формат времени по умолчанию. Поменяйте %d на %e.

Плюсануть
Поделиться
Класснуть