public
Description: Ruby on Rails
Homepage: http://rubyonrails.org
Clone URL: git://github.com/rails/rails.git
Fixed i18n bulk translate issues in NumberHelper

Signed-off-by: Joshua Peek <josh@joshpeek.com>
clemens (author)
Mon Aug 04 20:26:14 -0700 2008
josh (committer)
Mon Aug 04 20:26:14 -0700 2008
commit  dc66469e6464bbb6d7bd6f242731395b6574aca2
tree    e22679a14c22e48a922edc8b2cbae6b52f8d3446
parent  177a35e711e3b21eac0eb19f03aeae7626e490f5
...
71
72
73
74
75
76
 
 
 
77
78
79
...
109
110
111
112
113
114
 
 
 
115
116
117
...
151
152
153
154
 
155
156
157
...
195
196
197
198
199
200
 
 
 
 
201
202
203
...
209
210
211
212
213
214
215
216
217
 
 
 
 
 
 
 
 
218
219
220
...
251
252
253
254
255
 
 
256
257
258
...
272
273
274
275
276
277
278
279
280
281
 
 
 
 
 
 
 
 
 
 
282
283
284
...
71
72
73
 
 
 
74
75
76
77
78
79
...
109
110
111
 
 
 
112
113
114
115
116
117
...
151
152
153
 
154
155
156
157
...
195
196
197
 
 
 
198
199
200
201
202
203
204
...
210
211
212
 
 
 
 
 
 
213
214
215
216
217
218
219
220
221
222
223
...
254
255
256
 
 
257
258
259
260
261
...
275
276
277
 
 
 
 
 
 
 
278
279
280
281
282
283
284
285
286
287
288
289
290
0
@@ -71,9 +71,9 @@ module ActionView
0
       def number_to_currency(number, options = {})
0
         options.symbolize_keys!
0
 
0
-        defaults, currency = I18n.translate([:'number.format', :'number.currency.format'],
0
-          :locale => options[:locale]) || [{},{}]
0
-        defaults = defaults.merge(currency)
0
+        defaults  = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
0
+        currency  = I18n.translate(:'number.currency.format', :locale => options[:locale], :raise => true) rescue {}
0
+        defaults  = defaults.merge(currency)
0
 
0
         precision = options[:precision] || defaults[:precision]
0
         unit      = options[:unit]      || defaults[:unit]
0
@@ -109,9 +109,9 @@ module ActionView
0
       def number_to_percentage(number, options = {})
0
         options.symbolize_keys!
0
 
0
-        defaults, percentage = I18n.translate([:'number.format', :'number.percentage.format'],
0
-          :locale => options[:locale]) || [{},{}]
0
-        defaults = defaults.merge(percentage)
0
+        defaults   = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
0
+        percentage = I18n.translate(:'number.percentage.format', :locale => options[:locale], :raise => true) rescue {}
0
+        defaults  = defaults.merge(percentage)
0
 
0
         precision = options[:precision] || defaults[:precision]
0
         separator = options[:separator] || defaults[:separator]
0
@@ -151,7 +151,7 @@ module ActionView
0
         options = args.extract_options!
0
         options.symbolize_keys!
0
 
0
-        defaults = I18n.translate(:'number.format', :locale => options[:locale]) || {}
0
+        defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
0
 
0
         unless args.empty?
