Sha256: e60eeea33bc487f15dcef331727c126bf73f78f59bbc1b68c68fda43afcf90c5

Contents?: true

Size: 1.7 KB

Versions: 20

Compression:

Stored size: 1.7 KB

Contents

module Spree
  module Core
    module ControllerHelpers
      module Locale
        extend ActiveSupport::Concern

        included do
          before_action :set_locale

          helper_method :supported_locales
          helper_method :supported_locales_for_all_stores
          helper_method :current_locale
          helper_method :supported_locale?
          helper_method :available_locales
          helper_method :locale_param
        end

        def set_locale
          I18n.locale = current_locale
        end

        def current_locale
          @current_locale ||= if params[:locale].present? && supported_locale?(params[:locale])
                                params[:locale]
                              elsif respond_to?(:config_locale, true) && config_locale.present?
                                config_locale
                              else
                                current_store&.default_locale || Rails.application.config.i18n.default_locale || I18n.default_locale
                              end
        end

        def supported_locales
          @supported_locales ||= current_store&.supported_locales_list
        end

        def supported_locale?(locale_code)
          return false if supported_locales.nil?

          supported_locales.include?(locale_code&.to_s)
        end

        def supported_locales_for_all_stores
          @supported_locales_for_all_stores ||= Spree.available_locales
        end

        def available_locales
          Spree::Store.available_locales
        end

        def locale_param
          return if I18n.locale.to_s == current_store.default_locale || current_store.default_locale.nil?

          I18n.locale.to_s
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
spree_core-4.2.7 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.3 lib/spree/core/controller_helpers/locale.rb
spree_core-4.4.1 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.6 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.2 lib/spree/core/controller_helpers/locale.rb
spree_core-4.4.0 lib/spree/core/controller_helpers/locale.rb
spree_core-4.4.0.rc2 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.1 lib/spree/core/controller_helpers/locale.rb
spree_core-4.4.0.rc1 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.0 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.0.rc3 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.0.rc2 lib/spree/core/controller_helpers/locale.rb
spree_core-4.3.0.rc1 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.5 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.4 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.3.1 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.3 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.2 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.1 lib/spree/core/controller_helpers/locale.rb
spree_core-4.2.0 lib/spree/core/controller_helpers/locale.rb