mirror of
https://github.com/ditkrg/validates_timeliness.git
synced 2026-01-23 06:16:44 +00:00
reworked i18n messages, interpolation to behave on missing translation
This commit is contained in:
parent
9cfbb2a458
commit
5258256d5e
@ -115,27 +115,26 @@ module Spec
|
||||
pass
|
||||
end
|
||||
|
||||
def error_message_for(option)
|
||||
msg = @validator.error_messages[option]
|
||||
restriction = @validator.class.send(:evaluate_option_value, @validator.configuration[option], @type, @record)
|
||||
def error_message_for(message)
|
||||
restriction = @validator.class.send(:evaluate_option_value, @validator.configuration[message], @type, @record)
|
||||
|
||||
if restriction
|
||||
restriction = [restriction] unless restriction.is_a?(Array)
|
||||
restriction.map! {|r| @validator.class.send(:type_cast_value, r, @type) }
|
||||
interpolate = @validator.send(:interpolation_values, option, restriction )
|
||||
|
||||
# get I18n message if defined and has interpolation keys in msg
|
||||
if defined?(I18n) && !@validator.send(:custom_error_messages).include?(option)
|
||||
msg = if defined?(ActiveRecord::Error)
|
||||
ActiveRecord::Error.new(@record, @expected, option, interpolate).message
|
||||
else
|
||||
@record.errors.generate_message(@expected, option, interpolate)
|
||||
end
|
||||
else
|
||||
msg = msg % interpolate
|
||||
end
|
||||
restriction = @validator.class.send(:type_cast_value, restriction, @type)
|
||||
interpolate = @validator.send(:interpolation_values, message, restriction)
|
||||
end
|
||||
|
||||
if defined?(I18n)
|
||||
interpolate ||= {}
|
||||
options = interpolate.merge(:default => @validator.send(:custom_error_messages)[message])
|
||||
if defined?(ActiveRecord::Error)
|
||||
ActiveRecord::Error.new(@record, @expected, message, options).message
|
||||
else
|
||||
@record.errors.generate_message(@expected, message, options)
|
||||
end
|
||||
else
|
||||
interpolate ||= nil
|
||||
@validator.error_messages[message] % interpolate
|
||||
end
|
||||
msg
|
||||
end
|
||||
|
||||
def format_value(value)
|
||||
|
||||
@ -46,7 +46,7 @@ module ValidatesTimeliness
|
||||
end
|
||||
|
||||
def error_messages
|
||||
@error_messages ||= self.class.default_error_messages.merge(custom_error_messages)
|
||||
@error_messages ||= ::ActiveRecord::Errors.default_error_messages.merge(custom_error_messages)
|
||||
end
|
||||
|
||||
private
|
||||
@ -87,10 +87,9 @@ module ValidatesTimeliness
|
||||
restriction = [restriction] unless restriction.is_a?(Array)
|
||||
|
||||
if defined?(I18n)
|
||||
message = I18n.t('activerecord.errors.messages')[option]
|
||||
subs = message.scan(/\{\{([^\}]*)\}\}/)
|
||||
interpolations = {}
|
||||
subs.each_with_index {|s, i| interpolations[s[0].to_sym] = restriction[i].strftime(format) }
|
||||
keys = restriction.size == 1 ? [:restriction] : [:earliest, :latest]
|
||||
keys.each_with_index {|key, i| interpolations[key] = restriction[i].strftime(format) }
|
||||
interpolations
|
||||
else
|
||||
restriction.map {|r| r.strftime(format) }
|
||||
@ -154,14 +153,6 @@ module ValidatesTimeliness
|
||||
# class methods
|
||||
class << self
|
||||
|
||||
def default_error_messages
|
||||
if defined?(I18n)
|
||||
I18n.t('activerecord.errors.messages')
|
||||
else
|
||||
::ActiveRecord::Errors.default_error_messages
|
||||
end
|
||||
end
|
||||
|
||||
def error_value_format_for(type)
|
||||
if defined?(I18n)
|
||||
# work around for syntax check in vendored I18n for Rails <= 2.3.3
|
||||
|
||||
Loading…
Reference in New Issue
Block a user