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.