Inflection za HR

61 views
Skip to first unread message

Kresimir Bojcic

unread,
Jan 4, 2012, 1:07:25 PM1/4/12
to Ruby Hrvatska
Pozdrav,

da li je itko radio nesto na tu temu tipa:

1 tjedan
2 tjedna
597 tjedana
801 kuna
802 kune
4 mjeseca
1 mjesec

Zanima me za dan, mjesec i tjedan. Ja se igram sa time i izgleda mi lagano - osim ako vec postoji :)

p.s. Da li je ruby@6 za 10.01 odgodjen? Vidim da se sada spominje kraj mjeseca?

Kreso

Mislav Marohnić

unread,
Jan 8, 2012, 7:24:25 AM1/8/12
to Kresimir Bojcic, Ruby Hrvatska
Pluralizacija hrvatskih riječi je jednostavna. Postoje 3 forme koje ovise o jedinicama (rezultatu N%10):

1: A
2-4: B
5-0: C

Npr:

1 tjedan
2 tjedna
5 tjedana

Iznimka je kad je N između 11-14, kad je uvijek forma C umjesto A i B. Npr.: 11 tjedana.

Za neke riječi su 2 forme jednake, npr: 2 dana, 5 dana. Neka te to ne zbunjuje. Najbolje je za svaku riječ imati spremljeno 3 oblika, pa čak i ako su dva jednaka.

Mislav Marohnić

unread,
Jan 8, 2012, 7:30:58 AM1/8/12
to Kresimir Bojcic, Ruby Hrvatska
Zaboravio sam odgovoriti na tvoje glavno pitanje: da li je ovo već negdje implementirano?

Da, u "i18n" libraryu postoji mogućnost za unošenje plural formi pod imenima "one", "few" i "many".

Ali, pošto je za implementirati ovo potrebno samo 4 linije koda, ponekad se ne isplati dovoditi cijeli 3rd party library u skriptu/projekt.

Mislav Marohnić

unread,
Jan 8, 2012, 11:53:19 AM1/8/12
to Kresimir Bojcic, Ruby Hrvatska
def plural_form(num)
  case num % 100
  when 11-14 then :many
  else
    case num % 10
    when 1 then :one
    when 2-4 then :few
    else :many
    end
  end
end

On Jan 8, 2012, at 14:37, Kresimir Bojcic <kresimi...@gmail.com> wrote:

Hmmm,

to bi otprilike bilo ovako:

  def rule
    return :many if (11..14).include?(@amount % 100)
    return :few if (2..4).include?(@amount % 10)
    (@amount % 10) == 1 ? :one : :many
  end

Thanks

2012/1/8 Kresimir Bojcic <kresimi...@gmail.com>
Cool, samo cini mi se da treba gledati prvo N % 100 da bi dobili (11-14) za "many" iznimku, a onda N % 10 za ostalo.

Ja sam u medjuvremenu to malo zakomlicirao... https://github.com/drKreso/amount_inflector nije puno preko 4 reda, ali nisam uocio ovo pravilo o kojem govoris.

Sad cu isprobati, pa ako prodju testovi... good to go :)


2012/1/8 Mislav Marohnić <mislav....@gmail.com>
Reply all
Reply to author
Forward
0 new messages