diff --git a/lib/simple_enum.rb b/lib/simple_enum.rb index a696b26..6bd92c3 100644 --- a/lib/simple_enum.rb +++ b/lib/simple_enum.rb @@ -12,7 +12,11 @@ require 'simple_enum/version' require 'simple_enum/attribute' -require 'simple_enum/translation' +begin + require 'simple_enum/translation' +rescue SyntaxError + require 'simple_enum/translation_ruby19' +end require 'simple_enum/view_helpers' # Base module which gets included in ActiveRecord::Base. See documentation diff --git a/lib/simple_enum/translation.rb b/lib/simple_enum/translation.rb index a51dfa0..d90e523 100644 --- a/lib/simple_enum/translation.rb +++ b/lib/simple_enum/translation.rb @@ -15,7 +15,7 @@ def human_enum_name(enum, key, options = {}) defaults << key.to_s.humanize options.reverse_merge! count: 1, default: defaults - I18n.translate(defaults.shift, options) + I18n.translate(defaults.shift, **options) end end end diff --git a/lib/simple_enum/translation_ruby19.rb b/lib/simple_enum/translation_ruby19.rb new file mode 100644 index 0000000..a51dfa0 --- /dev/null +++ b/lib/simple_enum/translation_ruby19.rb @@ -0,0 +1,21 @@ +require 'i18n' + +module SimpleEnum + module Translation + def human_enum_name(enum, key, options = {}) + return '' unless key.present? + + defaults = lookup_ancestors.map do |klass| + :"#{self.i18n_scope}.enums.#{klass.model_name.i18n_key}.#{enum}.#{key}" + end + + defaults << :"enums.#{self.model_name.i18n_key}.#{enum}.#{key}" + defaults << :"enums.#{enum}.#{key}" + defaults << options.delete(:default) if options[:default] + defaults << key.to_s.humanize + + options.reverse_merge! count: 1, default: defaults + I18n.translate(defaults.shift, options) + end + end +end