Forum: Ruby on Rails i18n date formatting rails 2.2.2

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
De21612945bf16754a893ccddaf61acc?d=identicon&s=25 Ronald (Guest)
on 2009-02-28 23:52
(Received via mailing list)
Hello everyone,

I'm trying to get Rails (v2.2.2) to print dates in Dutch but it won't
pick up the formats I specify. :(

I tried the following:

1) created a 'nl.yml' file under 'config/locales'
2) copied over the English defaults for dates from activesupport/.../
en.yml
3) added Dutch activerecord error messages and number and currency
formats (euro sign)
4) changed the default locale in 'environment.rb'

The AR error messages are shown in Dutch just fine so Rails is loading
the translation file and setting the locale correctly but when I do
Date.today.to_s I always get the English versions, no matter what
format I pass to the to_s() method. Also numbers and currencies are
working fine. I just can't get dates to behave!

Been hunting down documentation and blog posts on the subject for
hours now and I'm going crazy. Any ideas?

Ronald
A91bd6cef23eb3516245a092e196c4da?d=identicon&s=25 Maurício Linhares (mauricio)
on 2009-02-28 23:58
(Received via mailing list)
They didn't worke for me either, so I rewrote the to_s method for
dates and times:

Date.class_eval do

  def to_s( format_name = :default )
    format = case format_name
    when String
      self.strftime( format )
    when Symbol
      I18n.localize( self, :format => format_name)
    end
  end

end

Time.class_eval do

  def to_s( format_name = :default )
    format = case format_name
    when String
      self.strftime( format )
    when Symbol
      I18n.localize( self, :format => format_name)
    end
  end

end

I did also search for reasons why it doesn't work (from the I18N docs
it seemed that it should work), but this method at the Date object
shows that it has no idea about I18N:

        def to_formatted_s(format = :default)
          if formatter = DATE_FORMATS[format]
            if formatter.respond_to?(:call)
              formatter.call(self).to_s
            else
              strftime(formatter)
            end
          else
            to_default_s
          end
        end

-
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)
De21612945bf16754a893ccddaf61acc?d=identicon&s=25 Ronald (Guest)
on 2009-03-01 12:10
(Received via mailing list)
On Feb 28, 11:58 pm, Maurício Linhares <mauricio.linha...@gmail.com>
wrote:
>       I18n.localize( self, :format => format_name)
>       self.strftime( format )
>     when Symbol
>       I18n.localize( self, :format => format_name)
>     end
>   end
>
> end

Great! Thanks, this works for me. (Small bug: parameter to strftime
should be format_name, not format).

>             end
>           else
>             to_default_s
>           end
>         end

Yeah I dug up this piece of source code as well. Guess I was too tired
to compare this with for instance number_to_currency's source and come
to this conclusion myself ;) Anyway, thanks again!

Ronald
This topic is locked and can not be replied to.