module Stringex::Localization

Public Class Methods

backend() click to toggle source
# File lib/stringex/localization.rb, line 13
def backend
  @backend ||= i18n_present? ? Backend::I18n : Backend::Internal
end
backend=(sym_or_class) click to toggle source
# File lib/stringex/localization.rb, line 17
def backend=(sym_or_class)
  if sym_or_class.is_a?(Symbol)
    @backend = case sym_or_class
    when :internal
      Backend::Internal
    when :i18n
      ensure_i18n!
      Backend::I18n
    else
      raise "Invalid backend :#{sym_or_class}"
    end
  else
    @backend = sym_or_class
  end
end
convert(string, options = {}, &block) click to toggle source
# File lib/stringex/localization.rb, line 83
def convert(string, options = {}, &block)
  converter = Converter.new(string, options)
  converter.instance_exec &block
  converter.smart_strip!
  converter.string
end
default_locale() click to toggle source
# File lib/stringex/localization.rb, line 61
def default_locale
  backend.default_locale
end
default_locale=(new_locale) click to toggle source
# File lib/stringex/localization.rb, line 65
def default_locale=(new_locale)
  backend.default_locale = new_locale
end
locale() click to toggle source
# File lib/stringex/localization.rb, line 53
def locale
  backend.locale
end
locale=(new_locale) click to toggle source
# File lib/stringex/localization.rb, line 57
def locale=(new_locale)
  backend.locale = new_locale
end
reset!() click to toggle source
# File lib/stringex/localization.rb, line 78
def reset!
  backend.reset!
  @backend = nil
end
store_translations(locale, scope, data) click to toggle source
# File lib/stringex/localization.rb, line 33
def store_translations(locale, scope, data)
  backend.store_translations(locale, scope, data)
end
translate(scope, key, options = {}) click to toggle source
# File lib/stringex/localization.rb, line 37
def translate(scope, key, options = {})
  return if key == "." # I18n doesn't support dots as translation keys so we don't either

  locale = options[:locale] || self.locale

  translation = initial_translation(scope, key, locale)

  return translation unless translation.nil?

  if locale != default_locale
    translate scope, key, options.merge(:locale => default_locale)
  else
    default_conversion(scope, key) || options[:default]
  end
end
with_default_locale(&block) click to toggle source
# File lib/stringex/localization.rb, line 74
def with_default_locale(&block)
  with_locale default_locale, &block
end
with_locale(new_locale, &block) click to toggle source
# File lib/stringex/localization.rb, line 69
def with_locale(new_locale, &block)
  new_locale = default_locale if new_locale == :default
  backend.with_locale new_locale, &block
end

Private Class Methods

default_conversion(scope, key) click to toggle source
# File lib/stringex/localization.rb, line 96
def default_conversion(scope, key)
  return unless DefaultConversions.respond_to?(scope)
  DefaultConversions.send(scope)[key]
end
ensure_i18n!() click to toggle source
# File lib/stringex/localization.rb, line 105
def ensure_i18n!
  raise Backend::I18nNotDefined unless defined?(I18n)
  raise Backend::I18nMissingTranslate unless I18n.respond_to?(:translate)
end
i18n_present?() click to toggle source
# File lib/stringex/localization.rb, line 101
def i18n_present?
  defined?(I18n) && I18n.respond_to?(:translate)
end
initial_translation(scope, key, locale) click to toggle source
# File lib/stringex/localization.rb, line 92
def initial_translation(scope, key, locale)
  backend.initial_translation(scope, key, locale)
end