[ANN] translate_routes: plugin para traducir URLs

Hola, si alguno está interesado en tener URLs en distintos idiomas
puede que le interese el plugin que he liberado en GitHub:

GitHub - raul/translate_routes: Rails plugin to translate your URLs and routing helpers on an clean way.

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 :slight_smile:

Muy bien!!!

2008/6/9 Raul M. [email protected]:

Felicidades!! ya le echaré un ojo que tengo un proyecto multiidioma
entre
manos. Una cosa Raul, para la traducción que habéis utilizado, Globalize
o
una solución hecha a medida?

El día 9 de junio de 2008 12:53, Xavier N. [email protected]
escribió:

hey! está muy bien, sobre todo para múltiples idiomas, felicidades!
este era el secreto eh!

marze

El 09/06/2008, a las 16:08, Emili Parreño escribió:

Gracias a todos por la acogida, espero que os sea útil en algún momento :slight_smile:

Respondiendo a Emili, actualmente el plugin permite indicar las
traducciones de dos formas:

  1. con archivos prefijo-del-idioma.yml , en plan:

#es.yml
contact: contacto

  1. 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.

¿Y para extraerlas del código con que lo haceis?

No no, extraer las cadenas de texto para meterlas en los ficheros YAML
que se usan para traducir la
aplicación?

2008/6/9 Francesc E. [email protected]:

¿Y para extraerlas del código con que lo haceis?

¿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) :smiley:

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 :slight_smile:

On Jun 10, 2008, at 10:00 AM, Raul M. wrote:

2008/6/9 Francesc E. [email protected]:

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! :slight_smile:

Eso es lo que hace gettext.

buenas,

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! :slight_smile:

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.

saludos,

javier ramírez

2008/6/9 Francesc E. [email protected]:

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! :slight_smile:

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.

2008/6/10 javier ramirez [email protected]:

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 :slight_smile: 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).

De todas formas como estoy usando gibberish me interesa bastante lo
que comentas, ¿es este el plugin al que te refieres?
http://svn.marklunds.com/plugins/gibberish_translate/README

De todas formas como estoy usando gibberish me interesa bastante lo
que comentas, ¿es este el plugin al que te refieres?
http://svn.marklunds.com/plugins/gibberish_translate/README

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

¿Que ventajas tiene Giberish ante Gettext?

Yo utilizo normalmente Gettext y entre las ventajas veo las siguientes:

  • Herramientas de traducción conocidas. PoEdit
  • Las traducciones se compilan en binarios, esto creo que deberia
    hacer que fuera más rápido.

¿ Que ventajas tiene Giberish ante Gettext?

Como el plugin no usa ni Gibberish ni Gettext y este tema puede
resultar muy interesante he abierto hilo para comentarlo aparte.