diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-04-19 16:19:02 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-19 16:19:02 -0400 |
commit | cddcc1dac4a0cb49160eb7d929016ede6c495da2 (patch) | |
tree | b2a18de3706ab850372ab46f8cc521c2286e3296 /activesupport/lib | |
parent | 8bdf50d5158d84e4b6ee9edc463873d464732fbe (diff) | |
parent | f58e2dd095e2e9e4e42e6d7af229f87e70fd5427 (diff) | |
download | rails-cddcc1dac4a0cb49160eb7d929016ede6c495da2.tar.gz rails-cddcc1dac4a0cb49160eb7d929016ede6c495da2.tar.bz2 rails-cddcc1dac4a0cb49160eb7d929016ede6c495da2.zip |
Merge pull request #32168 from christianblais/activesupport-ordinalize-i18n
`#ordinal` and `#ordinalize` now support I18n
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/i18n.rb | 1 | ||||
-rw-r--r-- | activesupport/lib/active_support/inflector/methods.rb | 15 | ||||
-rw-r--r-- | activesupport/lib/active_support/locale/en.rb | 28 |
3 files changed, 31 insertions, 13 deletions
diff --git a/activesupport/lib/active_support/i18n.rb b/activesupport/lib/active_support/i18n.rb index d60b3eff30..39dab1cc71 100644 --- a/activesupport/lib/active_support/i18n.rb +++ b/activesupport/lib/active_support/i18n.rb @@ -13,3 +13,4 @@ require "active_support/lazy_load_hooks" ActiveSupport.run_load_hooks(:i18n) I18n.load_path << File.expand_path("locale/en.yml", __dir__) +I18n.load_path << File.expand_path("locale/en.rb", __dir__) diff --git a/activesupport/lib/active_support/inflector/methods.rb b/activesupport/lib/active_support/inflector/methods.rb index 7e782e2a93..339b93b8da 100644 --- a/activesupport/lib/active_support/inflector/methods.rb +++ b/activesupport/lib/active_support/inflector/methods.rb @@ -341,18 +341,7 @@ module ActiveSupport # ordinal(-11) # => "th" # ordinal(-1021) # => "st" def ordinal(number) - abs_number = number.to_i.abs - - if (11..13).include?(abs_number % 100) - "th" - else - case abs_number % 10 - when 1; "st" - when 2; "nd" - when 3; "rd" - else "th" - end - end + I18n.translate("number.nth.ordinals", number: number) end # Turns a number into an ordinal string used to denote the position in an @@ -365,7 +354,7 @@ module ActiveSupport # ordinalize(-11) # => "-11th" # ordinalize(-1021) # => "-1021st" def ordinalize(number) - "#{number}#{ordinal(number)}" + I18n.translate("number.nth.ordinalized", number: number) end private diff --git a/activesupport/lib/active_support/locale/en.rb b/activesupport/lib/active_support/locale/en.rb new file mode 100644 index 0000000000..26c2280c95 --- /dev/null +++ b/activesupport/lib/active_support/locale/en.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +{ + en: { + number: { + nth: { + ordinals: lambda do |_key, number:, **_options| + abs_number = number.to_i.abs + + if (11..13).cover?(abs_number % 100) + "th" + else + case abs_number % 10 + when 1 then "st" + when 2 then "nd" + when 3 then "rd" + else "th" + end + end + end, + + ordinalized: lambda do |_key, number:, **_options| + "#{number}#{ActiveSupport::Inflector.ordinal(number)}" + end + } + } + } +} |