# * 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
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