
Меня уже давно занимала мысль о том, как некрасиво и не верно смотрятся такие записи: 100 комментарий, Ответов : 3 и так далее.
Я нашел достаточно простой и быстрый способ решения этой проблемы. Мой скрипт поможет правильно расставить существительные в правильной форме и ваши записи превратятся в 100 комментариев и 3 ответа. Скрипт работает во всех браузерах. Пример использования скрипта можно посмотреть в моем блоге.
Для установки скрипта, скажем, в ваш блог, поместите число комментариев в span* с соответствующим классом**. Пример:
Code
<!-- Было -->
Комментарии:<b>$COMMENTS_NUM$</b>
<!-- Стало -->
<b><span class='comms'>$COMMENTS_NUM$</span></b>
Комментарии:<b>$COMMENTS_NUM$</b>
<!-- Стало -->
<b><span class='comms'>$COMMENTS_NUM$</span></b>
Так же можно поступить и с другими величинами - голосами, прочтениями и так далее. Каждая из этих величин должна стоять в span с отдельным классом.
Затем в конец страницы вставьте скрипт:
Code
<script type="text/javascript">
setNum = function(c,n){
var a,b,i,d;
a = document.all||document.getElementsByTagName('*');
for(b=0;b<a.length;b++){if(new RegExp("(^|\\b)"+c+"(\\b|$)").test(a[b].className)){
i = function(){
d = parseFloat(a[b].innerHTML);
if(!d){return n[2]}else
if(d%1){return n[1]}else
if(/(11|12|13|14|5|6|7|8|9|0)$/.test(d)){return n[2]}else
if(/1$/.test(d)){return n[0]}else
if(/(2|3|4)$/.test(d)){return n[1]}
};
a[b].innerHTML=i().replace(/\{N\}/,d||0);
}}
}
</script>
setNum = function(c,n){
var a,b,i,d;
a = document.all||document.getElementsByTagName('*');
for(b=0;b<a.length;b++){if(new RegExp("(^|\\b)"+c+"(\\b|$)").test(a[b].className)){
i = function(){
d = parseFloat(a[b].innerHTML);
if(!d){return n[2]}else
if(d%1){return n[1]}else
if(/(11|12|13|14|5|6|7|8|9|0)$/.test(d)){return n[2]}else
if(/1$/.test(d)){return n[0]}else
if(/(2|3|4)$/.test(d)){return n[1]}
};
a[b].innerHTML=i().replace(/\{N\}/,d||0);
}}
}
</script>
После того, как вы это сделали, нужно будет вызвать обработку чисел. Для каждой отдельной группы (комментарии, голоса, просмотры) она вызывается отдельно, вот таким образом:
Code
<script type="text/javascript">
// в квадратных скобках нужное существительное в 3 разных видах
// в именительном, родительном, и родительном в множественном числе
// в каждой строчке {N} заменяется на число
// не перепутайте последовательность!
setNum('comms',['<b>{N}</b> комментарий','<b>{N}</b> комментария','<b>{N}</b> комментариев']);
</script>
// в квадратных скобках нужное существительное в 3 разных видах
// в именительном, родительном, и родительном в множественном числе
// в каждой строчке {N} заменяется на число
// не перепутайте последовательность!
setNum('comms',['<b>{N}</b> комментарий','<b>{N}</b> комментария','<b>{N}</b> комментариев']);
</script>
* не обязательно span, можно и любой другой элемент.
** класс должен быть один для каждой отдельной группы. Например для комментариев - comms.
bohdantheone[Материал]