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
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