Forum: Rails-ES Internacionalizar un plugin

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Marcos V. (Guest)
on 2009-04-29 18:37
Amigxs, estoy internacionalizando un sitio y estoy tengiendo problemas
con la internacionalización del Open_id_authentication.
el tema es así:
todos los mensajes que envía este plugin por flash están en el archivo:
/vendor/
plugins/open_id_authentification/lib/open_id_authentication.rb
y a los mismos los reemplazo por el llamado al método de la clase I18n:

class Result
  ERROR_MESSAGES = {
    :missing      => I18n.t("openid.missing"),
    :invalid      => I18n.t("openid.invalid"),
      :canceled     => I18n.t("openid.canceled"),
      :failed       => I18n.t("openid.failed"),
      :setup_needed => I18n.t("openid.setup_needed")
    }
por supuesto cargo los mensajes en /config/locale/es.rb
las otras traducciones me funcionan bien, pero las del openid me da como
que no la encuentra.

que puede ser?

saludos y gracias
Guillermo (Guest)
on 2009-04-29 19:23
(Received via mailing list)
2009/4/29 Marcos V. <removed_email_address@domain.invalid>
>
Ese hash se rellena de valores en tiempo de carga, por lo que cuando se
ejecuta el valor de ERROR_MESSAGES[:missing] por ejemplo ya tiene un
valor
asignado.
Se me ocurren dos opciones:
a) Establecer el locale antes de cargar el plugin.
b) Modificar el plugin para que sea en el momento de llamar a
ERROR_MESSAGES
cuando se hace la traducción, es decir:

....
....
I18n.t(ERROR_MESSAGES[:missing])
...
...

y el hash lo dejas con texto normal

class Result
 ERROR_MESSAGES = {
   :missing      => "openid.missing",
...


Es lo único que se me ocurre ahora mismo.
Marcos V. (Guest)
on 2009-04-29 23:42
Guillermo wrote:
> Se me ocurren dos opciones:
> a) Establecer el locale antes de cargar el plugin.

cómo se puede hacer eso?

> b) Modificar el plugin para que sea en el momento de llamar a
> ERROR_MESSAGES

ERROR_MESSAGES es como un hash global que se carga cuando?

saludos y gracias
Guillermo (Guest)
on 2009-04-30 00:47
(Received via mailing list)
Aplica este parche, o cámbialo a mano.


>From 167880c04797c9e9678a1471dc556b3a1043df96 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Guillermo=20=C3=81lvarez?= 
<removed_email_address@domain.invalid>
Date: Wed, 29 Apr 2009 22:38:29 +0200
Subject: [PATCH] add I18n

---
 lib/open_id_authentication.rb |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/open_id_authentication.rb
b/lib/open_id_authentication.rb
index 6a05ea0..3d90f18 100644
--- a/lib/open_id_authentication.rb
+++ b/lib/open_id_authentication.rb
@@ -39,11 +39,11 @@ module OpenIdAuthentication

   class Result
     ERROR_MESSAGES = {
-      :missing      => "Sorry, the OpenID server couldn't be found",
-      :invalid      => "Sorry, but this does not appear to be a valid
OpenID",
-      :canceled     => "OpenID verification was canceled",
-      :failed       => "OpenID verification failed",
-      :setup_needed => "OpenID verification needs setup"
+      :missing      => "openid.missing",
+      :invalid      => "openid.invalid",
+      :canceled     => "openid.canceled",
+      :failed       => "openid.failed",
+      :setup_needed => "openid.setup_needed"
     }

     def self.[](code)
@@ -69,7 +69,7 @@ module OpenIdAuthentication
     end

     def message
-      ERROR_MESSAGES[@code]
+      I18n.t(ERROR_MESSAGES[@code])
     end
   end

--
1.6.0.2


La única diferencia es que he cambiado el lugar donde se realiza la
traducción en la linea 72 de lib/open_id_authentication.rb de git://
github.com/rails/open_id_authentication.git

Debería romper los tests, ya que estás añadiendo la dependencia de una
clase
externa a la librería. I18n.Una forma más correcta, sería que leyeses la
constante a mano y esa la tradujeses en algún lado de tu aplicación.
This topic is locked and can not be replied to.