Помните, что метод translate был псевдонимом в I18n .
Когда вы создаете псевдоним метода, вы фактически создаете его новую копию, поэтому переопределение метода translate не будет работать, когда происходят вызовы метода t .
Чтобы заставить приведенный выше код работать, вы можете, например, использовать псевдоним t метод.
module I18n
class << self
alias :__translate :translate # move the current self.translate() to self.__translate()
alias :t : translate # move the current self.t() to self.translate()
def translate(key, options = {})
if key.class == TrueClass || key.class == FalseClass
return key ? self.__translate("yes", options) : self.__translate("no", options)
else
return self.__translate(key, options)
end
end
end
end