module I18n
def interpolate_hash(string, values)
def interpolate_hash(string, values) pattern = INTERPOLATION_PATTERNS_CACHE[config.interpolation_patterns] interpolated = false interpolated_string = string.gsub(pattern) do |match| interpolated = true if match == '%%' '%' else key = ($1 || $2 || match.tr("%{}", "")).to_sym value = if values.key?(key) values[key] else config.missing_interpolation_argument_handler.call(key, values, string) end value = value.call(values) if value.respond_to?(:call) $3 ? sprintf("%#{$3}", value) : value end end interpolated ? interpolated_string : string end