0
           ActiveSupport::Deprecation.warn('number_with_delimiter takes an option hash ' +
0
@@ -195,9 +195,10 @@ module ActionView
0
         options = args.extract_options!
0
         options.symbolize_keys!
0
 
0
-        defaults, precision_defaults = I18n.translate([:'number.format', :'number.precision.format'],
0
-          :locale => options[:locale]) || [{},{}]
0
-        defaults = defaults.merge(precision_defaults)
0
+        defaults           = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
0
+        precision_defaults = I18n.translate(:'number.precision.format', :locale => options[:locale],
0
+                                                                        :raise => true) rescue {}
0
+        defaults           = defaults.merge(precision_defaults)
0
 
0
         unless args.empty?
0
           ActiveSupport::Deprecation.warn('number_with_precision takes an option hash ' +
0
@@ -209,12 +210,14 @@ module ActionView
0
         separator ||= (options[:separator] || defaults[:separator])
0
         delimiter ||= (options[:delimiter] || defaults[:delimiter])
0
 
0
-        rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
0
-        number_with_delimiter("%01.#{precision}f" % rounded_number,
0
-          :separator => separator,
0
-          :delimiter => delimiter)
0
-      rescue
0
-        number
0
+        begin
0
+          rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
0
+          number_with_delimiter("%01.#{precision}f" % rounded_number,
0
+            :separator => separator,
0
+            :delimiter => delimiter)
0
+        rescue
0
+          number
0
+        end
0
       end
0
 
0
       STORAGE_UNITS = %w( Bytes KB MB GB TB ).freeze
0
@@ -251,8 +254,8 @@ module ActionView
0
         options = args.extract_options!
0
         options.symbolize_keys!
0
 
0
-        defaults, human = I18n.translate([:'number.format', :'number.human.format'],
0
-          :locale => options[:locale]) || [{},{}]
0
+        defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
0
+        human    = I18n.translate(:'number.human.format', :locale => options[:locale], :raise => true) rescue {}
0
         defaults = defaults.merge(human)
0
 
0
         unless args.empty?
0
@@ -272,13 +275,16 @@ module ActionView
0
         number  /= 1024 ** exponent
0
         unit     = STORAGE_UNITS[exponent]
0
 
0
-        number_with_precision(number,
0
-          :precision => precision,
0
-          :separator => separator,
0
-          :delimiter => delimiter
0
-        ).sub(/(\d)(#{Regexp.escape(separator)}[1-9]*)?0+\z/, '\1') + " #{unit}"
0
-      rescue
0
-        number
0
+        begin
0
+          escaped_separator = Regexp.escape(separator)
0
+          number_with_precision(number,
0
+            :precision => precision,
0
+            :separator => separator,
0
+            :delimiter => delimiter
0
+          ).sub(/(\d)(#{escaped_separator}[1-9]*)?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '') + " #{unit}"
0
+        rescue
0
+          number
0
+        end
0
       end
0
     end
0
   end
...
18
19
20
21
22
23
 
 
 
24
25
26
27
28
29
30
 
 
 
31
32
33
34
35
 
36
37
38
39
40
41
42
 
 
 
43
44
45
46
47
48
49
 
 
 
50
51
52
...
18
19
20
 
 
 
21
22
23
24
25
26
27
 
 
 
28
29
30
31
32
33
34
 
35
36
37
38
39
 
 
 
40
41
42
43
44
45
46
 
 
 
47
48
49
50
51
52
0
@@ -18,35 +18,35 @@ class NumberHelperI18nTests < Test::Unit::TestCase
0
     end
0
 
0
     def test_number_to_currency_translates_currency_formats
0
-      I18n.expects(:translate).with(
0
-        [:'number.format', :'number.currency.format'], :locale => 'en-US'
0
-      ).returns([@number_defaults, @currency_defaults])
0
+      I18n.expects(:translate).with(:'number.format', :locale => 'en-US', :raise => true).returns(@number_defaults)
0
+      I18n.expects(:translate).with(:'number.currency.format', :locale => 'en-US',
0
+                                    :raise => true).returns(@currency_defaults)
0
       number_to_currency(1, :locale => 'en-US')
0
     end
0
 
0
     def test_number_with_precision_translates_number_formats
0
-      I18n.expects(:translate).with(
0
-        [:'number.format', :'number.precision.format'], :locale => 'en-US'
0
-      ).returns([@number_defaults, @precision_defaults])
0
+      I18n.expects(:translate).with(:'number.format', :locale => 'en-US', :raise => true).returns(@number_defaults)
0
+      I18n.expects(:translate).with(:'number.precision.format', :locale => 'en-US',
0
+                                    :raise => true).returns(@precision_defaults)
0
       number_with_precision(1, :locale => 'en-US')
0
     end
0
 
0
     def test_number_with_delimiter_translates_number_formats
0
-      I18n.expects(:translate).with(:'number.format', :locale => 'en-US').returns(@number_defaults)
0
+      I18n.expects(:translate).with(:'number.format', :locale => 'en-US', :raise => true).returns(@number_defaults)
0
       number_with_delimiter(1, :locale => 'en-US')
0
     end
0
 
0
     def test_number_to_percentage_translates_number_formats
0
-      I18n.expects(:translate).with(
0
-        [:'number.format', :'number.percentage.format'], :locale => 'en-US'
0
-      ).returns([@number_defaults, @percentage_defaults])
0
+      I18n.expects(:translate).with(:'number.format', :locale => 'en-US', :raise => true).returns(@number_defaults)
0
+      I18n.expects(:translate).with(:'number.percentage.format', :locale => 'en-US',
0
+                                    :raise => true).returns(@percentage_defaults)
0
       number_to_percentage(1, :locale => 'en-US')
0
     end
0
 
0
     def test_number_to_human_size_translates_human_formats
0
-      I18n.expects(:translate).with(
0
-        [:'number.format', :'number.human.format'], :locale => 'en-US'
0
-      ).returns([@number_defaults, @human_defaults])
0
+      I18n.expects(:translate).with(:'number.format', :locale => 'en-US', :raise => true).returns(@number_defaults)
0
+      I18n.expects(:translate).with(:'number.human.format', :locale => 'en-US',
0
+                                    :raise => true).returns(@human_defaults)
0
       # can't be called with 1 because this directly returns without calling I18n.translate
0
       number_to_human_size(1025, :locale => 'en-US')
0
     end

Comments