module Globalize

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

Constants

ACTIVE_RECORD_50
ACTIVE_RECORD_51
ACTIVE_RECORD_52
ACTIVE_RECORD_60
ACTIVE_RECORD_61
CURRENT_RUBY
RUBY_VERSION_27
Version

Public Class Methods

default_fallbacks(for_locale = self.locale) click to toggle source
# File lib/globalize.rb, line 62
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 58
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 50
def fallbacks=(locales)
  set_fallbacks(locales)
end
i18n_fallbacks?() click to toggle source
# File lib/globalize.rb, line 54
def i18n_fallbacks?
  I18n.respond_to?(:fallbacks)
end
locale() click to toggle source
# File lib/globalize.rb, line 25
def locale
  read_locale || I18n.locale
end
locale=(locale) click to toggle source
# File lib/globalize.rb, line 29
def locale=(locale)
  set_locale(locale)
end
rails_42?() click to toggle source
# File lib/globalize.rb, line 75
def rails_42?
  ::ActiveRecord.version < ACTIVE_RECORD_50
end
rails_51?() click to toggle source
# File lib/globalize.rb, line 83
def rails_51?
  ::ActiveRecord.version >= ACTIVE_RECORD_51
end
rails_52?() click to toggle source
# File lib/globalize.rb, line 87
def rails_52?
  ::ActiveRecord.version >= ACTIVE_RECORD_52
end
rails_5?() click to toggle source
# File lib/globalize.rb, line 79
def rails_5?
  ::ActiveRecord.version >= ACTIVE_RECORD_50
end
rails_61?() click to toggle source
# File lib/globalize.rb, line 95
def rails_61?
  ::ActiveRecord.version >= ACTIVE_RECORD_61
end
rails_6?() click to toggle source
# File lib/globalize.rb, line 91
def rails_6?
  ::ActiveRecord.version >= ACTIVE_RECORD_60
end
ruby_27?() click to toggle source
# File lib/globalize.rb, line 71
def ruby_27?
  CURRENT_RUBY >= RUBY_VERSION_27
end
storage() click to toggle source

Thread-safe global storage

# File lib/globalize.rb, line 67
def storage
  RequestStore.store
end
with_locale(locale) { |locale| ... } click to toggle source
# File lib/globalize.rb, line 33
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 44
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 109
def read_fallbacks
  storage[:globalize_fallbacks] || HashWithIndifferentAccess.new
end
read_locale() click to toggle source
# File lib/globalize.rb, line 101
def read_locale
  storage[:globalize_locale]
end
set_fallbacks(locales) click to toggle source
# File lib/globalize.rb, line 113
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 105
def set_locale(locale)
  storage[:globalize_locale] = locale.try(:to_sym)
end