Module: Spree::StorefrontLocaleHelper
- Defined in:
- app/helpers/spree/storefront_locale_helper.rb
Instance Method Summary collapse
- #current_locale ⇒ Object
-
#header_locale ⇒ Object
Taken from rack-contrib github.com/rack/rack-contrib/blob/main/lib/rack/contrib/locale.rb#L58.
- #header_locale? ⇒ Boolean
Instance Method Details
#current_locale ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'app/helpers/spree/storefront_locale_helper.rb', line 3 def current_locale @current_locale ||= if user_locale? try_spree_current_user.selected_locale elsif params_locale? params[:locale] elsif header_locale? header_locale end ensure @current_locale ||= default_locale end |
#header_locale ⇒ Object
Taken from rack-contrib github.com/rack/rack-contrib/blob/main/lib/rack/contrib/locale.rb#L58
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/helpers/spree/storefront_locale_helper.rb', line 21 def header_locale header = request.env['HTTP_ACCEPT_LANGUAGE'] return if header.nil? locales = header.gsub(/\s+/, '').split(",").map do |language_tag| locale, quality = language_tag.split(/;q=/i) quality = quality ? quality.to_f : 1.0 [locale, quality] end locales = locales. reject { |(locale, quality)| locale == '*' || quality.zero? }. sort_by { |(_, quality)| quality }. map(&:first) locale_from_header = locales.reverse.find { |locale| supported_locale?(locale) } locale_from_header ||= locales.reverse.find { |locale| supported_locale?(locale.first(2)) }&.first(2) locale_from_header end |
#header_locale? ⇒ Boolean
15 16 17 |
# File 'app/helpers/spree/storefront_locale_helper.rb', line 15 def header_locale? header_locale.present? end |