Проблема со склонениями
По идее этот код должен склонять слово в соответствии с заданным возрастом:
function text(age) { var txt; count = age % 100; if (count >= 5 && count <= 20) { txt = 'лет'; } else { count = count % 10; if (count == 1) { txt = 'год'; } else if (count >= 2 && count <= 4) { txt = 'года'; } else { txt = 'лет'; } } return txt; } Тем не менее он не работает, например, с числом 23 — он выдаёт результатом «лет». Может быть всё просто, и это у меня башка после целого дня работы не варит? |
function text(age) { var txt; count = age % 100; if (count >= 5 && count <= 20) { txt = 'лет'; } else { count = count % 10; if (count == 1) { txt = 'год'; } else if (count >= 2 && count <= 4) { txt = 'года'; } else { txt = 'лет'; } } return txt; } alert(23 + ' ' + text(23)); // функция для склонения слов (значение, (1)"день", (2)"дня", (5)"дней") function plural(n,str1,str2,str5){return n + ' ' + ((((n%10)==1)&&((n%100)!=11))?(str1):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(str2):(str5)))} alert(plural(23, 'год', 'года', 'лет')); |
в MDN тема раскрыта полностью, для всех известных науке локалей: https://developer.mozilla.org/en-US/...on_and_Plurals
собственно код доступен по ссылке resource://gre/modules/PluralForm.jsm, которую можно открыть только в Firefox. |
Часовой пояс GMT +3, время: 11:37. |