lib/traco/locale_fallbacks.rb in traco-3.1.3 vs lib/traco/locale_fallbacks.rb in traco-3.1.4
- old
+ new
@@ -4,10 +4,11 @@
class LocaleFallbacks
OPTIONS = [
DEFAULT_FALLBACK = :default,
ANY_FALLBACK = :any,
NO_FALLBACK = false,
+ DEFAULT_FIRST_FALLBACK = :default_first,
]
attr_reader :fallback_option
private :fallback_option
@@ -15,25 +16,20 @@
@fallback_option = validate_option(fallback_option)
@default_locale = I18n.default_locale
@available_locales = I18n.available_locales.sort
end
- def [](for_locale)
- chain = [for_locale]
- chain << @default_locale if include_default_locale?
- chain |= @available_locales if include_available_locales?
- chain
+ def [](current_locale)
+ case fallback_option
+ when DEFAULT_FALLBACK then [ current_locale, @default_locale ]
+ when ANY_FALLBACK then [ current_locale, @default_locale, *@available_locales ].uniq
+ when NO_FALLBACK then [ current_locale ]
+ when DEFAULT_FIRST_FALLBACK then [ @default_locale, *@available_locales ].uniq
+ else raise "Unknown fallback." # Should never get here.
+ end
end
private
-
- def include_default_locale?
- [ DEFAULT_FALLBACK, ANY_FALLBACK ].include?(fallback_option)
- end
-
- def include_available_locales?
- ANY_FALLBACK == fallback_option
- end
def validate_option(fallback_option)
if OPTIONS.include?(fallback_option)
fallback_option
else