module I18n::Backend::GlobalizeStore::Implementation
Public Instance Methods
available_locales()
click to toggle source
# File lib/exvo_globalize/backend/globalize_store.rb, line 12 def available_locales GlobalizeTranslation.available_locales end
available_translations(locale = nil)
click to toggle source
returns a nested Hash with all translations { :en => { :hello => { :world => “Hello world”, :earth => “Hello Earth” } } } …
# File lib/exvo_globalize/backend/globalize_store.rb, line 18 def available_translations(locale = nil) translations = locale.present? ? GlobalizeTranslation.where(:locale => locale).ordered : GlobalizeTranslation.ordered translations.inject({}) do |result, element| result.deep_merge( { element["locale"].to_sym => nest_translations(element["key"] => element["value"]) } ) end end
store_flatten_translation(locale, key, value)
click to toggle source
# File lib/exvo_globalize/backend/globalize_store.rb, line 33 def store_flatten_translation(locale, key, value) GlobalizeTranslation.where(:locale => locale).lookup(expand_keys(key)).delete_all GlobalizeTranslation.create(:locale => locale.to_s, :key => key.to_s, :value => value) end
store_translations(locale, data, options = {})
click to toggle source
# File lib/exvo_globalize/backend/globalize_store.rb, line 26 def store_translations(locale, data, options = {}) escape = options.fetch(:escape, true) flatten_translations(locale, data, escape, false).each do |key, value| store_flatten_translation(locale, key, value) end end
Protected Instance Methods
expand_keys(key)
click to toggle source
For a key :‘foo.bar.baz’ return [‘foo’, ‘foo.bar’, ‘foo.bar.baz’]
# File lib/exvo_globalize/backend/globalize_store.rb, line 59 def expand_keys(key) key.to_s.split(FLATTEN_SEPARATOR).inject([]) do |keys, key| keys << [keys.last, key].compact.join(FLATTEN_SEPARATOR) end end
lookup(locale, key, scope = [], options = {})
click to toggle source
# File lib/exvo_globalize/backend/globalize_store.rb, line 40 def lookup(locale, key, scope = [], options = {}) key = normalize_flat_keys(locale, key, scope, options[:separator]) result = GlobalizeTranslation.where(:locale => locale).lookup(key).all if result.empty? nil elsif result.first.key == key result.first.value else chop_range = (key.size + FLATTEN_SEPARATOR.size)..-1 result = result.inject({}) do |hash, r| hash[r.key.slice(chop_range)] = r.value hash end result.deep_symbolize_keys end end