module Globalize

Helper class for storing values per locale. Used by Globalize::Adapter to stash and cache attribute values.

Constants

Version

Public Class Methods

default_fallbacks(for_locale = self.locale) click to toggle source
# File lib/globalize.rb, line 52
def default_fallbacks(for_locale = self.locale)
  i18n_fallbacks? ? I18n.fallbacks[for_locale] : [for_locale.to_sym]
end
fallbacks(for_locale = self.locale) click to toggle source
# File lib/globalize.rb, line 48
def fallbacks(for_locale = self.locale)
  read_fallbacks[for_locale] || default_fallbacks(for_locale)
end
fallbacks=(locales) click to toggle source
# File lib/globalize.rb, line 40
def fallbacks=(locales)
  set_fallbacks(locales)
end
i18n_fallbacks?() click to toggle source
# File lib/globalize.rb, line 44
def i18n_fallbacks?
  I18n.respond_to?(:fallbacks)
end
locale() click to toggle source
# File lib/globalize.rb, line 15
def locale
  read_locale || I18n.locale
end
locale=(locale) click to toggle source
# File lib/globalize.rb, line 19
def locale=(locale)
  set_locale(locale)
end
rails_52?() click to toggle source
# File lib/globalize.rb, line 65
def rails_52?
  ::ActiveRecord.version >= Gem::Version.new('5.2.0')
end
rails_5?() click to toggle source
# File lib/globalize.rb, line 61
def rails_5?
  ::ActiveRecord.version >= Gem::Version.new('5.1.0')
end
storage() click to toggle source

Thread-safe global storage

# File lib/globalize.rb, line 57
def storage
  RequestStore.store
end
with_locale(locale) { |locale| ... } click to toggle source
# File lib/globalize.rb, line 23
def with_locale(locale, &block)
  previous_locale = read_locale
  begin
    set_locale(locale)
    result = yield(locale)
  ensure
    set_locale(previous_locale)
  end
  result
end
with_locales(*locales, &block) click to toggle source
# File lib/globalize.rb, line 34
def with_locales(*locales, &block)
  locales.flatten.map do |locale|
    with_locale(locale, &block)
  end
end

Protected Class Methods

read_fallbacks() click to toggle source
# File lib/globalize.rb, line 79
def read_fallbacks
  storage[:globalize_fallbacks] || HashWithIndifferentAccess.new
end
read_locale() click to toggle source
# File lib/globalize.rb, line 71
def read_locale
  storage[:globalize_locale]
end
set_fallbacks(locales) click to toggle source
# File lib/globalize.rb, line 83
def set_fallbacks(locales)
  fallback_hash = HashWithIndifferentAccess.new

  locales.each do |key, value|
    fallback_hash[key] = value.presence || [key]
  end if locales.present?

  storage[:globalize_fallbacks] = fallback_hash
end
set_locale(locale) click to toggle source
# File lib/globalize.rb, line 75
def set_locale(locale)
  storage[:globalize_locale] = locale.try(:to_sym)
end