Как локализовать плагин Rails? - PullRequest
2 голосов
/ 07 марта 2009

Я бы хотел перевести плагин OpenIdAuthentication на другой язык, но я не хотел бы менять его непосредственно.

Вот основная структура сообщений, которые я хочу перевести:

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

Есть ли возможность их перевести, не меняя плагин напрямую?

Спасибо!

Ответы [ 2 ]

1 голос
/ 07 марта 2009

Скопируйте этот код в файл в /lib, затем введите его в environment.rb. Это действительно так просто.

1 голос
/ 07 марта 2009

Вы можете просто перезаписать OpenIdAuthentication::Result::ERROR_MESSAGES, переопределив его в любое время после загрузки плагина.

Вы можете сделать это через другой плагин (который загружается после OpenIdAuthentication) или из файла, необходимого после загрузки плагина (например, require lib/open_id_authentication_suppl.rb in environment.rb):

Код, по сути, будет заданием копирования-вставки, следующим образом:

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

Чтобы интегрировать это с I18N-rails (встроенный в Rails 2.2.2, доступный как gem / plugin в предыдущих версиях), выполните:

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

  class Result
    ERROR_MESSAGES = I18NResultMessages.new
  end

Затем определите и загрузите свой Y18n-файл I18n для openidauthentication.errors.messages различных локалей при запуске Rails, и не забудьте установить I18n.locale каждый раз, когда вы начинаете обрабатывать действие контроллера на основе локали вошедшего в систему пользователя .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...