Thursday, March 20, 2008

Ruby on Rails - polskie komunikaty błędów przy walidacji

W przypadku używania walidatorów dla stron polskojęzycznych pojawia się problem z niezręcznymi angielskimi komunikatami błędów. Aby spolonizować w prosty sposób nasze komunikaty wystarczy dokonać tylko kilku modyfikacji.

Załóżmy, że w naszym modelu mamy następującą klasę:

class Produkt < ActiveRecord::Base
#pola => Nazwa, Cena,
end

Spolonizowana walidacja mogłaby wyglądać w takim przypadku następująco:

class Produkt validates_presence_of :nazwa, :message => "nie może być pusta"
validates_presence_of :cena, :message => "nie może być pusta"

validates_length_of :nazwa, :minimum=>2, :message=> "musi składać się przynajmniej z dwóch znaków"
validates_numericality_of :cena, :greater_than_or_equal_to => 0, :message => "nie może być ujemna"

end

W tym momencie część pracy już za nami. Metoda

<%= error_message_for :produkt -%>

działa już prawie tak jak byśmy chcieli. Pozostaje usunięcie nagłówka i wstępnego komunikatu, który w dalszym ciągu pojawia się w języku angielskim. Rozwiązanie jest dość trywialne (oczywiście jeżeli wiadomo gdzie szukać). Poprawiona wersja metody wygląda więc tak:

<%= error_messages_for :produkt, :header_message => "Błąd !", :message => "Lista błędów:"%>

Polecam również lekturę:
http://www.rubyonrails.pl/forum/p3572-2007-10-22-00:50:44

No comments: