# File lib/i18n/backend/base.rb, line 150
        def interpolate(locale, string, values = {})
          return string unless string.is_a?(::String) && !values.empty?

          string = string.gsub(DEPRECATED_INTERPOLATION_SYNTAX_PATTERN) do
            escaped, key = $1, $2.to_sym
            if escaped
              "{{#{key}}}"
            else
              warn_syntax_deprecation!(locale, string)
              "%{#{key}}"
            end
          end

          values.each do |key, value|
            value = value.call(values) if interpolate_lambda?(value, string, key)
            value = value.to_s unless value.is_a?(::String)
            values[key] = value
          end

          string % values
        rescue KeyError => e
          if string =~ RESERVED_KEYS_PATTERN
            raise ReservedInterpolationKey.new($1.to_sym, string)
          else
            raise MissingInterpolationArgument.new(values, string)
          end
        end