Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Made i18n simple backend able to store false values (and not confuse …

…them with nil or lack of value)

Implemented support.array.skip_last_comma i18n key for
Array#to_sentence, this also tests the ability to store false.

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
  • Loading branch information...
commit d69b4b7bea28fcab04f61afe381e06fa8e37b429 1 parent 0dea211
@tarmo tarmo authored lifo committed
View
3  activesupport/lib/active_support/core_ext/array/conversions.rb
@@ -11,7 +11,8 @@ def to_sentence(options = {})
options.assert_valid_keys(:connector, :skip_last_comma, :locale)
default = I18n.translate(:'support.array.sentence_connector', :locale => options[:locale])
- options.reverse_merge! :connector => default, :skip_last_comma => false
+ default_skip_last_comma = I18n.translate(:'support.array.skip_last_comma', :locale => options[:locale])
+ options.reverse_merge! :connector => default, :skip_last_comma => default_skip_last_comma
options[:connector] = "#{options[:connector]} " unless options[:connector].nil? || options[:connector].strip == ''
case length
View
1  activesupport/lib/active_support/locale/en-US.yml
@@ -29,3 +29,4 @@ en-US:
support:
array:
sentence_connector: "and"
+ skip_last_comma: false
View
16 activesupport/lib/active_support/vendor/i18n-0.0.1/i18n/backend/simple.rb
@@ -30,7 +30,13 @@ def translate(locale, key, options = {})
options.delete(:default)
values = options.reject{|name, value| reserved.include? name }
- entry = lookup(locale, key, scope) || default(locale, default, options) || raise(I18n::MissingTranslationData.new(locale, key, options))
+ entry = lookup(locale, key, scope)
+ if entry.nil?
+ entry = default(locale, default, options)
+ if entry.nil?
+ raise(I18n::MissingTranslationData.new(locale, key, options))
+ end
+ end
entry = pluralize locale, entry, count
entry = interpolate locale, entry, values
entry
@@ -83,7 +89,13 @@ def lookup(locale, key, scope = [])
return unless key
init_translations unless initialized?
keys = I18n.send :normalize_translation_keys, locale, key, scope
- keys.inject(translations){|result, k| result[k.to_sym] or return nil }
+ keys.inject(translations) do |result, k|
+ if (x = result[k.to_sym]).nil?
+ return nil
+ else
+ x
+ end
+ end
end
# Evaluates a default translation.
View
16 activesupport/test/i18n_test.rb
@@ -72,4 +72,20 @@ def test_time_am
def test_time_pm
assert_equal 'pm', I18n.translate(:'time.pm')
end
+
+ def test_sentence_connector
+ assert_equal 'and', I18n.translate(:'support.array.sentence_connector')
+ end
+
+ def test_skip_last_comma
+ assert_equal false, I18n.translate(:'support.array.skip_last_comma')
+ end
+
+ def test_to_sentence
+ assert_equal 'a, b, and c', %w[a b c].to_sentence
+ I18n.backend.store_translations 'en-US', :support => { :array => { :skip_last_comma => true } }
+ assert_equal 'a, b and c', %w[a b c].to_sentence
+ ensure
+ I18n.backend.store_translations 'en-US', :support => { :array => { :skip_last_comma => false } }
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.