# File lib/action_view/helpers/translation_helper.rb, line 36
      def translate(key, options = {})
        # If the user has specified rescue_format then pass it all through, otherwise use
        # raise and do the work ourselves
        if options.key?(:raise) || options.key?(:rescue_format)
          raise_error = options[:raise] || options[:rescue_format]
        else
          raise_error = false
          options[:raise] = true
        end

        if html_safe_translation_key?(key)
          html_safe_options = options.dup
          options.except(*I18n::RESERVED_KEYS).each do |name, value|
            unless name == :count && value.is_a?(Numeric)
              html_safe_options[name] = ERB::Util.html_escape(value.to_s)
            end
          end
          translation = I18n.translate(scope_key_by_partial(key), html_safe_options)

          translation.respond_to?(:html_safe) ? translation.html_safe : translation
        else
          I18n.translate(scope_key_by_partial(key), options)
        end
      rescue I18n::MissingTranslationData => e
        raise e if raise_error

        keys = I18n.normalize_keys(e.locale, e.key, e.options[:scope])
        content_tag('span', keys.last.to_s.titleize, :class => 'translation_missing', :title => "translation missing: #{keys.join('.')}")
      end