5

既存のプロジェクトで I18n.translate メソッドを変更したい。

require 'I18n'
module I18n
  alias_method :old_translate, :translate
  def translate(*args)
    old_translate(*args) + 'blabla'
  end
  alias_method :t, :translate
end

これにより、次が生成されます。

キャッチされない例外: ヘルパー ファイル helpers/I18n.rb がありません

私が間違っていることと、このコードをどこに置くべきですか?

4

1 に答える 1

9

構成/ロケール/en.yml:

en:
  wtfblabla: hello

test.rb:

require 'i18n'
module I18n
  class<< self
    alias_method :old_translate, :translate
    def translate(*args)
      old_translate(*args) + 'blabla'
    end
    alias_method :t, :translate
  end
end

I18n.load_path += p(Dir[File.join(File.dirname(__FILE__), 'config', 'locales', '*.yml').to_s])

p I18n.t "wtfblabla"

出力:

["./config/locales/en.yml"]

「ハローブラブラ」

于 2012-12-18T08:34:30.197 に答える