🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
2 messages
2 total messages Started by RaW Fri, 24 Nov 2006 19:50
Spolszczenie 'error_messages_for'
#321
Author: RaW
Date: Fri, 24 Nov 2006 19:50
31 lines
1719 bytes
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.
-- 
RaW
Re: Spolszczenie 'error_messages_for'
#322
Author: 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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads