svenfuchs-i18n 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/i18n.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "i18n"
3
- s.version = "0.1.2"
3
+ s.version = "0.1.3"
4
4
  s.date = "2009-01-09"
5
5
  s.summary = "Internationalization support for Ruby"
6
6
  s.email = "rails-i18n@googlegroups.com"
@@ -151,12 +151,7 @@ module I18n
151
151
  def interpolate(locale, string, values = {})
152
152
  return string unless string.is_a?(String)
153
153
 
154
- if string.respond_to?(:force_encoding)
155
- original_encoding = string.encoding
156
- string.force_encoding(Encoding::BINARY)
157
- end
158
-
159
- result = string.gsub(MATCH) do
154
+ string.gsub(MATCH) do
160
155
  escaped, pattern, key = $1, $2, $2.to_sym
161
156
 
162
157
  if escaped
@@ -169,9 +164,6 @@ module I18n
169
164
  values[key].to_s
170
165
  end
171
166
  end
172
-
173
- result.force_encoding(original_encoding) if original_encoding
174
- result
175
167
  end
176
168
 
177
169
  # Loads a single translations file by delegating to #load_rb or
@@ -253,6 +253,32 @@ class I18nSimpleBackendInterpolateTest < Test::Unit::TestCase
253
253
  assert_equal 'Häi David!', @backend.send(:interpolate, nil, 'Häi {{name}}!', :name => 'David')
254
254
  end
255
255
 
256
+ def test_interpolate_given_an_unicode_value_hash_interpolates_to_the_string
257
+ assert_equal 'Hi ゆきひろ!', @backend.send(:interpolate, nil, 'Hi {{name}}!', :name => 'ゆきひろ')
258
+ end
259
+
260
+ def test_interpolate_given_an_unicode_value_hash_interpolates_into_unicode_string
261
+ assert_equal 'こんにちは、ゆきひろさん!', @backend.send(:interpolate, nil, 'こんにちは、{{name}}さん!', :name => 'ゆきひろ')
262
+ end
263
+
264
+ if Kernel.const_defined?(:Encoding)
265
+ def test_interpolate_given_a_non_unicode_multibyte_value_hash_interpolates_into_a_string_with_the_same_encoding
266
+ assert_equal euc_jp('Hi ゆきひろ!'), @backend.send(:interpolate, nil, 'Hi {{name}}!', :name => euc_jp('ゆきひろ'))
267
+ end
268
+
269
+ def test_interpolate_given_an_unicode_value_hash_into_a_non_unicode_multibyte_string_raises_encoding_compatibility_error
270
+ assert_raises(Encoding::CompatibilityError) do
271
+ @backend.send(:interpolate, nil, euc_jp('こんにちは、{{name}}さん!'), :name => 'ゆきひろ')
272
+ end
273
+ end
274
+
275
+ def test_interpolate_given_a_non_unicode_multibyte_value_hash_into_an_unicode_string_raises_encoding_compatibility_error
276
+ assert_raises(Encoding::CompatibilityError) do
277
+ @backend.send(:interpolate, nil, 'こんにちは、{{name}}さん!', :name => euc_jp('ゆきひろ'))
278
+ end
279
+ end
280
+ end
281
+
256
282
  def test_interpolate_given_nil_as_a_string_returns_nil
257
283
  assert_nil @backend.send(:interpolate, nil, nil, :name => 'David')
258
284
  end
@@ -272,6 +298,12 @@ class I18nSimpleBackendInterpolateTest < Test::Unit::TestCase
272
298
  def test_interpolate_given_a_string_containing_a_reserved_key_raises_reserved_interpolation_key
273
299
  assert_raises(I18n::ReservedInterpolationKey) { @backend.send(:interpolate, nil, '{{default}}', {:default => nil}) }
274
300
  end
301
+
302
+ private
303
+
304
+ def euc_jp(string)
305
+ string.encode!(Encoding::EUC_JP)
306
+ end
275
307
  end
276
308
 
277
309
  class I18nSimpleBackendLocalizeDateTest < Test::Unit::TestCase
@@ -533,4 +565,4 @@ class I18nSimpleBackendReloadTranslationsTest < Test::Unit::TestCase
533
565
  @backend.reload!
534
566
  assert_equal @backend.initialized?, false
535
567
  end
536
- end
568
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svenfuchs-i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Fuchs