Internationalisatie op zijn rubisch

Geplaatst door Michiel de Mare wo, 01 feb 2006 09:32:00 GMT

Ruby On Rails heeft inderdaad geen goede helemaal geen i18n ondersteuning, maar Java propertyfiles hebben ook zo hun problemen. Zo zijn ze bijzonder inflexibel. Ze hebben rudimentaire ondersteuning voor variabele substitutie (bv. "{0} moet ingevuld zijn."). Maar dat is lang niet genoeg.

Hoe pak je bijvoorbeeld de volgende problemen aan met propertyfiles?
  • Je score is {0} (gradatie in woorden)
  • Je ziet {0} goblin (meervoud of enkelvoud)
  • Hans was hier {0} geleden (hoeveelheid tijd in woorden).

Bij mijn eigen projectje gebruik ik blocks.

LAST_POST =
  {:en => "%s replied %s ago",
   :nl => "%s antwoordde %s geleden",
   :es => "%s contestó hace %s" }
def last_post(name, time)
  lambda do|lang| 
    stime = time_ago(time)[lang]
    sprintf(LAST_POST[lang], name, stime) 
  end
end

puts last_post('Hans', Time.now - 100)[:en]

Iets meer werk om te schrijven, maar oneindig veel flexibeler. Bovendien gebruikt deze methode lazy evaluation zodat je model niet meteen hoeft te weten welke taal je gebruikt. Dat kun je aan je view-laag overlaten.

Geplaatst in ,  | geen reacties

Reacties

(Laat url/e-mail achter »)

   Voorvertoning