module Stringex::Localization

Public Class Methods

backend() click to toggle source
   # File lib/stringex/localization.rb
14 def backend
15   @backend ||= i18n_present? ? Backend::I18n : Backend::Internal
16 end
backend=(sym_or_class) click to toggle source
   # File lib/stringex/localization.rb
18 def backend=(sym_or_class)
19   if sym_or_class.is_a?(Symbol)
20     @backend = case sym_or_class
21     when :internal
22       Backend::Internal
23     when :i18n
24       ensure_i18n!
25       Backend::I18n
26     else
27       raise "Invalid backend :#{sym_or_class}"
28     end
29   else
30     @backend = sym_or_class
31   end
32 end
convert(string, options = {}, &block) click to toggle source
   # File lib/stringex/localization.rb
84 def convert(string, options = {}, &block)
85   converter = Converter.new(string, options)
86   converter.instance_exec(&block)
87   converter.smart_strip!
88   converter.string
89 end
default_locale() click to toggle source
   # File lib/stringex/localization.rb
62 def default_locale
63   backend.default_locale
64 end
default_locale=(new_locale) click to toggle source
   # File lib/stringex/localization.rb
66 def default_locale=(new_locale)
67   backend.default_locale = new_locale
68 end
locale() click to toggle source
   # File lib/stringex/localization.rb
54 def locale
55   backend.locale
56 end
locale=(new_locale) click to toggle source
   # File lib/stringex/localization.rb
58 def locale=(new_locale)
59   backend.locale = new_locale
60 end
reset!() click to toggle source
   # File lib/stringex/localization.rb
79 def reset!
80   backend.reset!
81   @backend = nil
82 end
store_translations(locale, scope, data) click to toggle source
   # File lib/stringex/localization.rb
34 def store_translations(locale, scope, data)
35   backend.store_translations(locale, scope, data)
36 end
translate(scope, key, options = {}) click to toggle source
   # File lib/stringex/localization.rb
38 def translate(scope, key, options = {})
39   return if key == "." # I18n doesn't support dots as translation keys so we don't either
40 
41   locale = options[:locale] || self.locale
42 
43   translation = initial_translation(scope, key, locale)
44 
45   return translation unless translation.nil?
46 
47   if locale != default_locale
48     translate scope, key, options.merge(locale: default_locale)
49   else
50     default_conversion(scope, key) || options[:default]
51   end
52 end
with_default_locale(&block) click to toggle source
   # File lib/stringex/localization.rb
75 def with_default_locale(&block)
76   with_locale default_locale, &block
77 end
with_locale(new_locale, &block) click to toggle source
   # File lib/stringex/localization.rb
70 def with_locale(new_locale, &block)
71   new_locale = default_locale if new_locale == :default
72   backend.with_locale new_locale, &block
73 end

Private Class Methods

default_conversion(scope, key) click to toggle source
    # File lib/stringex/localization.rb
 97 def default_conversion(scope, key)
 98   return unless DefaultConversions.respond_to?(scope)
 99   DefaultConversions.send(scope)[key]
100 end
ensure_i18n!() click to toggle source
    # File lib/stringex/localization.rb
106 def ensure_i18n!
107   raise Backend::I18nNotDefined unless defined?(I18n)
108   raise Backend::I18nMissingTranslate unless I18n.respond_to?(:translate)
109 end
i18n_present?() click to toggle source
    # File lib/stringex/localization.rb
102 def i18n_present?
103   defined?(I18n) && I18n.respond_to?(:translate)
104 end
initial_translation(scope, key, locale) click to toggle source
   # File lib/stringex/localization.rb
93 def initial_translation(scope, key, locale)
94   backend.initial_translation(scope, key, locale)
95 end