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