Apuntes Rails

Apuntes de Ruby on Rails, programación en GNU/Linux y Mac

Archivos de configuración con YAML para varios idiomas

TAGS: None

Creando una web me he encontrado con el problema de poner determinados textos en varios idiomas. Sin querer meterme en muchos follones (hay plugin para ello) y buscando una solución muy sencilla y rápida, un compañero de la lista de Rails me sugirió YAML. (Aquí y aquí hay información de YAML en Ruby)
El objetivo es el siguiente. Necesito un hash con los los textos que quiero poner en varios idiomas. Por ejemplo:

Español: { “menu_inicio” => “Inicio”, “listado_personas”=>”Listado Personas” }

Ingles: { “menu_inicio” => “Home”, “listado_personas”=>”List of Persons” }

Lo que quiero es guardar los datos de cada idioma en un archivo, y dependiendo del idioma seleccionado, cargar un archivo u otro. ok?

Creamos una carpeta lang donde guardar los siguientes archivos en formato YAML.
es.yml

menu_inicio: “Inicio”

listado_personas: “Listado de Personas”

en.yml

menu_inicio: “Home”
listado_personas: “List of Persons”


Ahora vamos a preparar la aplicación para cargue el archivo dependiendo del idioma. Modificamos el controlador principal de la aplicación.

application.rb

require ‘yaml’ # Necesario NO OLVIDAR!!!!

class ApplicationController < ActionController::Base

def idioma

@idioma = actualiza_idioma #funcion que captura si se ha cambiado de idioma. Por defecto devuelve 1
#Dependiendo del idioma cargamos un archivo u otro
case @idioma.to_i

when 1 then archivo = “es.yml”
when 2 then archivo = “en.yml”

end

@lang = YAML::load(File.open(”#{RAILS_ROOT}/lang/#{archivo}”))

end

Bien así de sencillo. Ahora en cualquier vista podemos poner <%=lang['menu_inicio'] %> y nos lo mostrará en el idioma seleccionado.

PD: Se me olvidaba, tenemos que poner en los controladores before_filter :idioma para que ejecute la función

TAGS: None

Leave a Reply

© 2009 Apuntes Rails. All Rights Reserved.

This blog is powered by Wordpress and the Magatheme Wordpress Theme by Mid MO SEO.