Module: I18n::Backend::Simple::Implementation

Includes:
Base
Included in:
I18n::Backend::Simple
Defined in:
lib/i18n/backend/simple.rb

Constant Summary

Constants included from Transliterator

Transliterator::DEFAULT_REPLACEMENT_CHAR

Instance Method Summary collapse

Methods included from Base

#exists?, #load_translations, #localize, #translate

Methods included from Transliterator

get, #transliterate

Instance Method Details

#available_localesObject

Get available locales from the translations hash



47
48
49
50
51
52
53
# File 'lib/i18n/backend/simple.rb', line 47

def available_locales
  init_translations unless initialized?
  translations.inject([]) do |locales, (locale, data)|
    locales << locale unless data.size <= 1 && (data.empty? || data.has_key?(:i18n))
    locales
  end
end

#initialized?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/i18n/backend/simple.rb', line 25

def initialized?
  @initialized ||= false
end

#reload!Object

Clean up translations hash and set initialized to false on reload!



56
57
58
59
60
# File 'lib/i18n/backend/simple.rb', line 56

def reload!
  @initialized = false
  @translations = nil
  super
end

#store_translations(locale, data, options = EMPTY_HASH) ⇒ Object

Stores translations for the given locale in memory. This uses a deep merge for the translations hash, so existing translations will be overwritten by new ones only at the deepest level of the hash.



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/i18n/backend/simple.rb', line 33

def store_translations(locale, data, options = EMPTY_HASH)
  if I18n.enforce_available_locales &&
    I18n.available_locales_initialized? &&
    !I18n.available_locales.include?(locale.to_sym) &&
    !I18n.available_locales.include?(locale.to_s)
    return data
  end
  locale = locale.to_sym
  translations[locale] ||= {}
  data = data.deep_symbolize_keys
  translations[locale].deep_merge!(data)
end