class Locales
Matches configured locales against language ranges.
Definitions
def self.expand(locale, patterns)
Expand a locale into progressively less specific language ranges.
Signature
-
parameter
localeString The locale to expand.
-
parameter
patternsHash The destination language-range mapping.
Implementation
def self.expand(locale, patterns)
parts = locale.split("-")
while parts.any?
pattern = parts.join("-")
patterns[pattern] ||= locale
parts.pop
end
end
def initialize(names)
Initialize the configured locales.
Signature
-
parameter
namesArray(String) The locale names, in preference order.
Implementation
def initialize(names)
@names = names
@patterns = {}
@names.each do |name|
self.class.expand(name, @patterns)
end
freeze
end
def freeze
Freeze this object and its internal state.
Signature
-
returns
self This object.
Implementation
def freeze
return self if frozen?
@names.freeze
@patterns.freeze
return super
end
def match(languages)
Select configured locales matching the given language ranges.
Signature
-
parameter
languagesEnumerable Preferred language ranges.
-
returns
Array(String) Matching locale names in language preference order.
Implementation
def match(languages)
languages.filter_map do |language|
@patterns[language.name]
end
end