🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.ruby
Article #322

Re: Spolszczenie 'error_messages_for'

#322
From: Marcin Mielżyński
Date: Fri, 24 Nov 2006 20:15
125 lines
4219 bytes
RaW wrote:
> W jaki sposób radzicie sobie z tłumaczeniem komentarzy o błędach 
> validacji formularzy?
> 
> Ja doszedłem do tego, że w environment.rb mam przykładowo zdefiniowane 
> @@default_error_messages:
> 
> ActiveRecord::Errors.default_error_messages = {
>   :inclusion => "nie wystepuje na liście",
>   [...]
>   :not_a_number => "nie jest liczbą"
> }
> 
> Niewiele to daje bo <%= error_messages_for 'post' %> w widoku .rhtml 
> wyrzuca mi coś takiego:
> 
> 3 errors prohibited this post from being saved
> There were problems with the following fields:
>   * Period nie może być pusty
>   * Title nie może być pusty
>   * Body nie może być pusty
> 
> Dla każdego pola z osobna można użyć:
> <%= error_message_on "post", "period", "Okres ", " - uzupełnij to pole", 
> "errorExplanation" %>
> ale nie o to mi chodzi - chcę mieć tekst jaki daje 'error_messages_for' 
> ale po polsku. Dodatkowo chciałbym podmienić nazwy zmiennych(pól).
> Jest na to jakiś myk?
> 
> Z góry dzięki za odpowiedzi.


dla pól (w formacie 'tabela.kolumna'):

zakładając że metoda _r_ klasy String rozkodowuje zasoby z bazy danych, np:

"period.date_from".r 	-> Data od


module ActiveRecord

   class Errors
     @@default_error_messages[:inclusion] = "val.inclusion".r
     @@default_error_messages[:exclusion] = "val.exclusion".r
# itd

     def full_messages
       full_messages = []
       @errors.each_key do |attr|
         @errors[attr].each do |msg|
           next if msg.nil?

           if attr == "base"
             full_messages << msg
           else
             full_messages << 
(Inflector.underscore(@base.class.name)+'.'+attr.to_s).r + " " + msg
           end
         end
       end

       return full_messages
     end

   end

end



spolszczenie ...following... prohibited... :

module ActionView #nodoc
   module Helpers
     module ActiveRecordHelper
       def error_messages_for(object_name, options = {})
         options = options.symbolize_keys
         object = instance_variable_get("@#{object_name}")
         unless object.errors.empty?
           content_tag("div",
           content_tag(
                       options[:header_tag] || "h2",
               "#{pluralize_word(object.errors.count,'occurred').r} 
#{object.errors.count} #{pluralize_word(object.errors.count,'error').r} 
#{'prohibited_save'.r}"
           ) +
           content_tag("p", "#{'fields_problem'.r}:") +
           content_tag("ul", object.errors.full_messages.collect { |msg| 
content_tag("li", msg) }),
             "id" => options[:id] || "errorExplanation", "class" => 
options[:class] || "errorExplanation"
           )
         end

       end

       private
	# uwzględnienie przypadków: błąd, błędy, błędów
	# w zasobach będzie np:
	# error1=błąd
	# error2=błędy
	# error3=błędów

       def pluralize_word count, res
         case count
         when 1
           res + "1"
         when 2..4
           res + "2"
         when 5..20
           res + "3"
         else
                 "???"
         end
       end

     end
   end
end


najlepiej to podpiąć jako plugin - sprawdza się rewelacyjnie, przy 
okazji można załatwić całą i18n, przkodowywania itd...

lopex
Technical Details
Message-ID: <ek7jts$ebu$1@news.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
References: <ek7idq$ppq$1@news.task.gda.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail
From: Marcin Mielżyński <lopx@gazeta.pl>
Newsgroups: pl.comp.lang.ruby
Subject: Re: Spolszczenie 'error_messages_for'
Date: Fri, 24 Nov 2006 21:15:52 +0100
Organization: Onet.pl
Lines: 125
Message-ID: <ek7jts$ebu$1@news.onet.pl>
References: <ek7idq$ppq$1@news.task.gda.pl>
NNTP-Posting-Host: chello087207013012.chello.pl
Mime-Version: 1.0
X-Trace: news.onet.pl 1164399357 14718 87.207.13.12 (24 Nov 2006 20:15:57 GMT)
X-Complaints-To: usenet@news.onet.pl
NNTP-Posting-Date: Fri, 24 Nov 2006 20:15:57 +0000 (UTC)
X-Sender: 5Da2qcG7AWj7WISFX859Php/OS6q4VnB
In-Reply-To: <ek7idq$ppq$1@news.task.gda.pl>
User-Agent: Thunderbird 1.5.0.8 (Windows/20061025)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit