Class: Embargoed::Internationalization
- Inherits:
-
Object
- Object
- Embargoed::Internationalization
- Defined in:
- lib/embargoed/i18n/internationalization.rb
Class Attribute Summary collapse
-
.env ⇒ Object
Returns the value of attribute env.
Class Method Summary collapse
- .array_wrap(object) ⇒ Object
- .embargoed_page ⇒ Object
-
.existent(path) ⇒ Object
Returns all expanded paths but only if they exist in the filesystem.
- .expanded(path) ⇒ Object
- .http_accept_language ⇒ Object
- .i18n_config ⇒ Object
- .include_fallbacks_module ⇒ Object
- .init_fallbacks(fallbacks) ⇒ Object
- .initialize_i18n(env) ⇒ Object
- .setup_additional_helpers ⇒ Object
-
.setup_i18n_config ⇒ Object
Setup i18n configuration.
- .validate_fallbacks(fallbacks) ⇒ Object
Class Attribute Details
.env ⇒ Object
Returns the value of attribute env.
9 10 11 |
# File 'lib/embargoed/i18n/internationalization.rb', line 9 def env @env end |
Class Method Details
.array_wrap(object) ⇒ Object
99 100 101 102 103 104 105 106 107 |
# File 'lib/embargoed/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 |
.embargoed_page ⇒ Object
22 23 24 |
# File 'lib/embargoed/i18n/internationalization.rb', line 22 def ||= .config.default_maintenance_page end |
.existent(path) ⇒ Object
Returns all expanded paths but only if they exist in the filesystem.
52 53 54 |
# File 'lib/embargoed/i18n/internationalization.rb', line 52 def existent(path) (path).select { |f| File.exist?(f) } end |
.expanded(path) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/embargoed/i18n/internationalization.rb', line 40 def (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 ⇒ Object
26 27 28 29 |
# File 'lib/embargoed/i18n/internationalization.rb', line 26 def http_accept_language language = (env.nil? || env.empty?) ? nil : env["HTTP_ACCEPT_LANGUAGE"] @http_accept_language ||= ::AcceptLanguageParser.new(language) end |
.i18n_config ⇒ Object
17 18 19 20 |
# File 'lib/embargoed/i18n/internationalization.rb', line 17 def i18n_config @i18n_config = .config.i18n @i18n_config = @i18n_config.is_a?(::OrderedOptions) ? @i18n_config : ::InheritableOptions.new(@i18n_config) end |
.include_fallbacks_module ⇒ Object
109 110 111 |
# File 'lib/embargoed/i18n/internationalization.rb', line 109 def include_fallbacks_module I18n.backend.class.send(:include, I18n::Backend::Fallbacks) end |
.init_fallbacks(fallbacks) ⇒ Object
113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/embargoed/i18n/internationalization.rb', line 113 def init_fallbacks(fallbacks) include_fallbacks_module args = case fallbacks when ::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) ⇒ Object
12 13 14 15 |
# File 'lib/embargoed/i18n/internationalization.rb', line 12 def initialize_i18n(env) @env = env setup_i18n_config end |
.setup_additional_helpers ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/embargoed/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| .send(:include, helper) if helper.is_a?(Module) end end |
.setup_i18n_config ⇒ Object
Setup i18n configuration.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/embargoed/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 |
.validate_fallbacks(fallbacks) ⇒ Object
128 129 130 131 132 133 134 135 136 137 |
# File 'lib/embargoed/i18n/internationalization.rb', line 128 def validate_fallbacks(fallbacks) case fallbacks when ::OrderedOptions !fallbacks.empty? when TrueClass, Array, Hash true else raise "Unexpected fallback type #{fallbacks.inspect}" end end |