En el proyecto que estoy desarrollando actualmente queremos que las
URLs indiquen en qué idioma debemos mostrar el interfaz de usuario.
Aunque encontré algunas aproximaciones como las localized_urls de
Saimon M., no eran exactamente lo que estábamos buscando,
principalmente por temas de rendimiento y dependencias (el plugin usa
hashes para almacenar las traducciones, que pueden ir inline en el
routes.rb o leerse desde archivos yaml).
He intentado poner mucho énfasis en la facilidad de uso y en que sea
lo menos intrusivo posible. El repositorio incluye también una
micro-aplicación de ejemplo para ver cómo se puede integrar sobre una
aplicación existente (la aplicación de ejemplo corre sobre rails2.1
pero hemos venido usando el plugin en este proyecto desde rails 2.0
sin problemas).
Me gustaría dar las gracias a mi cliente, Domestika Internet, por
mostrar desde un primer momento su disposición a liberar el código.
Como es mi primer plugin seguro que hay muchas cosas que pulir, así
que agradeceré cualquier feedback
Gracias a todos por la acogida, espero que os sea útil en algún momento
Respondiendo a Emili, actualmente el plugin permite indicar las
traducciones de dos formas:
con archivos prefijo-del-idioma.yml , en plan:
#es.yml
contact: contacto
…
inline, indicando las traducciones en tu routes.rb después de haber
declarado las rutas:
# tus rutas:
ActionController::Routing::Routes.draw do |map|
...
end
# las traducciones:
ActionController::Routing::Translator.translate do |t|
t['es'] = { 'contact' => 'contacto', 'user' => 'usuario'
}
t[‘cat’] = { … }
end
Si lo necesitas, puedes aprovechar este segundo modo para integrar las
traducciones de tus rutas con el sistema de traducción que utilices en
tu aplicación, aunque en nuestro caso (usamos gibberish para traducir
la aplicación) preferí mantenerlas separadas: son tokens muy concretos
y se gana precisión traduciéndolos aparte, y como no son muchos la
edición en archivos yaml es bastante cómoda.
¿Te refieres a cómo se obtienen las rutas generadas en la
aplicación?Una vez que la aplicación las ha declarado las tienes todas en el
array que devuelve Routes.routes, y las nombradas (las que tienen
definidos helpers como “users_path”) en Routes.named_routes.routes
(valga la redundancia)
Si te interesa profundizar más en el tema te recomiendo dar una vuelta
por el código de generación y reconocimiento de rutas acompañado del
‘Rails Routing’ de David Black, un licorcito/refresco y el debugger.
Yo encontré fragmentos que me resultaron bastante crípticos (no soy un
experto en ruby), pero con un poco de paciencia es curioso ver los
engranajes de todo ese sistema
No no, extraer las cadenas de texto para meterlas en los ficheros YAML
que se usan para traducir la aplicación?
Vaya, pues no había pensado en automatizar eso y puede ser muy útil,
gracias Francesc!
no tengo a mano el link, pero antes de ponerte con eso, que sepas que
hay un plugin que hace eso mismo para una aplicación que use gibberish,
como es tu caso.
No no, extraer las cadenas de texto para meterlas en los ficheros YAML
que se usan para traducir la aplicación?
Vaya, pues no había pensado en automatizar eso y puede ser muy útil,
gracias Francesc!
He subido una tarea para generar los ficheros de traducciones a partir
de las rutas actuales (si ya hay traducciones existentes éstas se
conservan), se usa de esta forma:
rake translate_routes:update_yaml[“en fr de”]
donde “en”, “fr” y “de” son los idiomas correspondientes a los
archivos que queremos generar/actualizar.
no tengo a mano el link, pero antes de ponerte con eso, que sepas que
hay un plugin que hace eso mismo para una aplicación que use gibberish,
como es tu caso.
Demasiado tarde Como decía en el mensaje anterior ya subí el código
para hacer lo que proponía Francesc (además prefiero que no dependa de
gibberish).
el mismo… no lo he probado todavía (tengo una versión de gibberish
algo modificada y lo tengo pendiente de poner en marcha un día de
estos), pero es ése el que vi, s