Class: Cms::LocaleResolver

Inherits:
Object
  • Object
show all
Defined in:
app/services/cms/locale_resolver.rb

Overview

Resolves the best available locale given a preference and a set of available locales.

Fallback chain: requested → site default → I18n default → first available

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(requested:, site:, available:) ⇒ LocaleResolver

Returns a new instance of LocaleResolver.



12
13
14
15
16
# File 'app/services/cms/locale_resolver.rb', line 12

def initialize(requested:, site:, available:)
  @requested = requested.to_s.presence
  @site      = site
  @available = Array(available).map(&:to_s)
end

Class Method Details

.resolve(requested:, site:, available:) ⇒ Object



8
9
10
# File 'app/services/cms/locale_resolver.rb', line 8

def self.resolve(requested:, site:, available:)
  new(requested: requested, site: site, available: available).resolve
end

Instance Method Details

#resolveObject



18
19
20
21
22
# File 'app/services/cms/locale_resolver.rb', line 18

def resolve
  return fallback_chain.first if @available.empty?

  fallback_chain.find { |locale| @available.include?(locale) } || @available.first
end