module MiniI18n

Constants

DEFAULT_LOCALE
DEFAULT_SEPARATOR
VERSION

Attributes

fallbacks[RW]

Public Class Methods

available_locales() click to toggle source
# File lib/mini_i18n.rb, line 24
def available_locales
  @@available_locales ||= translations.keys
end
available_locales=(new_locales) click to toggle source
# File lib/mini_i18n.rb, line 28
def available_locales=(new_locales)
  @@available_locales = Array(new_locales).map(&:to_s)
end
configure() { |self| ... } click to toggle source
# File lib/mini_i18n.rb, line 60
def configure
  yield(self) if block_given?
end
default_locale() click to toggle source
# File lib/mini_i18n.rb, line 16
def default_locale
  @@default_locale ||= DEFAULT_LOCALE
end
default_locale=(new_locale) click to toggle source
# File lib/mini_i18n.rb, line 20
def default_locale=(new_locale)
  @@default_locale = available_locale?(new_locale) || default_locale
end
load_translations(path) click to toggle source
# File lib/mini_i18n.rb, line 64
def load_translations(path)
  Dir[path.to_s].each do |file|
    YAML.load_file(file).each do |locale, new_translations|
      add_translations(locale.to_s, new_translations)
    end
  end
end
locale() click to toggle source
# File lib/mini_i18n.rb, line 36
def locale
  Thread.current[:mini_i18n_locale] ||= default_locale
end
locale=(new_locale) click to toggle source
# File lib/mini_i18n.rb, line 40
def locale=(new_locale)
  set_locale(new_locale)
end
pluralization_rules() click to toggle source
# File lib/mini_i18n.rb, line 52
def pluralization_rules
  @@pluralization_rules ||= {}
end
pluralization_rules=(new_rules) click to toggle source
# File lib/mini_i18n.rb, line 56
def pluralization_rules=(new_rules)
  @@pluralization_rules = new_rules
end
separator() click to toggle source
# File lib/mini_i18n.rb, line 44
def separator
  @@separator ||= DEFAULT_SEPARATOR
end
separator=(new_separator) click to toggle source
# File lib/mini_i18n.rb, line 48
def separator=(new_separator)
  @@separator = new_separator || DEFAULT_SEPARATOR
end
t(key, options = {})
Alias for: translate
translate(key, options = {}) click to toggle source
# File lib/mini_i18n.rb, line 72
def translate(key, options = {})
  return if key.empty? || translations.empty?

  return multiple_translate(key, options) if key.is_a?(Array)
  return multiple_locales(key, options) if options[:locale].is_a?(Array)

  _locale = available_locale?(options[:locale]) || locale
  scope = options[:scope]

  keys = [_locale.to_s]
  keys << scope.to_s.split(separator) if scope
  keys << key.to_s.split(separator)
  keys = keys.flatten

  result = lookup(*keys)

  result = with_fallbacks(result, keys)
  result = with_pluralization(result, options, _locale)
  result = with_interpolation(result, options)

  result || options[:default]
end
Also aliased as: t
translations() click to toggle source
# File lib/mini_i18n.rb, line 32
def translations
  @@translations ||= {}
end

Private Class Methods

add_translations(locale, new_translations) click to toggle source
# File lib/mini_i18n.rb, line 117
def add_translations(locale, new_translations)
  @@available_locales << locale unless available_locale?(locale)

  if translations[locale]
    translations[locale] = Utils.deep_merge(translations[locale], new_translations)
  else
    translations[locale] = new_translations
  end
end
available_locale?(new_locale) click to toggle source
# File lib/mini_i18n.rb, line 108
def available_locale?(new_locale)
  new_locale = new_locale.to_s
  available_locales.include?(new_locale) && new_locale
end
lookup(*keys) click to toggle source
# File lib/mini_i18n.rb, line 113
def lookup(*keys)
  translations.dig(*keys)
end
multiple_locales(key, options) click to toggle source
# File lib/mini_i18n.rb, line 160
def multiple_locales(key, options)
  options[:locale].map do |_locale|
    t(key, options.merge(locale: _locale))
  end
end
multiple_translate(keys, options) click to toggle source
# File lib/mini_i18n.rb, line 154
def multiple_translate(keys, options)
  keys.map do |key|
    t(key, options)
  end
end
set_locale(new_locale) click to toggle source
# File lib/mini_i18n.rb, line 98
def set_locale(new_locale)
  new_locale = new_locale.to_s

  if available_locale?(new_locale)
    Thread.current[:mini_i18n_locale] = new_locale
  end

  locale
end
with_fallbacks(result, keys) click to toggle source
# File lib/mini_i18n.rb, line 127
def with_fallbacks(result, keys)
  if fallbacks && result.empty?
    keys[0] = default_locale.to_s
    result = lookup(*keys)
  end

  result
end
with_interpolation(result, options) click to toggle source
# File lib/mini_i18n.rb, line 146
def with_interpolation(result, options)
  if result.respond_to?(:match) && result.match(/%{\w+}/)
    result = Utils.interpolate(result, options)
  end

  result
end
with_pluralization(result, options, locale) click to toggle source
# File lib/mini_i18n.rb, line 136
def with_pluralization(result, options, locale)
  count = options[:count]

  if count && result.is_a?(Hash)
    result = Pluralization.pluralize(result, count, locale)
  end

  result
end