module I18n::MissingTranslation::Base
def initialize(locale, key, options = EMPTY_HASH)
def initialize(locale, key, options = EMPTY_HASH) @key, @locale, @options = key, locale, options.slice(*PERMITTED_KEYS) options.each { |k, v| self.options[k] = v.inspect if v.is_a?(Proc) } end
def keys
def keys @keys ||= I18n.normalize_keys(locale, key, options[:scope]).tap do |keys| keys << 'no key' if keys.size < 2 end end
def message
def message if (default = options[:default]).is_a?(Array) && default.any? other_options = ([key, *default]).map { |k| normalized_option(k).prepend('- ') }.join("\n") "Translation missing. Options considered were:\n#{other_options}" else "Translation missing: #{keys.join('.')}" end end
def normalized_option(key)
def normalized_option(key) I18n.normalize_keys(locale, key, options[:scope]).join('.') end
def to_exception
def to_exception MissingTranslationData.new(locale, key, options) end