From 6c3df7b0b60cf2b435775641bbb1b6c21abf139a Mon Sep 17 00:00:00 2001 From: Samuel Oey Date: Thu, 28 May 2009 02:12:37 +0200 Subject: [PATCH] changed pluralizer to also handle zero values from lambda --- lib/globalize/backend/pluralizing.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/globalize/backend/pluralizing.rb b/lib/globalize/backend/pluralizing.rb index 80016f208..03da39be3 100644 --- a/lib/globalize/backend/pluralizing.rb +++ b/lib/globalize/backend/pluralizing.rb @@ -3,11 +3,13 @@ module Globalize module Backend class Pluralizing < I18n::Backend::Simple + def pluralize(locale, entry, count) return entry unless entry.is_a?(Hash) and count - key = :zero if count == 0 && entry.has_key?(:zero) - key ||= pluralizer(locale).call(count) - raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key) + key = pluralizer(locale).call(count) + # use other as fallback for zero if zero entry is not available + key = :other if key == :zero && !entry.has_key?(:zero) + raise I18n::InvalidPluralizationData.new(entry, count) unless entry.has_key?(key) translation entry[key], :plural_key => key end @@ -18,14 +20,14 @@ def add_pluralizer(locale, pluralizer) def pluralizer(locale) pluralizers[locale.to_sym] || default_pluralizer end - + protected def default_pluralizer pluralizers[:en] end def pluralizers - @pluralizers ||= { :en => lambda{|n| n == 1 ? :one : :other } } + @pluralizers ||= { :en => lambda{|n| n == 1 ? :one : ( n == 0 ? :zero : :other) } } end # Overwrite this method to return something other than a String