]> source.dussan.org Git - redmine.git/commitdiff
Custom I18n Pluralization rules are not applied correctly (#36396).
authorGo MAEDA <maeda@farend.jp>
Sat, 15 Jan 2022 03:18:33 +0000 (03:18 +0000)
committerGo MAEDA <maeda@farend.jp>
Sat, 15 Jan 2022 03:18:33 +0000 (03:18 +0000)
Contributed by Felix Schäfer.

git-svn-id: http://svn.redmine.org/redmine/trunk@21365 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/i18n.rb
test/unit/lib/redmine/i18n_test.rb

index 1e52439fc0835772b97a237201021ff9b711624e..b1066539f235b695003cc7e806e33fe2bd12aa6c 100644 (file)
@@ -159,14 +159,14 @@ module Redmine
     # * available_locales are determined by looking at translation file names
     class Backend < ::I18n::Backend::Simple
       module Implementation
-        include ::I18n::Backend::Pluralization
-
         # Get available locales from the translations filenames
         def available_locales
           @available_locales ||= ::I18n.load_path.map {|path| File.basename(path, '.*')}.uniq.sort.map(&:to_sym)
         end
       end
 
+      # Adds custom pluralization rules
+      include ::I18n::Backend::Pluralization
       # Adds fallback to default locale for untranslated strings
       include ::I18n::Backend::Fallbacks
     end
index 4856c51904cb36b05ca4c268d5494f40b5a04052..4e15ae56b7c3ceedbb0ca3aa75529739f069d503 100644 (file)
@@ -255,4 +255,13 @@ class Redmine::I18nTest < ActiveSupport::TestCase
     set_language_if_valid 'fr'
     assert_equal 'French (Français)', l(:general_lang_name)
   end
+
+  def test_custom_pluralization_rules
+    I18n.backend.store_translations :pt, i18n: {plural: {rule: ->(n) {[0, 1].include?(n) ? :one : :other }}}
+    I18n.backend.store_translations :pt, apples: {one: 'one or none', other: 'more than one'}
+    assert_equal 'one or none', ll(:pt, :apples, count: 0)
+    assert_equal 'more than one', ll(:pt, :apples, count: 2)
+  ensure
+    I18n.reload!
+  end
 end