Jednoduchá pluralizace

V Ruby on Rails je jednoduchá rutinka, která dokáže převést jednotné číslo na množné číslo. Např.
pluralize(1, "car")
pluralize(2, "car")

vrátí
1 car
2 cars

Čeština je však trochu jinak postavená a algoritmus nejde převzít. Nicméně, existuje jednoduchá obezlička.

Vytvořte tag:
 1 def pluralize = { attrs, body ->
 2     def num = attrs.num.toInteger()
 3     def str = attrs.str
 4 
 5     switch (num) {
 6         case 0: out << message([code:"plural.${str}.0", args:[num]]); break;
 7         case 1: out << message([code:"plural.${str}.1", args:[num]]); break;
 8         case 2..4: out << message([code:"plural.${str}.2", args:[num]]); break;
 9         default: out << message([code:"plural.${str}.many", args:[num]]); break;
10     }
11 }

v messages.properties definujte:

1 plural.day.0={0} dnů
2 plural.day.1={0} den
3 plural.day.2={0} dny
4 plural.day.many={0} dnů
a ve view zavolejte:
1 <g:pluralize str="day" num="7"/>

A jako bonus dostanete možnost pluralizovat i v jiném jazyce.

Also available in: HTML TXT