thedarkone-i18n 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/CHANGELOG.textile +57 -0
  2. data/README.textile +43 -9
  3. data/Rakefile +21 -0
  4. data/VERSION +1 -0
  5. data/lib/i18n.rb +87 -16
  6. data/lib/i18n/backend/base.rb +251 -0
  7. data/lib/i18n/backend/cache.rb +71 -0
  8. data/lib/i18n/backend/chain.rb +64 -0
  9. data/lib/i18n/backend/fallbacks.rb +53 -0
  10. data/lib/i18n/backend/fast.rb +53 -22
  11. data/lib/i18n/backend/fast/interpolation_compiler.rb +84 -0
  12. data/lib/i18n/backend/gettext.rb +65 -0
  13. data/lib/i18n/backend/lazy_reloading.rb +60 -0
  14. data/lib/i18n/backend/pluralization.rb +56 -0
  15. data/lib/i18n/backend/simple.rb +17 -240
  16. data/lib/i18n/exceptions.rb +13 -5
  17. data/lib/i18n/gettext.rb +25 -0
  18. data/lib/i18n/helpers/gettext.rb +35 -0
  19. data/lib/i18n/locale/fallbacks.rb +100 -0
  20. data/lib/i18n/locale/tag.rb +27 -0
  21. data/lib/i18n/locale/tag/parents.rb +24 -0
  22. data/lib/i18n/locale/tag/rfc4646.rb +78 -0
  23. data/lib/i18n/locale/tag/simple.rb +44 -0
  24. data/test/all.rb +5 -7
  25. data/test/api/basics.rb +15 -0
  26. data/test/api/interpolation.rb +85 -0
  27. data/test/api/lambda.rb +52 -0
  28. data/test/api/link.rb +47 -0
  29. data/test/api/localization/date.rb +65 -0
  30. data/test/api/localization/date_time.rb +63 -0
  31. data/test/api/localization/lambda.rb +26 -0
  32. data/test/api/localization/time.rb +63 -0
  33. data/test/api/pluralization.rb +37 -0
  34. data/test/api/translation.rb +51 -0
  35. data/test/backend/cache/cache_test.rb +57 -0
  36. data/test/backend/chain/api_test.rb +80 -0
  37. data/test/backend/chain/chain_test.rb +64 -0
  38. data/test/backend/fallbacks/api_test.rb +79 -0
  39. data/test/backend/fallbacks/fallbacks_test.rb +29 -0
  40. data/test/backend/fast/all.rb +5 -0
  41. data/test/backend/fast/api_test.rb +91 -0
  42. data/test/backend/fast/interpolation_compiler_test.rb +84 -0
  43. data/test/backend/fast/lookup_test.rb +24 -0
  44. data/test/backend/fast/setup.rb +22 -0
  45. data/test/backend/fast/translations_test.rb +89 -0
  46. data/test/backend/lazy_reloading/reloading_test.rb +67 -0
  47. data/test/backend/pluralization/api_test.rb +81 -0
  48. data/test/backend/pluralization/pluralization_test.rb +39 -0
  49. data/test/backend/simple/all.rb +5 -0
  50. data/test/backend/simple/api_test.rb +90 -0
  51. data/test/backend/simple/lookup_test.rb +24 -0
  52. data/test/backend/simple/setup.rb +151 -0
  53. data/test/backend/simple/translations_test.rb +89 -0
  54. data/test/fixtures/locales/de.po +61 -0
  55. data/test/fixtures/locales/en.rb +3 -0
  56. data/test/fixtures/locales/en.yml +3 -0
  57. data/test/fixtures/locales/plurals.rb +112 -0
  58. data/test/gettext/api_test.rb +78 -0
  59. data/test/gettext/backend_test.rb +35 -0
  60. data/test/i18n_exceptions_test.rb +6 -25
  61. data/test/i18n_load_path_test.rb +23 -0
  62. data/test/i18n_test.rb +56 -18
  63. data/test/locale/fallbacks_test.rb +128 -0
  64. data/test/locale/tag/rfc4646_test.rb +147 -0
  65. data/test/locale/tag/simple_test.rb +35 -0
  66. data/test/test_helper.rb +72 -0
  67. data/test/with_options.rb +34 -0
  68. metadata +109 -19
  69. data/i18n.gemspec +0 -31
  70. data/lib/i18n/backend/fast/pluralization_compiler.rb +0 -50
  71. data/test/backend_test.rb +0 -633
  72. data/test/fast_backend_test.rb +0 -34
  73. data/test/locale/en.rb +0 -1
  74. data/test/locale/en.yml +0 -3
  75. data/test/pluralization_compiler_test.rb +0 -35
