From: Tom Hughes Date: Tue, 3 Nov 2009 09:22:23 +0000 (+0000) Subject: Add russian pluralization logic, based on description in the russion X-Git-Tag: live~6463 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/3e8b62dbfe5a34c87936b044869af4968f836c6f?ds=sidebyside Add russian pluralization logic, based on description in the russion plugin here: http://github.com/yaroslav/russian/blob/master/lib/russian/backend/advanced.rb Also simplify the other pluralizers by defaulting to :other when a specific subkey is not found. Closes #2412. --- diff --git a/vendor/plugins/globalize2/lib/globalize/backend/pluralizing.rb b/vendor/plugins/globalize2/lib/globalize/backend/pluralizing.rb index 753711d0b..9dd9bb667 100644 --- a/vendor/plugins/globalize2/lib/globalize/backend/pluralizing.rb +++ b/vendor/plugins/globalize2/lib/globalize/backend/pluralizing.rb @@ -7,6 +7,7 @@ module Globalize return entry unless entry.is_a?(Hash) and count key = :zero if count == 0 && entry.has_key?(:zero) key ||= pluralizer(locale).call(count, entry) + key = :other unless entry.has_key?(key) raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key) translation entry[key], :plural_key => key end @@ -28,15 +29,26 @@ module Globalize @pluralizers ||= { :en => lambda { |count, entry| case count - when 1 then entry.has_key?(:one) ? :one : :other + when 1 then :one else :other end }, + :ru => lambda { |count, entry| + case count % 100 + when 11,12,13,14 then :many + else case count % 10 + when 1 then :one + when 2,3,4 then :few + when 5,6,7,8,9,0 then :many + else :other + end + end + }, :sl => lambda { |count, entry| case count % 100 - when 1 then entry.has_key?(:one) ? :one : :other - when 2 then entry.has_key?(:two) ? :two : :other - when 3,4 then entry.has_key?(:few) ? :few : :other + when 1 then :one + when 2 then :two + when 3,4 then :few else :other end }