Sha256: b6f13a38c82278df3aa627f600e991732050586a023bc19d9be8ad873cbf0601

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

# coding: utf-8
require "i18n"

module Abak::Flow
  class Locale
    FILES = File.join(File.dirname(__FILE__), "locales/*.{rb,yml}").freeze

    def initialize(locale)
      I18n.enforce_available_locales = false
      I18n.load_path += Dir.glob(FILES)
      I18n.locale = locale
    end

    def name(object)
      I18n.t("#{namenize object}.name")
    end

    def field(object, key)
      I18n.t(key, scope: "#{namenize object}.fields")
    end

    def word(object, key, options = {})
      I18n.t(key, options.merge(scope: "#{namenize object}.words"))
    end

    def error(object, key = nil, options = {})
      key.nil? ? I18n.t("#{namenize object}.fail", options)
        : I18n.t(key, options.merge(scope: "#{namenize object}.errors"))
    end

    def success(object, *args)
      options = args.last.is_a?(Hash) ? args.pop : {}
      key = args[0]

      key.nil? ? I18n.t("#{namenize object}.success", options)
        : I18n.t(key, options.merge(scope: "#{namenize object}.success"))
    end

    private

    def namenize(object)
      object.class.name.downcase.gsub(/\:\:/, ".")
    end
  end # class Locale
end # module Abak::Flow

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
abak-flow-1.1.1 lib/abak-flow/locale.rb
abak-flow-1.1.0 lib/abak-flow/locale.rb