@@ -1,34 +0,0 @@
1
- # encoding: utf-8
2
- $:.unshift "lib"
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'mocha'
7
- require 'i18n'
8
- require 'time'
9
- require 'yaml'
10
-
11
- class FastBackendTest < Test::Unit::TestCase
12
- def setup
13
- @backend = I18n::Backend::Fast.new
14
- end
15
-
16
- def assert_flattens(expected, nested)
17
- assert_equal expected, @backend.send(:flatten_hash, nested)
18
- end
19
-
20
- def test_hash_flattening_works
21
- assert_flattens( {:"b.c"=>"c", :"b.f.x"=>"x", :"b.d"=>"d", :a=>"a"}, {:a=>'a', :b=>{:c=>'c', :d=>'d', :f=>{:x=>'x'}}} )
22
- assert_flattens( {:"a.b"=>['a', 'b']}, {:a=>{:b =>['a', 'b']}} )
23
- end
24
-
25
- def test_hash_flattening_preserves_pluralization_hashes
26
- assert_flattens({:'a.b.one'=>'one', :'a.b'=>{:one => 'one'}}, {:a=>{:b=>{:one => 'one'}}})
27
- end
28
-
29
- def test_pluralization_logic_and_lookup_works
30
- counts_hash = {:zero => 'zero', :one => 'one', :other => 'other'}
31
- @backend.store_translations :en, {:a => counts_hash}
32
- assert_equal 'one', @backend.translate(:en, :a, :count => 1)
33
- end
34
- end
data/test/locale/en.rb DELETED
@@ -1 +0,0 @@
1
- {:'en-Ruby' => {:foo => {:bar => "baz"}}}
data/test/locale/en.yml DELETED
@@ -1,3 +0,0 @@
1
- en-Yaml:
2
- foo:
3
- bar: baz
@@ -1,35 +0,0 @@
1
- # encoding: utf-8
2
- $:.unshift "lib"
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'i18n'
7
-
8
- PluralizationCompiler = I18n::Backend::Fast::PluralizationCompiler
9
-
10
- class PluralizationCompilerTest < Test::Unit::TestCase
11
- def assert_escapes(expected, malicious_str)
12
- assert_equal(expected, PluralizationCompiler.send(:escape_key_sym, malicious_str))
13
- end
14
-
15
- def test_escape_key_properly_escapes
16
- assert_escapes ':"\""', '"'
17
- assert_escapes ':"\\\\"', '\\'
18
- assert_escapes ':"\\\\\""', '\\"'
19
- assert_escapes ':"\#{}"', '#{}'
20
- assert_escapes ':"\\\\\#{}"', '\#{}'
21
- end
22
-
23
- def test_non_interpolated_strings_or_arrays_dont_get_compiled
24
- ['abc', '\\\\{{a}}', []].each do |obj|
25
- PluralizationCompiler.compile_if_an_interpolation(obj)
26
- assert_equal false, obj.respond_to?(:i18n_interpolate)
27
- end
28
- end
29
-
30
- def test_interpolated_string_gets_compiled
31
- str = '-{{a}}-'
32
- PluralizationCompiler.compile_if_an_interpolation(str)
33
- assert_equal '-A-', str.i18n_interpolate(:a => 'A')
34
- end
35
- end