Class: I18n::Railtie
- Inherits:
-
Rails::Railtie
- Object
- Rails::Railtie
- I18n::Railtie
- Defined in:
- activesupport/lib/active_support/i18n_railtie.rb
Constant Summary
Constants inherited from Rails::Railtie
Rails::Railtie::ABSTRACT_RAILTIES
Class Method Summary collapse
- .include_fallbacks_module ⇒ Object
- .init_fallbacks(fallbacks) ⇒ Object
-
.initialize_i18n(app) ⇒ Object
Setup i18n configuration.
- .setup_raise_on_missing_translations_config(app, strict) ⇒ Object
- .validate_fallbacks(fallbacks) ⇒ Object
- .watched_dirs_with_extensions(paths) ⇒ Object
Methods inherited from Rails::Railtie
<=>, abstract_railtie?, #config, configure, #configure, console, generators, inherited, #initialize, #inspect, instance, railtie_name, #railtie_namespace, rake_tasks, runner, server, subclasses
Methods included from ActiveSupport::DescendantsTracker
clear, #descendants, descendants, disable_clear!, reject!, subclasses
Methods included from Rails::Initializable
included, #initializers, #run_initializers
Constructor Details
This class inherits a constructor from Rails::Railtie
Class Method Details
.include_fallbacks_module ⇒ Object
102 103 104 |
# File 'activesupport/lib/active_support/i18n_railtie.rb', line 102 def self.include_fallbacks_module I18n.backend.class.include(I18n::Backend::Fallbacks) end |
.init_fallbacks(fallbacks) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'activesupport/lib/active_support/i18n_railtie.rb', line 106 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 I18n.fallbacks = I18n::Locale::Fallbacks.new(*args) end |
.initialize_i18n(app) ⇒ Object
Setup i18n configuration.
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 79 80 81 |
# File 'activesupport/lib/active_support/i18n_railtie.rb', line 35 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 when :raise_on_missing_translations strict = value == :strict setup_raise_on_missing_translations_config(app, strict) else I18n.public_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 if app.config.reloading_enabled? directories = watched_dirs_with_extensions(reloadable_paths) reloader = app.config.file_watcher.new(I18n.load_path, directories) do I18n.load_path.delete_if { |path| path.to_s.start_with?(Rails.root.to_s) && !File.exist?(path) } I18n.load_path |= reloadable_paths.flat_map(&:existent) end app.reloaders << reloader app.reloader.to_run do reloader.execute_if_updated { require_unload_lock! } end end @i18n_inited = true end |
.setup_raise_on_missing_translations_config(app, strict) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'activesupport/lib/active_support/i18n_railtie.rb', line 83 def self.setup_raise_on_missing_translations_config(app, strict) ActiveSupport.on_load(:action_view) do ActionView::Helpers::TranslationHelper.raise_on_missing_translations = app.config.i18n.raise_on_missing_translations end ActiveSupport.on_load(:active_model_translation) do ActiveModel::Translation.raise_on_missing_translations = app.config.i18n.raise_on_missing_translations if strict end if app.config.i18n.raise_on_missing_translations && I18n.exception_handler.is_a?(I18n::ExceptionHandler) # Only override the i18n gem's default exception handler. I18n.exception_handler = ->(exception, *) { exception = exception.to_exception if exception.is_a?(I18n::MissingTranslation) raise exception } end end |
.validate_fallbacks(fallbacks) ⇒ Object
122 123 124 125 126 127 128 129 130 131 |
# File 'activesupport/lib/active_support/i18n_railtie.rb', line 122 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
133 134 135 136 137 |
# File 'activesupport/lib/active_support/i18n_railtie.rb', line 133 def self.watched_dirs_with_extensions(paths) paths.each_with_object({}) do |path, result| result[path.absolute_current] = path.extensions end end |