Contributed by Felix Schäfer. git-svn-id: http://svn.redmine.org/redmine/trunk@21365 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/5.0.0
@@ -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 |
@@ -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 |