22 Dec
duccio

duccio il 22 December 2008 parla di Rails Snippet

Rails 2.2 e i18n

Niente di nuovo, si sapeva che il vecchio Globalize sarebbe stato integrato in rails 2.2, ma adesso che l’ho provato posso raccontarvi qualcosa in più.

Tutte le nuove applicazioni hanno una nuova cartella config/locales che continene file .yml o .rb con le vostre traduzioni.

Nel file environment.rb ci sono le configurazioni per l’internazionalizzazione, di default la lingua è l’en:

    1   # The internationalization framework can be changed to have another default locale (standard is :en) or more load paths.
    2   # All files from config/locales/*.rb,yml are added automatically.
    3   # config.i18n.load_path << Dir[File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')]
    4   # config.i18n.default_locale = :de

Se volete ridefinire gli errori in italiano, potete creare un file it.yml e:

    1 it:
    2 activerecord:
    3   errors:
    4     messages:
    5      accepted:                  "deve essere accettato"
    6      blank:                     "non può essere vuoto"
    7      confirmation:              "non corrisponde alla conferma"
    8      empty:                     "non può essere vuoto"
    9      equal_to:                  "deve essere uguale a {{count}}"
   10      even:                      "deve esspere pari"
   11      exclusion:                 "è riservato"
   12      greater_than:              "deve essere più grande di {{count}}"
   13      greater_than_or_equal_to:  "deve essere più grande o uguale a {{count}}"
   14      inclusion:                 "non è incluso nella lista"
   15      invalid:                   "è invalido"
   16      less_than:                 "deve essere meno di {{count}}"
   17      less_than_or_equal_to:     "deve essere meno o uguale a  {{count}}"
   18      not_a_number:              "non è un numero"
   19      odd:                       "deve essere dispari"
   20      taken:                     "è già stato preso"
   21      too_long:                  "è troppo lungo (max {{count}} caratteri)"
   22      too_short:                 "è troppo corto (almeno {{count}} caratteri)"
   23      wrong_length:              "lunghezza errata (dovrebbe essere {{count}} characters)"

In generale l’utilizzo è molto semplice, nelle vostre viste usate qualcosa del tipo

    1 <p><%= I18n.t :hello %></p>

e nel file .yml della traduzione definite:

    1 it:
    2 hello: "Ciao mondo!"

In development vedrete subito la traduzione, in production chiaramente no, per rendere effettive le modifiche dovrete fare il reload delle traduzioni:

    1     I18n.reload!() 

Se volete passare parametri alla traduzione è molto semplice farlo, il metodo t consente di specificare la label e dei parametri passati come hash in questo modo protrete ad esempio salutare un mondo specifico!!

    1 <p><%= I18n.t :hello, :world => "Terra!" %></p>

e nel file delle traduzioni

    1 it:
    2 hello: "Ciao {{world}}"

Così la traduzione sarà “Ciao Terra!”

Date un occhio su @artweb design e sul Google group.

Piccola nota

Se per caso lanciando il server e visualizzando una pagina della vostra applicazione vi si dovesse presentare

    1 ActionView::TemplateError (can't convert Array into String)...

allora dipende dall’inclusione dei locales nell’environment.rb, correggete il “<<” con un “+=”.

    1   # The internationalization framework can be changed to have another default locale (standard is :en) or more load paths.
    2   # All files from config/locales/*.rb,yml are added automatically.
    3   config.i18n.load_path += Dir[File.join(RAILS_ROOT, 'my', 'locales', '*.{rb,yml}')]
    4   config.i18n.default_locale = :it

3 Commenti a “Rails 2.2 e i18n”

  1. » Rails 2.2 e i18n Ruby on Rails, AJAX, WEB 2.0, CSS, MAC - Rails … il 23 December 2008 alle 02:03 dice:

    [...] Articolo Originale: » Rails 2.2 e i18n Ruby on Rails, AJAX, WEB 2.0, CSS, MAC - Rails … Author: [...]

  2. Filippo il 15 January 2009 alle 19:22 dice:

    La sintassi per inserire parametri, come nella tua stringa di esempio “Ciao {{world}}”, ricorda molto il template language liquid (http://www.liquidmarkup.org/) estratto da shopify…una coincidenza?

  3. cisco il 5 February 2009 alle 16:34 dice:

    L’internazionalizzazione è fantastica, ma i formati datetime nei form (generati da scaffold e non) spesso danno problemi che tutt’ora ho difficoltà a risolvere…

Scrivi un commento