Module: I18n::Backend::Fallbacks

### Home Classes Methods

### In Files

- lib/i18n/backend/fallbacks.rb

### Methods

- #extract_non_symbol_default!
- #translate

### Class/Module Index

Quicksearch

- I18n
- I18n::ArgumentError
- I18n::Backend
- I18n::Backend::Base
- I18n::Backend::Cache
- I18n::Backend::Cascade
- I18n::Backend::Chain
- I18n::Backend::Chain::Implementation
- I18n::Backend::Fallbacks
- I18n::Backend::Flatten
- I18n::Backend::Gettext
- I18n::Backend::Gettext::PoData
- I18n::Backend::InterpolationCompiler
- I18n::Backend::InterpolationCompiler::Compiler
- I18n::Backend::KeyValue
- I18n::Backend::KeyValue::Implementation
- I18n::Backend::Memoize
- I18n::Backend::Metadata
- I18n::Backend::Pluralization
- I18n::Backend::Simple
- I18n::Backend::Simple::Implementation
- I18n::Config
- I18n::ExceptionHandler
- I18n::Gettext
- I18n::Gettext::Helpers
- I18n::InvalidLocale
- I18n::InvalidLocaleData
- I18n::InvalidPluralizationData
- I18n::Locale
- I18n::Locale::Fallbacks
- I18n::Locale::Tag
- I18n::Locale::Tag::Parents
- I18n::Locale::Tag::Rfc4646
- I18n::Locale::Tag::Rfc4646::Parser
- I18n::Locale::Tag::Simple
- I18n::MissingInterpolationArgument
- I18n::MissingTranslation
- I18n::MissingTranslation::Base
- I18n::MissingTranslationData
- I18n::ReservedInterpolationKey
- I18n::Tests
- I18n::Tests::Basics
- I18n::Tests::Defaults
- I18n::Tests::Link
- I18n::Tests::Localization
- I18n::Tests::Lookup
- I18n::Tests::Pluralization
- I18n::Tests::Procs
- I18n::UnknownFileType
- GetText
- GetText::PoParser
- Hash
- Kernel

No matching classes.

# I18n::Backend::Fallbacks

### Public Instance Methods

extract_non_symbol_default!(options) click to toggle source

    # File lib/i18n/backend/fallbacks.rb, line 58
    def extract_non_symbol_default!(options)
      defaults = [options[:default]].flatten
      first_non_symbol_default = defaults.detect{|default| !default.is_a?(Symbol)}
      if first_non_symbol_default
        options[:default] = defaults[0, defaults.index(first_non_symbol_default)]
      end
      return first_non_symbol_default
    end

translate(locale, key, options = {}) click to toggle source

Overwrites the Base backend translate method so that it will try each locale given by I18n.fallbacks for the given locale. E.g. for the locale :"de-DE" it might try the locales :"de-DE", :de and :en (depends on the fallbacks implementation) until it finds a result with the given options. If it does not find any result for any of the locales it will then throw MissingTranslation as usual.

The default option takes precedence over fallback locales only when it's a Symbol. When the default contains a String, Proc or Hash it is evaluated last after all the fallback locales have been tried.

    # File lib/i18n/backend/fallbacks.rb, line 37
    def translate(locale, key, options = {})
      return super if options[:fallback]
      default = extract_non_symbol_default!(options) if options[:default]

      options[:fallback] = true
      I18n.fallbacks[locale].each do |fallback|
        begin
          catch(:exception) do
            result = super(fallback, key, options)
            return result unless result.nil?
          end
        rescue I18n::InvalidLocale
          # we do nothing when the locale is invalid, as this is a fallback anyways.
        end
      end
      options.delete(:fallback)

      return super(locale, nil, options.merge(:default => default)) if default
      throw(:exception, I18n::MissingTranslation.new(locale, key, options))
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.