# File lib/i18n/locale/fallbacks.rb, line 56 def initialize(*mappings) @map = {} map(mappings.pop) if mappings.last.is_a?(Hash) self.defaults = mappings.empty? ? [I18n.default_locale.to_sym] : mappings end
# File lib/i18n/locale/fallbacks.rb, line 67 def [](locale) raise InvalidLocale.new(locale) if locale.nil? locale = locale.to_sym super || store(locale, compute(locale)) end
# File lib/i18n/locale/fallbacks.rb, line 62 def defaults=(defaults) @defaults = defaults.map { |default| compute(default, false) }.flatten end
# File lib/i18n/locale/fallbacks.rb, line 73 def map(mappings) mappings.each do |from, to| from, to = from.to_sym, Array(to) to.each do |_to| @map[from] ||= [] @map[from] << _to.to_sym end end end
# File lib/i18n/locale/fallbacks.rb, line 85 def compute(tags, include_defaults = true) result = Array(tags).collect do |tag| tags = I18n::Locale::Tag.tag(tag).self_and_parents.map! { |t| t.to_sym } tags.each { |_tag| tags += compute(@map[_tag]) if @map[_tag] } tags end.flatten result.push(*defaults) if include_defaults result.uniq.compact end