Traducción (o internacionalización) básica de aplicaciones con Rails 2.2

Con las nuevas características de Ruby on Rails 2.2 es posible traducir aplicaciones sin necesidad de usar ningún plugin para ello.

La forma de hacerlo es muy fácil.

Lo primero es añadir un filtro a ApplicationController para que se aplique en cada controlador de nuestra aplicación.

class ApplicationController < ActionController::Base
  before_filter :set_locale

También añadimos un método para que use la localización especificada por parámetro o la de por defecto.

  private
  def set_locale
    locale = params[:locale] || 'es-ES'
    I18n.locale = locale
    I18n.load_path += Dir[ File.join(RAILS_ROOT, 'config', 'locales', '*.{rb,yml}') ]
  end


En el directorio config/locales introducimos las traducciones de la página. Por ejemplo, para la traducción "es-ES" crearíamos el fichero "es-ES.rb" en el directorio config/locales con el siguiente contenido:

{
  :'es-ES' => {

    :hello_world => "Hola mundo",
    :texto1 => "Texto 1 en castellano"
  }
}


Luego por ejemplo, para usar la cadena ":hello_world" en el idioma actual, la llamamos dentro de nuestra vista con

t(:hello_world)

Podemos crear un enlace para cada traucción de la página de forma fácil, por ejemplo si tenemos traducciones de "es-ES" (castellano) y "en-US" (inglés):

<%= link_to 'en-US', :locale => 'en-US' %> || <%= link_to 'es-ES', :locale => 'es-ES' %>

Más información sobre el tema:

http://almosteffortless.com/2008/07/21/simple-localization-in-rails-22/
http://i18n-demo.phusion.nl/pages/setup