Class: I18n::Railtie
- Defined in:
- lib/active_support/i18n_railtie.rb
Class Method Summary collapse
- .include_fallbacks_module ⇒ Object
- .init_fallbacks(fallbacks) ⇒ Object
-
.initialize_i18n(app) ⇒ Object
Setup i18n configuration.
- .validate_fallbacks(fallbacks) ⇒ Object
- .watched_dirs_with_extensions(paths) ⇒ Object
Class Method Details
.include_fallbacks_module ⇒ Object
[View source]
80 81 82 |
# File 'lib/active_support/i18n_railtie.rb', line 80 def self.include_fallbacks_module I18n.backend.class.include(I18n::Backend::Fallbacks) end |
.init_fallbacks(fallbacks) ⇒ Object
[View source]
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/active_support/i18n_railtie.rb', line 84 def self.init_fallbacks(fallbacks) include_fallbacks_module args = \ case fallbacks when ActiveSupport::OrderedOptions [*(fallbacks[:defaults] || []) << fallbacks[:map]].compact when Hash, Array Array.wrap(fallbacks) else # TrueClass [I18n.default_locale] end if args.empty? || args.first.is_a?(Hash) ActiveSupport::Deprecation.warn(<<-MSG.squish) Using I18n fallbacks with an empty `defaults` sets the defaults to include the `default_locale`. This behavior will change in Rails 6.1. If you desire the default locale to be included in the defaults, please explicitly configure it with `config.i18n.fallbacks.defaults = [I18n.default_locale]` or `config.i18n.fallbacks = [I18n.default_locale, {...}]`. If you want to opt-in to the new behavior, use `config.i18n.fallbacks.defaults = [nil, {...}]`. MSG args.unshift I18n.default_locale end I18n.fallbacks = I18n::Locale::Fallbacks.new(*args) end |
.initialize_i18n(app) ⇒ Object
Setup i18n configuration.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/active_support/i18n_railtie.rb', line 34 def self.initialize_i18n(app) return if @i18n_inited fallbacks = app.config.i18n.delete(:fallbacks) # Avoid issues with setting the default_locale by disabling available locales # check while configuring. enforce_available_locales = app.config.i18n.delete(:enforce_available_locales) enforce_available_locales = I18n.enforce_available_locales if enforce_available_locales.nil? I18n.enforce_available_locales = false reloadable_paths = [] app.config.i18n.each do |setting, value| case setting when :railties_load_path reloadable_paths = value app.config.i18n.load_path.unshift(*value.flat_map(&:existent)) when :load_path I18n.load_path += value else I18n.send("#{setting}=", value) end end init_fallbacks(fallbacks) if fallbacks && validate_fallbacks(fallbacks) # Restore available locales check so it will take place from now on. I18n.enforce_available_locales = enforce_available_locales directories = watched_dirs_with_extensions(reloadable_paths) reloader = app.config.file_watcher.new(I18n.load_path.dup, directories) do I18n.load_path.keep_if { |p| File.exist?(p) } I18n.load_path |= reloadable_paths.flat_map(&:existent) I18n.reload! end app.reloaders << reloader app.reloader.to_run do reloader.execute_if_updated { require_unload_lock! } end reloader.execute @i18n_inited = true end |
.validate_fallbacks(fallbacks) ⇒ Object
[View source]
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/active_support/i18n_railtie.rb', line 113 def self.validate_fallbacks(fallbacks) case fallbacks when ActiveSupport::OrderedOptions !fallbacks.empty? when TrueClass, Array, Hash true else raise "Unexpected fallback type #{fallbacks.inspect}" end end |
.watched_dirs_with_extensions(paths) ⇒ Object
[View source]
124 125 126 127 128 |
# File 'lib/active_support/i18n_railtie.rb', line 124 def self.watched_dirs_with_extensions(paths) paths.each_with_object({}) do |path, result| result[path.absolute_current] = path.extensions end end |