Module: I18n::Backend::Simple::Implementation
Constant Summary
Constants included from Transliterator
Transliterator::DEFAULT_REPLACEMENT_CHAR
Instance Method Summary collapse
-
#available_locales ⇒ Object
Get available locales from the translations hash.
- #eager_load! ⇒ Object
- #initialized? ⇒ Boolean
-
#reload! ⇒ Object
Clean up translations hash and set initialized to false on reload!.
-
#store_translations(locale, data, options = EMPTY_HASH) ⇒ Object
Stores translations for the given locale in memory.
- #translations(do_init: false) ⇒ Object
Methods included from Base
#exists?, #load_translations, #localize, #translate
Methods included from Transliterator
Instance Method Details
#available_locales ⇒ Object
Get available locales from the translations hash
48 49 50 51 52 53 54 |
# File 'lib/i18n/backend/simple.rb', line 48 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 |
#eager_load! ⇒ Object
63 64 65 66 |
# File 'lib/i18n/backend/simple.rb', line 63 def eager_load! init_translations unless initialized? super end |
#initialized? ⇒ Boolean
27 28 29 |
# File 'lib/i18n/backend/simple.rb', line 27 def initialized? @initialized ||= false end |
#reload! ⇒ Object
Clean up translations hash and set initialized to false on reload!
57 58 59 60 61 |
# File 'lib/i18n/backend/simple.rb', line 57 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.
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/i18n/backend/simple.rb', line 35 def store_translations(locale, data, = EMPTY_HASH) if I18n.enforce_available_locales && I18n.available_locales_initialized? && !I18n.locale_available?(locale) return data end locale = locale.to_sym translations[locale] ||= Concurrent::Hash.new data = data.deep_symbolize_keys translations[locale].deep_merge!(data) end |
#translations(do_init: false) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/i18n/backend/simple.rb', line 68 def translations(do_init: false) # To avoid returning empty translations, # call `init_translations` init_translations if do_init && !initialized? @translations ||= Concurrent::Hash.new { |h, k| h[k] = Concurrent::Hash.new } end |