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.
This commit is contained in:
parent
375e059df5
commit
3e8b62dbfe
1 changed files with 16 additions and 4 deletions
|
@ -7,6 +7,7 @@ module Globalize
|
||||||
return entry unless entry.is_a?(Hash) and count
|
return entry unless entry.is_a?(Hash) and count
|
||||||
key = :zero if count == 0 && entry.has_key?(:zero)
|
key = :zero if count == 0 && entry.has_key?(:zero)
|
||||||
key ||= pluralizer(locale).call(count, entry)
|
key ||= pluralizer(locale).call(count, entry)
|
||||||
|
key = :other unless entry.has_key?(key)
|
||||||
raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key)
|
raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key)
|
||||||
translation entry[key], :plural_key => key
|
translation entry[key], :plural_key => key
|
||||||
end
|
end
|
||||||
|
@ -28,15 +29,26 @@ module Globalize
|
||||||
@pluralizers ||= {
|
@pluralizers ||= {
|
||||||
:en => lambda { |count, entry|
|
:en => lambda { |count, entry|
|
||||||
case count
|
case count
|
||||||
when 1 then entry.has_key?(:one) ? :one : :other
|
when 1 then :one
|
||||||
else :other
|
else :other
|
||||||
end
|
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|
|
:sl => lambda { |count, entry|
|
||||||
case count % 100
|
case count % 100
|
||||||
when 1 then entry.has_key?(:one) ? :one : :other
|
when 1 then :one
|
||||||
when 2 then entry.has_key?(:two) ? :two : :other
|
when 2 then :two
|
||||||
when 3,4 then entry.has_key?(:few) ? :few : :other
|
when 3,4 then :few
|
||||||
else :other
|
else :other
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue