Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 06.04.2006, 16:43   #1
Олег
Продвинутый
 
Регистрация: 13.02.2006
Сообщений: 49
По умолчанию склонять русские слова после чисел

Задача, наверно, всем знакома:
"1 крокодил, 2 крокодила, ... 15 крокодилов"
Алгоритм тривиальный.
Вопрос - куда народ это подключает через TypoScript?
А конкретнее - в stdWrap?
Ну не вижу я там подходящих мест, чтобы вставить, не меняя саму ф-цию stdWrap. Если бы .wrap/.noTrimWrap были типа stdWrap - можно было бы туда засунуть, а приходится в собственной ф-ции и noTrimWrap реализовывать.
Пока родилось что-то вроде. Предложите что-нибудь покрасивее

TS:
includeLibs.user_declension = media/scripts/user_declension.php
page = PAGE
page.10 = TEXT
page.10 {
value = 555
preUserFunc = user_declension_cyr
preUserFunc.words = #| ответ#| ответа#| ответов#

PHP:

<?php

function declension_cyr($number, $words)
{
$number=abs($number);
if($number > 20) $number%=10;
if($number == 1) return ($words[0]);
if($number >= 2 && $number <= 4 ) return ($words[1]);
return $words[2];
}

function user_declension_cyr($val, $conf)
{
$variant = declension_cyr(intval($val), array_slice(explode($conf['splitChar'] ? $conf['splitChar'] : '#', $conf['words']), 1, 3));
$wrapArr = explode($conf['wrapChar'] ? $conf['wrapChar'] : '|', $variant);
return $wrapArr[0] . $val . $wrapArr[1];
}

?>
Олег вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:30.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория