2011-01-14 8 views
5

Chciałbym użyć innej nazwy miesiąca w języku polskim. Na przykład teraz to działa tak:Miesiąc fleksja nazw w Railsach I18n

>> I18n.l Time.now, :format => "%e %B" 
=> "14 styczeń" 

ale chciałbym określić inny format miesiącu:

>> I18n.l Time.now, :format => "%e %Q" 
=> "14 stycznia" 

Przetłumaczone nazwy miesiąc są w moim pliku pl.yml w pl.date.month_names. I nie chcę tego zmieniać. W drugim przypadku mogę dodać pl.date.another_month_names, ale nie wiem jak zrobić metodę I18n.l, aby z niego skorzystać.

Jak mogę to osiągnąć? Inne rozwiązania (pomocnicy, niestandardowe metody itp.) Są również mile widziane.

+0

trafisz trudny temat, który został krąży localisers przez długi czas - Jak radzić sobie z bardziej skomplikowanych języków niż angielski. To, co poniżej zasugerowałeś jako odpowiedź na twoje własne pytanie, jest raczej rozwiązaniem niż rozwiązaniem, ale wydaje się być najlepszym podejściem, dopóki lokalizacje nie uzyskają bardziej wyrafinowanego wsparcia od fleksji, a przynajmniej czegoś podobnego do tego, co już ma miejsce w pluralizacji. – silverdr

Odpowiedz

5

Ponieważ nikt nie odpowiedział na moje pytanie, znalazłem jedno rozwiązanie.

Właśnie stworzyła kolejną tłumaczenie na przykład alt_pl.yml i dodałem swoje własne nazwy miesięcy, a następnie:

>> I18n.l Time.now, :format => "%e %Q", :locale => :alt_pl 
=> "15 stycznia" 
3

miałem podobny problem z dziwnymi nazwami miesiąca w niemieckim tłumaczeniu. musiałem skonfigurować nazwy miesięcy w moim locale.yml, teraz działa zgodnie z oczekiwaniami:

de: 
    defaults: &defaults 
    month_names: 
     [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] 
    formats: 
     default: "%d. %B %Y" 
     short: "%d.%m.%Y" 
    date: 
    <<: *defaults 
    time: 
    <<: *defaults