Skip to content

Commit

Permalink
fix I18n.load_path injection
Browse files Browse the repository at this point in the history
ice_cube would inject its locale files at the end of `I18n.load_path` due to its `IceCube::I18n` module being `autoload`ed and thereby overwrite any customisation the user may have made in other locale files earlier in the load path.

i fix this by injecting ice cube locales at gem load time so that the user has a chance to modify locale keys later.

this also eliminates a bunch of delegation having a custom I18n module; `IceCube::I18n` is just the same as ::I18n if the i18n gem is available.

resolves #489, #432, #431
  • Loading branch information
glaszig committed Nov 9, 2023
1 parent 10ae8dc commit b6596e5
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 25 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed
- Removed use of `delegate` method added in [66f1d797](https://github.com/ice-cube-ruby/ice_cube/commit/66f1d797092734563bfabd2132c024c7d087f683) , reverting to previous implementation. ([#522](https://github.com/ice-cube-ruby/ice_cube/pull/522)) by [@pacso](https://github.com/pacso)
- Fixed `I18n.load_path` injection ([#546](https://github.com/ice-cube-ruby/ice_cube/pull/546)) by [@glaszig](https://github.com/glaszig)

### Fixed
- Fix for weekly interval results when requesting `occurrences_between` on a narrow range ([#487](https://github.com/seejohnrun/ice_cube/pull/487)) by [@jakebrady5](https://github.com/jakebrady5)
Expand Down
3 changes: 2 additions & 1 deletion lib/ice_cube.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ module IceCube

autoload :TimeUtil, "ice_cube/time_util"
autoload :FlexibleHash, "ice_cube/flexible_hash"
autoload :I18n, "ice_cube/i18n"

require "ice_cube/i18n"

autoload :Rule, "ice_cube/rule"
autoload :Schedule, "ice_cube/schedule"
Expand Down
29 changes: 8 additions & 21 deletions lib/ice_cube/i18n.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
require "ice_cube/null_i18n"

module IceCube
module I18n
LOCALES_PATH = File.expand_path(File.join("..", "..", "..", "config", "locales"), __FILE__)

def self.t(*args, **kwargs)
backend.t(*args, **kwargs)
end

def self.l(*args, **kwargs)
backend.l(*args, **kwargs)
end

def self.backend
@backend ||= detect_backend!
end

def self.detect_backend!
::I18n.load_path += Dir[File.join(LOCALES_PATH, "*.yml")]
::I18n
rescue NameError
NullI18n
end
LOCALES_PATH = File.expand_path(File.join("..", "..", "..", "config", "locales"), __FILE__)

I18n = begin
require "i18n"
::I18n.load_path += Dir[File.join(LOCALES_PATH, "*.yml")]
::I18n
rescue LoadError
NullI18n
end
end
4 changes: 1 addition & 3 deletions spec/examples/to_s_en_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,8 @@
end

context "with I18n" do
before(:each) { I18n.locale = :en }

it "uses I18n" do
expect(IceCube::I18n.backend).to eq(I18n)
expect(IceCube::I18n).to eq ::I18n
end

it_behaves_like "to_s in English"
Expand Down

0 comments on commit b6596e5

Please sign in to comment.