module I18n::Backend::KeyValue::Implementation
Attributes
store[RW]
Public Class Methods
new(store, subtrees=true)
click to toggle source
# File lib/i18n/backend/key_value.rb, line 73 def initialize(store, subtrees=true) @store, @subtrees = store, subtrees end
Public Instance Methods
available_locales()
click to toggle source
# File lib/i18n/backend/key_value.rb, line 96 def available_locales locales = @store.keys.map { |k| k =~ /\./; $` } locales.uniq! locales.compact! locales.map! { |k| k.to_sym } locales end
store_translations(locale, data, options = {})
click to toggle source
# File lib/i18n/backend/key_value.rb, line 77 def store_translations(locale, data, options = {}) escape = options.fetch(:escape, true) flatten_translations(locale, data, escape, @subtrees).each do |key, value| key = "#{locale}.#{key}" case value when Hash if @subtrees && (old_value = @store[key]) old_value = JSON.decode(old_value) value = old_value.deep_symbolize_keys.deep_merge!(value) if old_value.is_a?(Hash) end when Proc raise "Key-value stores cannot handle procs" end @store[key] = JSON.encode(value) unless value.is_a?(Symbol) end end
Protected Instance Methods
lookup(locale, key, scope = [], options = {})
click to toggle source
# File lib/i18n/backend/key_value.rb, line 110 def lookup(locale, key, scope = [], options = {}) key = normalize_flat_keys(locale, key, scope, options[:separator]) value = @store["#{locale}.#{key}"] value = JSON.decode(value) if value if value.is_a?(Hash) value.deep_symbolize_keys elsif !value.nil? value elsif !@subtrees SubtreeProxy.new("#{locale}.#{key}", @store) end end
pluralize(locale, entry, count)
click to toggle source
Calls superclass method
I18n::Backend::Base#pluralize
# File lib/i18n/backend/key_value.rb, line 124 def pluralize(locale, entry, count) if subtrees? super else key = pluralization_key(entry, count) entry[key] end end
subtrees?()
click to toggle source
# File lib/i18n/backend/key_value.rb, line 106 def subtrees? @subtrees end