module Wallaby::Locale

Locale related

Public Class Methods

t(key, options = {}) click to toggle source

Extend translation just for Wallaby so that translation can be prefixed with `wallaby.` @param key [String, Symbol, Array] @param options [Hash] the rest of the arguments @return [String] translation

# File lib/utils/wallaby/locale.rb, line 12
def t(key, options = {})
  translator = options.delete(:translator) || I18n.method(:t)
  return translator.call(key, options) unless key.is_a?(String) || key.is_a?(Symbol)

  new_key, new_defaults = normalize key, options.delete(:default)

  translator.call(new_key, { default: new_defaults }.merge(options))
end

Private Class Methods

normalize(key, defaults) click to toggle source

@param key [String, Symbol, Array] @param defaults [String, Symbol, Array] @return [Array]

# File lib/utils/wallaby/locale.rb, line 26
def normalize(key, defaults)
  *keys, default = *defaults

  # default will NOT be considered as one of the key
  # if it is not set or if it is a String (since String means translation for I18n.t)
  unless default.nil? || default.is_a?(String)
    keys << default
    default = nil
  end

  new_defaults = prefix_defaults_from keys.unshift(key)
  new_key = new_defaults.shift
  new_defaults << default if default
  [new_key, new_defaults]
end
prefix_defaults_from(keys) click to toggle source

Duplicate and prefix the keys respectively @param keys [Array] @return [Array] new_keys

# File lib/utils/wallaby/locale.rb, line 45
def prefix_defaults_from(keys)
  keys.each_with_object([]) do |k, result|
    result << :"wallaby.#{k}" unless k.to_s.start_with? 'wallaby.'
    result << k.to_sym
  end
end