2 Stimmen

Wie lokalisiert man ein Rails-Plugin?

Ich möchte das OpenIdAuthentication Plugin in eine andere Sprache übersetzen, aber ich möchte das Plugin nicht direkt ändern.

Hier ist die Grundstruktur der Nachrichten, die ich übersetzen möchte:

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"
    } 
  end

end

Ist es irgendwie möglich, sie zu übersetzen, ohne das Plugin direkt zu ändern?

Danke!

1voto

vladr Punkte 63255

Sie können einfach überschreiben OpenIdAuthentication::Result::ERROR_MESSAGES indem Sie es jederzeit nach dem Laden des Plugins neu definieren.

Sie können dies über ein anderes Plugin tun (das nach OpenIdAuthentication ), oder aus einer Datei, die nach dem Laden des Plugins benötigt wird (z. B. require lib/open_id_authentication_suppl.rb en environment.rb ):

Der Code wird im Wesentlichen wie folgt kopiert und eingefügt:

module OpenIdAuthentication

  class Result
    ERROR_MESSAGES = {
      :missing      => "<message in foreign language>",
      :invalid      => "<message in foreign language>",
      :canceled     => "<message in foreign language>",
      :failed       => "<message in foreign language>",
      :setup_needed => "<message in foreign language>"
    } 
  end

Um dies zu integrieren mit I18N-Schienen (eingebaut in Rails 2.2.2, verfügbar als Gem/Plugin in früheren Versionen), tun:

  class I18NResultMessages
    def [](key)
      I18n.t(key, :scope => 'openidauthentication.errors.messages')
    end
  end

  class Result
    ERROR_MESSAGES = I18NResultMessages.new
  end

Dann definieren und laden Sie Ihre I18n yml-Datei für openidauthentication.errors.messages beim Start von Rails zu verwenden, und vergessen Sie nicht, Ihre I18n.locale jedes Mal, wenn Sie die Verarbeitung einer Controller-Aktion basierend auf dem Gebietsschema des angemeldeten Benutzers starten.

1voto

Sarah Mei Punkte 17568

Kopieren Sie diesen Code in eine Datei in /lib und verlangen dann in environment.rb . Es ist wirklich so einfach.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X