mirror of
https://github.com/heartcombo/devise.git
synced 2026-01-10 08:08:00 -05:00
Merge pull request #2703 from bbenezech/master
Add options for FailureApp's i18n_message. Similar #1633
This commit is contained in:
@@ -147,12 +147,16 @@ MESSAGE
|
||||
flash[key] = message if message.present?
|
||||
end
|
||||
|
||||
def devise_i18n_options(options)
|
||||
options
|
||||
end
|
||||
|
||||
# Get message for given
|
||||
def find_message(kind, options = {})
|
||||
options[:scope] = "devise.#{controller_name}"
|
||||
options[:default] = Array(options[:default]).unshift(kind.to_sym)
|
||||
options[:resource_name] = resource_name
|
||||
options = devise_i18n_options(options) if respond_to?(:devise_i18n_options, true)
|
||||
options = devise_i18n_options(options)
|
||||
I18n.t("#{options[:resource_name]}.#{kind}", options)
|
||||
end
|
||||
|
||||
|
||||
@@ -64,12 +64,21 @@ module Devise
|
||||
|
||||
protected
|
||||
|
||||
def i18n_options(options)
|
||||
options
|
||||
end
|
||||
|
||||
def i18n_message(default = nil)
|
||||
message = warden_message || default || :unauthenticated
|
||||
|
||||
if message.is_a?(Symbol)
|
||||
I18n.t(:"#{scope}.#{message}", :resource_name => scope,
|
||||
:scope => "devise.failure", :default => [message])
|
||||
options = {}
|
||||
options[:resource_name] = scope
|
||||
options[:scope] = "devise.failure"
|
||||
options[:default] = [message]
|
||||
options = i18n_options(options)
|
||||
|
||||
I18n.t(:"#{scope}.#{message}", options)
|
||||
else
|
||||
message.to_s
|
||||
end
|
||||
|
||||
@@ -8,6 +8,12 @@ class FailureTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
class FailureWithI18nOptions < Devise::FailureApp
|
||||
def i18n_options(options)
|
||||
options.merge(:name => 'Steve')
|
||||
end
|
||||
end
|
||||
|
||||
def self.context(name, &block)
|
||||
instance_eval(&block)
|
||||
end
|
||||
@@ -67,6 +73,11 @@ class FailureTest < ActiveSupport::TestCase
|
||||
assert_equal 'http://test.host/users/sign_in', @response.second["Location"]
|
||||
end
|
||||
|
||||
test 'uses custom i18n options' do
|
||||
call_failure('warden' => OpenStruct.new(:message => :does_not_exist), :app => FailureWithI18nOptions)
|
||||
assert_equal 'User Steve does not exist', @request.flash[:alert]
|
||||
end
|
||||
|
||||
test 'uses the proxy failure message as string' do
|
||||
call_failure('warden' => OpenStruct.new(:message => 'Hello world'))
|
||||
assert_equal 'Hello world', @request.flash[:alert]
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
en:
|
||||
devise:
|
||||
failure:
|
||||
user:
|
||||
does_not_exist: "User %{name} does not exist"
|
||||
errors:
|
||||
messages:
|
||||
taken: "has already been taken"
|
||||
|
||||
Reference in New Issue
Block a user