theoooo-i18n 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.textile +57 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +42 -0
- data/Rakefile +21 -0
- data/VERSION +1 -0
- data/lib/i18n/backend/active_record/translation.rb +42 -0
- data/lib/i18n/backend/active_record.rb +45 -0
- data/lib/i18n/backend/simple.rb +21 -0
- data/lib/i18n/exceptions.rb +59 -0
- data/lib/i18n/string.rb +93 -0
- data/lib/i18n.rb +269 -0
- data/test/all.rb +3 -0
- data/test/api/basics.rb +13 -0
- data/test/api/interpolation.rb +63 -0
- data/test/api/lambda.rb +50 -0
- data/test/api/link.rb +45 -0
- data/test/api/localization/date.rb +63 -0
- data/test/api/localization/date_time.rb +61 -0
- data/test/api/localization/lambda.rb +24 -0
- data/test/api/localization/time.rb +61 -0
- data/test/api/pluralization.rb +35 -0
- data/test/api/translation.rb +49 -0
- data/test/backend/active_record/api_test.rb +64 -0
- data/test/backend/active_record/setup.rb +145 -0
- data/test/backend/simple/all.rb +3 -0
- data/test/backend/simple/api_test.rb +85 -0
- data/test/backend/simple/lookup_test.rb +23 -0
- data/test/backend/simple/setup.rb +145 -0
- data/test/backend/simple/translations_test.rb +88 -0
- data/test/fixtures/locales/en.rb +1 -0
- data/test/fixtures/locales/en.yml +3 -0
- data/test/i18n_exceptions_test.rb +95 -0
- data/test/i18n_load_path_test.rb +22 -0
- data/test/i18n_test.rb +161 -0
- data/test/string_test.rb +92 -0
- data/test/test_helper.rb +71 -0
- data/test/with_options.rb +32 -0
- metadata +127 -0
data/test/i18n_test.rb
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
2
|
+
|
3
|
+
class I18nTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
I18n.backend.store_translations :'en', {
|
6
|
+
:currency => {
|
7
|
+
:format => {
|
8
|
+
:separator => '.',
|
9
|
+
:delimiter => ',',
|
10
|
+
}
|
11
|
+
}
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_uses_simple_backend_set_by_default
|
16
|
+
assert I18n.backend.is_a?(I18n::Backend::Simple)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_can_set_backend
|
20
|
+
assert_nothing_raised { I18n.backend = self }
|
21
|
+
assert_equal self, I18n.backend
|
22
|
+
I18n.backend = I18n::Backend::Simple.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_uses_en_us_as_default_locale_by_default
|
26
|
+
assert_equal :en, I18n.default_locale
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_can_set_default_locale
|
30
|
+
assert_nothing_raised { I18n.default_locale = 'de' }
|
31
|
+
assert_equal :de, I18n.default_locale
|
32
|
+
I18n.default_locale = :en
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_uses_default_locale_as_locale_by_default
|
36
|
+
assert_equal I18n.default_locale, I18n.locale
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_can_set_locale_to_thread_current
|
40
|
+
assert_nothing_raised { I18n.locale = 'de' }
|
41
|
+
assert_equal :de, I18n.locale
|
42
|
+
assert_equal :de, Thread.current[:locale]
|
43
|
+
I18n.locale = :en
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_defaults_to_dot_as_separator
|
47
|
+
assert_equal '.', I18n.default_separator
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_can_set_default_separator
|
51
|
+
assert_nothing_raised { I18n.default_separator = "\001" }
|
52
|
+
I18n.default_separator = '.' # revert it
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_normalize_keys
|
56
|
+
assert_equal [:en, :foo, :bar], I18n.send(:normalize_translation_keys, :en, :bar, :foo)
|
57
|
+
assert_equal [:en, :foo, :bar, :baz, :buz], I18n.send(:normalize_translation_keys, :en, :'baz.buz', :'foo.bar')
|
58
|
+
assert_equal [:en, :foo, :bar, :baz, :buz], I18n.send(:normalize_translation_keys, :en, 'baz.buz', 'foo.bar')
|
59
|
+
assert_equal [:en, :foo, :bar, :baz, :buz], I18n.send(:normalize_translation_keys, :en, %w(baz buz), %w(foo bar))
|
60
|
+
assert_equal [:en, :foo, :bar, :baz, :buz], I18n.send(:normalize_translation_keys, :en, [:baz, :buz], [:foo, :bar])
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_uses_passed_separator_to_normalize_keys
|
64
|
+
assert_equal [:en, :foo, :bar, :baz, :buz], I18n.send(:normalize_translation_keys, :en, :'baz|buz', :'foo|bar', '|')
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_can_set_exception_handler
|
68
|
+
assert_nothing_raised { I18n.exception_handler = :custom_exception_handler }
|
69
|
+
I18n.exception_handler = :default_exception_handler # revert it
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_uses_custom_exception_handler
|
73
|
+
I18n.exception_handler = :custom_exception_handler
|
74
|
+
I18n.expects(:custom_exception_handler)
|
75
|
+
I18n.translate :bogus
|
76
|
+
I18n.exception_handler = :default_exception_handler # revert it
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_delegates_translate_to_backend
|
80
|
+
I18n.backend.expects(:translate).with 'de', :foo, {}
|
81
|
+
I18n.translate :foo, :locale => 'de'
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_delegates_localize_to_backend
|
85
|
+
I18n.backend.expects(:localize).with 'de', :whatever, :default
|
86
|
+
I18n.localize :whatever, :locale => 'de'
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_translate_given_no_locale_uses_i18n_locale
|
90
|
+
I18n.backend.expects(:translate).with :en, :foo, {}
|
91
|
+
I18n.translate :foo
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_translate_on_nested_symbol_keys_works
|
95
|
+
assert_equal ".", I18n.t(:'currency.format.separator')
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_translate_with_nested_string_keys_works
|
99
|
+
assert_equal ".", I18n.t('currency.format.separator')
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_translate_with_array_as_scope_works
|
103
|
+
assert_equal ".", I18n.t(:separator, :scope => %w(currency format))
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_translate_with_array_containing_dot_separated_strings_as_scope_works
|
107
|
+
assert_equal ".", I18n.t(:separator, :scope => ['currency.format'])
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_translate_with_key_array_and_dot_separated_scope_works
|
111
|
+
assert_equal [".", ","], I18n.t(%w(separator delimiter), :scope => 'currency.format')
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_translate_with_dot_separated_key_array_and_scope_works
|
115
|
+
assert_equal [".", ","], I18n.t(%w(format.separator format.delimiter), :scope => 'currency')
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_translate_with_options_using_scope_works
|
119
|
+
I18n.backend.expects(:translate).with('de', :precision, :scope => :"currency.format")
|
120
|
+
I18n.with_options :locale => 'de', :scope => :'currency.format' do |locale|
|
121
|
+
locale.t :precision
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# def test_translate_given_no_args_raises_missing_translation_data
|
126
|
+
# assert_equal "translation missing: en, no key", I18n.t
|
127
|
+
# end
|
128
|
+
|
129
|
+
def test_translate_given_a_bogus_key_raises_missing_translation_data
|
130
|
+
assert_equal "translation missing: en, bogus", I18n.t(:bogus)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_localize_nil_raises_argument_error
|
134
|
+
assert_raises(I18n::ArgumentError) { I18n.l nil }
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_localize_object_raises_argument_error
|
138
|
+
assert_raises(I18n::ArgumentError) { I18n.l Object.new }
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_proc_exception_handler
|
142
|
+
I18n.exception_handler = Proc.new { |exception, locale, key, options|
|
143
|
+
"No exception here! [Proc handler]"
|
144
|
+
}
|
145
|
+
assert_equal "No exception here! [Proc handler]", I18n.translate(:test_proc_handler)
|
146
|
+
ensure
|
147
|
+
I18n.exception_handler = :default_exception_handler
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_class_exception_handler
|
151
|
+
I18n.exception_handler = Class.new do
|
152
|
+
def call(exception, locale, key, options)
|
153
|
+
"No exception here! [Class handler]"
|
154
|
+
end
|
155
|
+
end.new
|
156
|
+
assert_equal "No exception here! [Class handler]", I18n.translate(:test_class_handler)
|
157
|
+
ensure
|
158
|
+
I18n.exception_handler = :default_exception_handler
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
data/test/string_test.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
2
|
+
|
3
|
+
# thanks to Masao's String extensions these should work the same in
|
4
|
+
# Ruby 1.8 (patched) and Ruby 1.9 (native)
|
5
|
+
# some tests taken from Masao's tests
|
6
|
+
# http://github.com/mutoh/gettext/blob/edbbe1fa8238fa12c7f26f2418403015f0270e47/test/test_string.rb
|
7
|
+
|
8
|
+
class I18nStringTest < Test::Unit::TestCase
|
9
|
+
define_method :"test: String interpolates a single argument" do
|
10
|
+
assert_equal "Masao", "%s" % "Masao"
|
11
|
+
end
|
12
|
+
|
13
|
+
define_method :"test: String interpolates an array argument" do
|
14
|
+
assert_equal "1 message", "%d %s" % [1, 'message']
|
15
|
+
end
|
16
|
+
|
17
|
+
define_method :"test: String interpolates a hash argument w/ named placeholders" do
|
18
|
+
assert_equal "Masao Mutoh", "%{first} %{last}" % { :first => 'Masao', :last => 'Mutoh' }
|
19
|
+
end
|
20
|
+
|
21
|
+
define_method :"test: String interpolates a hash argument w/ named placeholders (reverse order)" do
|
22
|
+
assert_equal "Mutoh, Masao", "%{last}, %{first}" % { :first => 'Masao', :last => 'Mutoh' }
|
23
|
+
end
|
24
|
+
|
25
|
+
define_method :"test: String interpolates named placeholders with sprintf syntax" do
|
26
|
+
assert_equal "10, 43.4", "%<integer>d, %<float>.1f" % {:integer => 10, :float => 43.4}
|
27
|
+
end
|
28
|
+
|
29
|
+
define_method :"test: String interpolates named placeholders with sprintf syntax, does not recurse" do
|
30
|
+
assert_equal "%<not_translated>s", "%{msg}" % { :msg => '%<not_translated>s', :not_translated => 'should not happen' }
|
31
|
+
end
|
32
|
+
|
33
|
+
define_method :"test: String interpolation does not replace anything when no placeholders are given" do
|
34
|
+
assert_equal("aaa", "aaa" % {:num => 1})
|
35
|
+
assert_equal("bbb", "bbb" % [1])
|
36
|
+
end
|
37
|
+
|
38
|
+
define_method :"test: String interpolation sprintf behaviour equals Ruby 1.9 behaviour" do
|
39
|
+
assert_equal("1", "%<num>d" % {:num => 1})
|
40
|
+
assert_equal("0b1", "%<num>#b" % {:num => 1})
|
41
|
+
assert_equal("foo", "%<msg>s" % {:msg => "foo"})
|
42
|
+
assert_equal("1.000000", "%<num>f" % {:num => 1.0})
|
43
|
+
assert_equal(" 1", "%<num>3.0f" % {:num => 1.0})
|
44
|
+
assert_equal("100.00", "%<num>2.2f" % {:num => 100.0})
|
45
|
+
assert_equal("0x64", "%<num>#x" % {:num => 100.0})
|
46
|
+
assert_raise(ArgumentError) { "%<num>,d" % {:num => 100} }
|
47
|
+
assert_raise(ArgumentError) { "%<num>/d" % {:num => 100} }
|
48
|
+
end
|
49
|
+
|
50
|
+
define_method :"test: String interpolation old-style sprintf still works" do
|
51
|
+
assert_equal("foo 1.000000", "%s %f" % ["foo", 1.0])
|
52
|
+
end
|
53
|
+
|
54
|
+
define_method :"test: String interpolation raises an ArgumentError when the string has extra placeholders (Array)" do
|
55
|
+
assert_raises(ArgumentError) do # Ruby 1.9 msg: "too few arguments"
|
56
|
+
"%s %s" % %w(Masao)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
define_method :"test: String interpolation raises a KeyError when the string has extra placeholders (Hash)" do
|
61
|
+
assert_raises(KeyError) do # Ruby 1.9 msg: "key not found"
|
62
|
+
"%{first} %{last}" % { :first => 'Masao' }
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
define_method :"test: String interpolation does not raise when passed extra values (Array)" do
|
67
|
+
assert_nothing_raised do
|
68
|
+
assert_equal "Masao", "%s" % %w(Masao Mutoh)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
define_method :"test: String interpolation does not raise when passed extra values (Hash)" do
|
73
|
+
assert_nothing_raised do
|
74
|
+
assert_equal "Masao Mutoh", "%{first} %{last}" % { :first => 'Masao', :last => 'Mutoh', :salutation => 'Mr.' }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
define_method :"test: % acts as escape character in String interpolation" do
|
79
|
+
assert_equal "%{first}", "%%{first}" % { :first => 'Masao' }
|
80
|
+
assert_equal("% 1", "%% %<num>d" % {:num => 1.0})
|
81
|
+
assert_equal("%{num} %<num>d", "%%{num} %%<num>d" % {:num => 1})
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_sprintf_mix_unformatted_and_formatted_named_placeholders
|
85
|
+
assert_equal("foo 1.000000", "%{name} %<num>f" % {:name => "foo", :num => 1.0})
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_string_interpolation_raises_an_argument_error_when_mixing_named_and_unnamed_placeholders
|
89
|
+
assert_raises(ArgumentError) { "%{name} %f" % [1.0] }
|
90
|
+
assert_raises(ArgumentError) { "%{name} %f" % [1.0, 2.0] }
|
91
|
+
end
|
92
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
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
|
+
require File.dirname(__FILE__) + '/with_options'
|
12
|
+
require File.dirname(__FILE__) + '/backend/simple/setup'
|
13
|
+
require File.dirname(__FILE__) + '/backend/active_record/setup'
|
14
|
+
|
15
|
+
Dir[File.dirname(__FILE__) + '/api/**/*.rb'].each do |filename|
|
16
|
+
require filename
|
17
|
+
end
|
18
|
+
|
19
|
+
$KCODE = 'u' unless RUBY_VERSION >= '1.9'
|
20
|
+
|
21
|
+
class Test::Unit::TestCase
|
22
|
+
def self.test(name, &block)
|
23
|
+
define_method("test: " + name, &block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def euc_jp(string)
|
27
|
+
string.encode!(Encoding::EUC_JP)
|
28
|
+
end
|
29
|
+
|
30
|
+
def locales_dir
|
31
|
+
File.dirname(__FILE__) + '/fixtures/locales'
|
32
|
+
end
|
33
|
+
|
34
|
+
def backend_store_translations(*args)
|
35
|
+
I18n.backend.store_translations(*args)
|
36
|
+
end
|
37
|
+
|
38
|
+
def backend_get_translations
|
39
|
+
I18n.backend.instance_variable_get :@translations
|
40
|
+
end
|
41
|
+
|
42
|
+
def date
|
43
|
+
Date.new(2008, 3, 1)
|
44
|
+
end
|
45
|
+
|
46
|
+
def morning_datetime
|
47
|
+
DateTime.new(2008, 3, 1, 6)
|
48
|
+
end
|
49
|
+
alias :datetime :morning_datetime
|
50
|
+
|
51
|
+
def evening_datetime
|
52
|
+
DateTime.new(2008, 3, 1, 18)
|
53
|
+
end
|
54
|
+
|
55
|
+
def morning_time
|
56
|
+
Time.parse('2008-03-01 6:00 UTC')
|
57
|
+
end
|
58
|
+
alias :time :morning_time
|
59
|
+
|
60
|
+
def evening_time
|
61
|
+
Time.parse('2008-03-01 18:00 UTC')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class Object
|
66
|
+
def meta_class
|
67
|
+
class << self; self; end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# this is only here so we can test I18n works nicely with ActiveSupports
|
2
|
+
# with_options. Maybe we can just remove it?
|
3
|
+
|
4
|
+
class Object
|
5
|
+
def with_options(options)
|
6
|
+
yield ActiveSupport::OptionMerger.new(self, options)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module ActiveSupport
|
11
|
+
class OptionMerger #:nodoc:
|
12
|
+
instance_methods.each do |method|
|
13
|
+
undef_method(method) if method !~ /^(__|instance_eval|class|object_id)/
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(context, options)
|
17
|
+
@context, @options = context, options
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
def method_missing(method, *arguments, &block)
|
22
|
+
if arguments.last.is_a?(Proc)
|
23
|
+
proc = arguments.pop
|
24
|
+
arguments << lambda { |*args| @options.deep_merge(proc.call(*args)) }
|
25
|
+
else
|
26
|
+
arguments << (arguments.last.respond_to?(:to_hash) ? @options.deep_merge(arguments.pop) : @options.dup)
|
27
|
+
end
|
28
|
+
|
29
|
+
@context.__send__(method, *arguments, &block)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: theoooo-i18n
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sven Fuchs
|
8
|
+
- Joshua Harvey
|
9
|
+
- Matt Aimonetti
|
10
|
+
- Stephan Soller
|
11
|
+
- Saimon Moore
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2009-07-12 00:00:00 -07:00
|
17
|
+
default_executable:
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: ruby2ruby
|
21
|
+
type: :runtime
|
22
|
+
version_requirement:
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.2.2
|
28
|
+
version:
|
29
|
+
description: Add Internationalization support to your Ruby application.
|
30
|
+
email: rails-i18n@googlegroups.com
|
31
|
+
executables: []
|
32
|
+
|
33
|
+
extensions: []
|
34
|
+
|
35
|
+
extra_rdoc_files:
|
36
|
+
- README.textile
|
37
|
+
files:
|
38
|
+
- CHANGELOG.textile
|
39
|
+
- MIT-LICENSE
|
40
|
+
- README.textile
|
41
|
+
- Rakefile
|
42
|
+
- VERSION
|
43
|
+
- lib/i18n.rb
|
44
|
+
- lib/i18n/backend/simple.rb
|
45
|
+
- lib/i18n/backend/active_record.rb
|
46
|
+
- lib/i18n/backend/active_record/translation.rb
|
47
|
+
- lib/i18n/exceptions.rb
|
48
|
+
- lib/i18n/string.rb
|
49
|
+
- test/all.rb
|
50
|
+
- test/api/basics.rb
|
51
|
+
- test/api/interpolation.rb
|
52
|
+
- test/api/lambda.rb
|
53
|
+
- test/api/link.rb
|
54
|
+
- test/api/localization/date.rb
|
55
|
+
- test/api/localization/date_time.rb
|
56
|
+
- test/api/localization/lambda.rb
|
57
|
+
- test/api/localization/time.rb
|
58
|
+
- test/api/pluralization.rb
|
59
|
+
- test/api/translation.rb
|
60
|
+
- test/backend/simple/all.rb
|
61
|
+
- test/backend/simple/api_test.rb
|
62
|
+
- test/backend/simple/lookup_test.rb
|
63
|
+
- test/backend/simple/setup.rb
|
64
|
+
- test/backend/simple/translations_test.rb
|
65
|
+
- test/backend/active_record/api_test.rb
|
66
|
+
- test/backend/active_record/setup.rb
|
67
|
+
- test/fixtures/locales/en.rb
|
68
|
+
- test/fixtures/locales/en.yml
|
69
|
+
- test/i18n_exceptions_test.rb
|
70
|
+
- test/i18n_load_path_test.rb
|
71
|
+
- test/i18n_test.rb
|
72
|
+
- test/string_test.rb
|
73
|
+
- test/test_helper.rb
|
74
|
+
- test/with_options.rb
|
75
|
+
has_rdoc: true
|
76
|
+
homepage: http://rails-i18n.org
|
77
|
+
licenses:
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options:
|
80
|
+
- --charset=UTF-8
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: "0"
|
88
|
+
version:
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
95
|
+
requirements: []
|
96
|
+
|
97
|
+
rubyforge_project:
|
98
|
+
rubygems_version: 1.3.5
|
99
|
+
signing_key:
|
100
|
+
specification_version: 2
|
101
|
+
summary: New wave Internationalization support for Ruby
|
102
|
+
test_files:
|
103
|
+
- test/all.rb
|
104
|
+
- test/api/basics.rb
|
105
|
+
- test/api/interpolation.rb
|
106
|
+
- test/api/lambda.rb
|
107
|
+
- test/api/link.rb
|
108
|
+
- test/api/localization/date.rb
|
109
|
+
- test/api/localization/date_time.rb
|
110
|
+
- test/api/localization/lambda.rb
|
111
|
+
- test/api/localization/time.rb
|
112
|
+
- test/api/pluralization.rb
|
113
|
+
- test/api/translation.rb
|
114
|
+
- test/backend/simple/all.rb
|
115
|
+
- test/backend/simple/api_test.rb
|
116
|
+
- test/backend/simple/lookup_test.rb
|
117
|
+
- test/backend/simple/setup.rb
|
118
|
+
- test/backend/simple/translations_test.rb
|
119
|
+
- test/backend/active_record/api_test.rb
|
120
|
+
- test/backend/active_record/setup.rb
|
121
|
+
- test/fixtures/locales/en.rb
|
122
|
+
- test/i18n_exceptions_test.rb
|
123
|
+
- test/i18n_load_path_test.rb
|
124
|
+
- test/i18n_test.rb
|
125
|
+
- test/string_test.rb
|
126
|
+
- test/test_helper.rb
|
127
|
+
- test/with_options.rb
|