def render_citation_details
      # \u00A0 is unicode non-breaking space to keep labels and values from
      # getting separated.
      result_elements = []

      result_elements.push("#{I18n.t('bento_search.volume')}\u00A0#{volume}") if volume.present?

      result_elements.push("#{I18n.t('bento_search.issue')}\u00A0#{issue}") if issue.present?

      if (! start_page.blank?) && (! end_page.blank?)
        result_elements.push html_escape "#{I18n.t('bento_search.pages')}\u00A0#{start_page}-#{end_page}"
      elsif ! start_page.blank?
        result_elements.push html_escape "#{I18n.t('bento_search.page')}\u00A0#{start_page}"
      end

      return nil if result_elements.empty?

      return result_elements.join(", ").html_safe
    end
def render_citation_details
      # \u00A0 is unicode non-breaking space to keep labels and values from
      # getting separated.
      result_elements = []

      result_elements.push("#{I18n.t('bento_search.volume')}\u00A0#{volume}") if volume.present?

      result_elements.push("#{I18n.t('bento_search.issue')}\u00A0#{issue}") if issue.present?

      if (! start_page.blank?) && (! end_page.blank?)
        result_elements.push html_escape "#{I18n.t('bento_search.pages')}\u00A0#{start_page}-#{end_page}"
      elsif ! start_page.blank?
        result_elements.push html_escape "#{I18n.t('bento_search.page')}\u00A0#{start_page}"
      end

      return nil if result_elements.empty?

      return result_elements.join(", ").html_safe
    end
volume, issue, and page numbers. With prefixed labels from I18n.
 That's it.