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