Sha256: df48c2e884310ab7cba74e762a1483d7de0632c757b67e82914fff8832e1a7d9

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

# coding: utf-8
require 'i18n/tasks/data/file_system'

module I18n::Tasks
  module Data

    # I18n data provider
    # @see I18n::Tasks::Data::FileSystem
    def data
      @data ||= begin
        conf    = (config[:data] || {}).with_indifferent_access
        adapter = (conf[:adapter].presence || conf[:class].presence || :file_system).to_s
        if adapter !~ /[A-Z]/
          adapter = "I18n::Tasks::Data::#{adapter.camelize}"
        end
        adapter.constantize.new(conf.except(:adapter, :class).merge(base_locale: base_locale))
      end
    end

    def t(key, locale = base_locale)
      data.t(key, locale)
    end

    def tree(locale)
      data[locale][locale].children
    end

    def node(key, locale = base_locale)
      data[locale]["#{locale}.#{key}"]
    end

    def build_tree(hash)
      I18n::Tasks::Data::Tree::Siblings.from_nested_hash(hash)
    end

    def t_proc(locale = base_locale)
      @t_proc         ||= {}
      @t_proc[locale] ||= proc { |key| t(key, locale) }
    end

    # whether the value for key exists in locale (defaults: base_locale)
    def key_value?(key, locale = base_locale)
      !t(key, locale).nil?
    end

    # write to store, normalizing all data
    def normalize_store!(from = nil)
      from = self.locales unless from
      Array(from).each do |target_locale|
        # the store itself handles normalization
        data[target_locale] = data[target_locale]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
i18n-tasks-0.5.0 lib/i18n/tasks/data.rb