提交 d69b4b7b 编写于 作者: T Tarmo Tänav 提交者: Pratik Naik

Made i18n simple backend able to store false values (and not confuse them with...

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: NPratik Naik <pratiknaik@gmail.com>
上级 0dea211f
......@@ -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
......
......@@ -29,3 +29,4 @@ en-US:
support:
array:
sentence_connector: "and"
skip_last_comma: false
......@@ -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.
......
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册