class Turnout::Internationalization

Attributes

env[RW]

Public Class Methods

array_wrap(object) click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 99
def array_wrap(object)
  if object.nil?
    []
  elsif object.respond_to?(:to_ary)
    object.to_ary || [object]
  else
    [object]
  end
end
existent(path) click to toggle source

Returns all expanded paths but only if they exist in the filesystem.

# File lib/turnout/i18n/internationalization.rb, line 52
def existent(path)
  expanded(path).select { |f| File.exist?(f) }
end
expanded(path) click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 40
def expanded(path)
  result = []
  if File.directory?(path)
    result.concat(Dir.glob(File.join(path, '**', '**')).map { |file| file }.sort)
  else
    result << path
  end
  result.uniq!
  result
end
http_accept_language() click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 26
def http_accept_language
  language = (env.nil? || env.empty?) ? nil : env["HTTP_ACCEPT_LANGUAGE"]
  @http_accept_language ||= Turnout::AcceptLanguageParser.new(language)
end
i18n_config() click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 17
def i18n_config
  @i18n_config = Turnout.config.i18n
  @i18n_config =  @i18n_config.is_a?(Turnout::OrderedOptions) ? @i18n_config : Turnout::InheritableOptions.new(@i18n_config)
end
include_fallbacks_module() click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 109
def include_fallbacks_module
  I18n.backend.class.send(:include, I18n::Backend::Fallbacks)
end
init_fallbacks(fallbacks) click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 113
def init_fallbacks(fallbacks)
  include_fallbacks_module

  args = case fallbacks
  when Turnout::OrderedOptions
    [*(fallbacks[:defaults] || []) << fallbacks[:map]].compact
  when Hash, Array
    array_wrap(fallbacks)
  else # TrueClass
    []
  end

  I18n.fallbacks = I18n::Locale::Fallbacks.new(*args)
end
initialize_i18n(env) click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 12
def initialize_i18n(env)
  @env = env
  setup_i18n_config
end
setup_additional_helpers() click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 31
def setup_additional_helpers
  i18n_additional_helpers = i18n_config.delete(:additional_helpers)
  i18n_additional_helpers = i18n_additional_helpers.is_a?(Array) ? i18n_additional_helpers : []

  i18n_additional_helpers.each do |helper|
    turnout_page.send(:include, helper) if helper.is_a?(Module)
  end
end
setup_i18n_config() click to toggle source

Setup i18n configuration.

# File lib/turnout/i18n/internationalization.rb, line 57
def setup_i18n_config
  return unless i18n_config.enabled
  setup_additional_helpers
  fallbacks = i18n_config.delete(:fallbacks)


  # Avoid issues with setting the default_locale by disabling available locales
  # check while configuring.
  enforce_available_locales = i18n_config.delete(:enforce_available_locales)
  enforce_available_locales = I18n.enforce_available_locales if enforce_available_locales.nil?
  I18n.enforce_available_locales = false

  i18n_config.except(:enabled, :use_language_header).each do |setting, value|
    case setting
    when :railties_load_path
      I18n.load_path.unshift(*value.map { |file| existent(file) }.flatten)
    when :load_path
      I18n.load_path += value
    else
      I18n.send("#{setting}=", value)
    end
  end


  init_fallbacks(fallbacks) if fallbacks && validate_fallbacks(fallbacks)
  I18n.backend.load_translations

  # Restore available locales check so it will take place from now on.
  I18n.enforce_available_locales = enforce_available_locales

  begin
    if i18n_config.use_language_header
      I18n.locale = http_accept_language.compatible_language_from(I18n.available_locales) || I18n.default_locale
    else
      I18n.locale = I18n.default_locale
    end
  rescue
    #nothing
  end

end
turnout_page() click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 22
def turnout_page
  @turnout_page ||= Turnout.config.default_maintenance_page
end
validate_fallbacks(fallbacks) click to toggle source
# File lib/turnout/i18n/internationalization.rb, line 128
def validate_fallbacks(fallbacks)
  case fallbacks
  when Turnout::OrderedOptions
    !fallbacks.empty?
  when TrueClass, Array, Hash
    true
  else
    raise "Unexpected fallback type #{fallbacks.inspect}"
  end
end