r18n-core 1.1.6 → 1.1.7
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.
- checksums.yaml +7 -0
- data/ChangeLog +5 -0
- data/Rakefile +4 -24
- data/base/id.yml +31 -0
- data/lib/r18n-core/translated.rb +3 -2
- data/lib/r18n-core/version.rb +1 -1
- data/locales/id.rb +18 -0
- data/r18n-core.gemspec +1 -0
- data/spec/filters_spec.rb +36 -35
- data/spec/i18n_spec.rb +23 -23
- data/spec/locale_spec.rb +21 -21
- data/spec/locales/cs_spec.rb +1 -1
- data/spec/locales/en-us_spec.rb +1 -1
- data/spec/locales/en_spec.rb +1 -1
- data/spec/locales/fr_spec.rb +1 -1
- data/spec/locales/hu_spec.rb +2 -2
- data/spec/locales/it_spec.rb +1 -1
- data/spec/locales/pl_spec.rb +1 -1
- data/spec/locales/ru_spec.rb +1 -1
- data/spec/locales/sk_spec.rb +1 -1
- data/spec/locales/th_spec.rb +1 -1
- data/spec/r18n_spec.rb +23 -23
- data/spec/translated_spec.rb +23 -25
- data/spec/translation_spec.rb +10 -10
- data/spec/yaml_loader_spec.rb +6 -6
- metadata +44 -24
- data/.yardopts +0 -4
data/spec/locale_spec.rb
CHANGED
@@ -8,17 +8,17 @@ describe R18n::Locale do
|
|
8
8
|
@en = R18n.locale('en')
|
9
9
|
end
|
10
10
|
|
11
|
-
it "
|
11
|
+
it "returns all available locales" do
|
12
12
|
R18n::Locale.available.class.should == Array
|
13
13
|
R18n::Locale.available.should_not be_empty
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "checks is locale exists" do
|
17
17
|
R18n::Locale.exists?('ru').should be_true
|
18
18
|
R18n::Locale.exists?('nolocale').should be_false
|
19
19
|
end
|
20
20
|
|
21
|
-
it "
|
21
|
+
it "sets locale properties" do
|
22
22
|
locale_class = Class.new(R18n::Locale) do
|
23
23
|
set :one => 1
|
24
24
|
set :two => 2
|
@@ -28,32 +28,32 @@ describe R18n::Locale do
|
|
28
28
|
locale.two.should == 2
|
29
29
|
end
|
30
30
|
|
31
|
-
it "
|
31
|
+
it "loads locale" do
|
32
32
|
@ru.class.should == R18n::Locales::Ru
|
33
33
|
@ru.code.should == 'ru'
|
34
34
|
@ru.title.should == 'Русский'
|
35
35
|
end
|
36
36
|
|
37
|
-
it "
|
37
|
+
it "loads locale by Symbol" do
|
38
38
|
R18n.locale(:ru).should == R18n.locale('ru')
|
39
39
|
end
|
40
40
|
|
41
|
-
it "
|
41
|
+
it "equals to another locale with same code" do
|
42
42
|
@en.should_not == @ru
|
43
43
|
@en.should == R18n.locale('en')
|
44
44
|
end
|
45
45
|
|
46
|
-
it "
|
46
|
+
it "prints human readable representation" do
|
47
47
|
@ru.inspect.should == 'Locale ru (Русский)'
|
48
48
|
end
|
49
49
|
|
50
|
-
it "
|
50
|
+
it "returns pluralization type by elements count" do
|
51
51
|
@en.pluralize(0).should == 0
|
52
52
|
@en.pluralize(1).should == 1
|
53
53
|
@en.pluralize(5).should == 'n'
|
54
54
|
end
|
55
55
|
|
56
|
-
it "
|
56
|
+
it "uses UnsupportedLocale if locale file isn't exists" do
|
57
57
|
@en.should be_supported
|
58
58
|
|
59
59
|
unsupported = R18n.locale('nolocale-DL')
|
@@ -68,16 +68,16 @@ describe R18n::Locale do
|
|
68
68
|
unsupported.inspect.downcase.should == 'unsupported locale nolocale-dl'
|
69
69
|
end
|
70
70
|
|
71
|
-
it "
|
71
|
+
it "formats number in local traditions" do
|
72
72
|
@en.localize(-123456789).should == "−123,456,789"
|
73
73
|
end
|
74
74
|
|
75
|
-
it "
|
75
|
+
it "formats float in local traditions" do
|
76
76
|
@en.localize(-12345.67).should == "−12,345.67"
|
77
77
|
@en.localize(BigDecimal.new("-12345.67")).should == "−12,345.67"
|
78
78
|
end
|
79
79
|
|
80
|
-
it "
|
80
|
+
it "translates month, week days and am/pm names in strftime" do
|
81
81
|
i18n = R18n::I18n.new('ru')
|
82
82
|
time = Time.at(0).utc
|
83
83
|
|
@@ -86,12 +86,12 @@ describe R18n::Locale do
|
|
86
86
|
@ru.localize(time, '%H:%M%p').should == '00:00 утра'
|
87
87
|
end
|
88
88
|
|
89
|
-
it "
|
89
|
+
it "generates locale code by locale class name" do
|
90
90
|
R18n.locale('ru').code.should == 'ru'
|
91
91
|
R18n.locale('zh-CN').code.should == 'zh-CN'
|
92
92
|
end
|
93
93
|
|
94
|
-
it "
|
94
|
+
it "localizes date for human" do
|
95
95
|
i18n = R18n::I18n.new('en')
|
96
96
|
|
97
97
|
@en.localize(Date.today + 2, :human, i18n).should == 'after 2 days'
|
@@ -105,7 +105,7 @@ describe R18n::Locale do
|
|
105
105
|
@en.localize(y2k, :human, i18n, y2k - 365).should == '8th of January, 2000'
|
106
106
|
end
|
107
107
|
|
108
|
-
it "
|
108
|
+
it "localizes times for human" do
|
109
109
|
minute = 60
|
110
110
|
hour = 60 * minute
|
111
111
|
day = 24 * hour
|
@@ -130,29 +130,29 @@ describe R18n::Locale do
|
|
130
130
|
@en.localize( zero - 365 * day, *p).should == '1st of January, 1969 00:00'
|
131
131
|
end
|
132
132
|
|
133
|
-
it "
|
133
|
+
it "uses standard formatter by default" do
|
134
134
|
@ru.localize(Time.at(0).utc).should == '01.01.1970 00:00'
|
135
135
|
end
|
136
136
|
|
137
|
-
it "
|
137
|
+
it "doesn't localize time without i18n object" do
|
138
138
|
@ru.localize(Time.at(0)).should_not == Time.at(0).to_s
|
139
139
|
@ru.localize(Time.at(0), :full).should_not == Time.at(0).to_s
|
140
140
|
|
141
141
|
@ru.localize(Time.at(0), :human).should == Time.at(0).to_s
|
142
142
|
end
|
143
143
|
|
144
|
-
it "
|
144
|
+
it "raises error on unknown formatter" do
|
145
145
|
lambda {
|
146
146
|
@ru.localize(Time.at(0).utc, R18n::I18n.new('ru'), :unknown)
|
147
147
|
}.should raise_error(ArgumentError, /formatter/)
|
148
148
|
end
|
149
149
|
|
150
|
-
it "
|
150
|
+
it "deletes slashed from locale for security reasons" do
|
151
151
|
locale = R18n.locale('../spec/translations/general/en')
|
152
152
|
locale.should be_a(R18n::UnsupportedLocale)
|
153
153
|
end
|
154
154
|
|
155
|
-
it "
|
155
|
+
it "ignores code case in locales" do
|
156
156
|
upcase = R18n.locale('RU')
|
157
157
|
downcase = R18n.locale('ru')
|
158
158
|
upcase.should == downcase
|
@@ -166,7 +166,7 @@ describe R18n::Locale do
|
|
166
166
|
downcase.code.should == 'nolocale'
|
167
167
|
end
|
168
168
|
|
169
|
-
it "
|
169
|
+
it "loads locale with underscore" do
|
170
170
|
R18n.locale('nolocale-DL').code.should == 'nolocale-dl'
|
171
171
|
end
|
172
172
|
|
data/spec/locales/cs_spec.rb
CHANGED
data/spec/locales/en-us_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe R18n::Locales::EnUs do
|
4
|
-
it "
|
4
|
+
it "formats American English date" do
|
5
5
|
enUS = R18n::I18n.new('en-US')
|
6
6
|
enUS.l(Date.parse('2009-05-01'), :full).should == 'May 1st, 2009'
|
7
7
|
enUS.l(Date.parse('2009-05-02'), :full).should == 'May 2nd, 2009'
|
data/spec/locales/en_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe R18n::Locales::En do
|
4
|
-
it "
|
4
|
+
it "formats English date" do
|
5
5
|
en = R18n::I18n.new('en')
|
6
6
|
en.l(Date.parse('2009-05-01'), :full).should == '1st of May, 2009'
|
7
7
|
en.l(Date.parse('2009-05-02'), :full).should == '2nd of May, 2009'
|
data/spec/locales/fr_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe R18n::Locales::Fr do
|
4
|
-
it "
|
4
|
+
it "formats French date" do
|
5
5
|
fr = R18n::I18n.new('fr')
|
6
6
|
fr.l(Date.parse('2009-07-01'), :full).should == '1er juillet 2009'
|
7
7
|
fr.l(Date.parse('2009-07-02'), :full).should == ' 2 juillet 2009'
|
data/spec/locales/hu_spec.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require File.expand_path('../../spec_helper', __FILE__)
|
3
3
|
|
4
4
|
describe R18n::Locales::Hu do
|
5
|
-
it "
|
5
|
+
it "uses Hungarian digits groups" do
|
6
6
|
hu = R18n::I18n.new('hu')
|
7
7
|
hu.l(1000).should == '1000'
|
8
8
|
hu.l(10000).should == '10 000'
|
@@ -10,7 +10,7 @@ describe R18n::Locales::Hu do
|
|
10
10
|
hu.l(100000).should == '100 000'
|
11
11
|
end
|
12
12
|
|
13
|
-
it "
|
13
|
+
it "uses Hungarian time format" do
|
14
14
|
hu = R18n::I18n.new('hu')
|
15
15
|
hu.l(Time.at(0).utc).should == '1970. 01. 01., 00:00'
|
16
16
|
hu.l(Time.at(0).utc, :full).should == '1970. január 1., 00:00'
|
data/spec/locales/it_spec.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require File.expand_path('../../spec_helper', __FILE__)
|
3
3
|
|
4
4
|
describe R18n::Locales::It do
|
5
|
-
it "
|
5
|
+
it "formats Italian date" do
|
6
6
|
italian = R18n::I18n.new('it')
|
7
7
|
italian.l(Date.parse('2009-07-01'), :full).should == "1º luglio 2009"
|
8
8
|
italian.l(Date.parse('2009-07-02'), :full).should == ' 2 luglio 2009'
|
data/spec/locales/pl_spec.rb
CHANGED
data/spec/locales/ru_spec.rb
CHANGED
data/spec/locales/sk_spec.rb
CHANGED
data/spec/locales/th_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path('../../spec_helper', __FILE__)
|
2
2
|
|
3
3
|
describe R18n::Locales::Ru do
|
4
|
-
it "
|
4
|
+
it "uses Thai calendar" do
|
5
5
|
th = R18n::I18n.new('th')
|
6
6
|
th.l(Time.at(0).utc, '%Y %y').should == '2513 13'
|
7
7
|
th.l(Time.at(0).utc).should == '01/01/2513 00:00'
|
data/spec/r18n_spec.rb
CHANGED
@@ -10,7 +10,7 @@ describe R18n do
|
|
10
10
|
R18n.reset!
|
11
11
|
end
|
12
12
|
|
13
|
-
it "
|
13
|
+
it "stores I18n" do
|
14
14
|
i18n = R18n::I18n.new('en')
|
15
15
|
R18n.set(i18n)
|
16
16
|
R18n.get.should == i18n
|
@@ -19,7 +19,7 @@ describe R18n do
|
|
19
19
|
R18n.get.should be_nil
|
20
20
|
end
|
21
21
|
|
22
|
-
it "
|
22
|
+
it "sets setter to I18n" do
|
23
23
|
i18n = R18n::I18n.new('en')
|
24
24
|
R18n.set(i18n)
|
25
25
|
|
@@ -29,25 +29,25 @@ describe R18n do
|
|
29
29
|
R18n.get.should == i18n
|
30
30
|
end
|
31
31
|
|
32
|
-
it "
|
32
|
+
it "creates I18n object by shortcut" do
|
33
33
|
R18n.set('en', DIR)
|
34
34
|
R18n.get.should be_a(R18n::I18n)
|
35
35
|
R18n.get.locales.should == [R18n.locale('en')]
|
36
36
|
R18n.get.translation_places.should == [R18n::Loader::YAML.new(DIR)]
|
37
37
|
end
|
38
38
|
|
39
|
-
it "
|
39
|
+
it "allows to return I18n arguments in setter block" do
|
40
40
|
R18n.set { 'en' }
|
41
41
|
R18n.get.locales.should == [R18n.locale('en')]
|
42
42
|
end
|
43
43
|
|
44
|
-
it "
|
44
|
+
it "clears cache" do
|
45
45
|
R18n.cache[:a] = 1
|
46
46
|
R18n.clear_cache!
|
47
47
|
R18n.cache.should be_empty
|
48
48
|
end
|
49
49
|
|
50
|
-
it "
|
50
|
+
it "resets I18n objects and cache" do
|
51
51
|
R18n.cache[:a] = 1
|
52
52
|
R18n.set('en')
|
53
53
|
R18n.thread_set('en')
|
@@ -57,7 +57,7 @@ describe R18n do
|
|
57
57
|
R18n.cache.should be_empty
|
58
58
|
end
|
59
59
|
|
60
|
-
it "
|
60
|
+
it "stores I18n via thread_set" do
|
61
61
|
i18n = R18n::I18n.new('en')
|
62
62
|
R18n.thread_set(i18n)
|
63
63
|
R18n.get.should == i18n
|
@@ -67,36 +67,36 @@ describe R18n do
|
|
67
67
|
R18n.get.should == i18n
|
68
68
|
end
|
69
69
|
|
70
|
-
it "
|
70
|
+
it "allows to temporary change locale" do
|
71
71
|
R18n.default_places = DIR
|
72
72
|
R18n.change('en').locales.should == [R18n.locale('en')]
|
73
73
|
R18n.change('en').should have(1).translation_places
|
74
74
|
R18n.change('en').translation_places.first.dir.should == DIR.to_s
|
75
75
|
end
|
76
76
|
|
77
|
-
it "
|
77
|
+
it "allows to temporary change current locales" do
|
78
78
|
R18n.set('ru')
|
79
79
|
R18n.change('en').locales.should == [R18n.locale('en'), R18n.locale('ru')]
|
80
80
|
R18n.change('en').translation_places.should == R18n.get.translation_places
|
81
81
|
R18n.get.locale.code.should.should == 'ru'
|
82
82
|
end
|
83
83
|
|
84
|
-
it "
|
84
|
+
it "allows to get Locale to temporary change" do
|
85
85
|
R18n.set('ru')
|
86
86
|
R18n.change(R18n.locale('en')).locale.code.should == 'en'
|
87
87
|
end
|
88
88
|
|
89
|
-
it "
|
89
|
+
it "has shortcut to load locale" do
|
90
90
|
R18n.locale('ru').should == R18n::Locale.load('ru')
|
91
91
|
end
|
92
92
|
|
93
|
-
it "
|
93
|
+
it "stores default loader class" do
|
94
94
|
R18n.default_loader.should == R18n::Loader::YAML
|
95
95
|
R18n.default_loader = Class
|
96
96
|
R18n.default_loader.should == Class
|
97
97
|
end
|
98
98
|
|
99
|
-
it "
|
99
|
+
it "stores cache" do
|
100
100
|
R18n.cache.should be_a(Hash)
|
101
101
|
|
102
102
|
R18n.cache = { 1 => 2 }
|
@@ -106,16 +106,16 @@ describe R18n do
|
|
106
106
|
R18n.cache.should == { }
|
107
107
|
end
|
108
108
|
|
109
|
-
it "
|
110
|
-
|
109
|
+
it "converts Time to Date" do
|
110
|
+
R18n::Utils.to_date(Time.now).should == Date.today
|
111
111
|
end
|
112
112
|
|
113
|
-
it "
|
113
|
+
it "maps hash" do
|
114
114
|
R18n::Utils.hash_map({'a' => 1, 'b' => 2}) { |k, v| [k + 'a', v + 1] }.
|
115
115
|
should == { 'aa' => 2, 'ba' => 3 }
|
116
116
|
end
|
117
117
|
|
118
|
-
it "
|
118
|
+
it "merges hash recursively" do
|
119
119
|
a = { :a => 1, :b => {:ba => 1, :bb => 1}, :c => 1 }
|
120
120
|
b = { :b => {:bb => 2, :bc => 2}, :c => 2 }
|
121
121
|
|
@@ -123,13 +123,13 @@ describe R18n do
|
|
123
123
|
a.should == { :a => 1, :b => { :ba => 1, :bb => 2, :bc => 2 }, :c => 2 }
|
124
124
|
end
|
125
125
|
|
126
|
-
it "
|
126
|
+
it "has l and t methods" do
|
127
127
|
R18n.set('en')
|
128
128
|
t.yes.should == 'Yes'
|
129
129
|
l(Time.at(0).utc).should == '01/01/1970 00:00'
|
130
130
|
end
|
131
131
|
|
132
|
-
it "
|
132
|
+
it "has helpers mixin" do
|
133
133
|
obj = R18n::I18n.new('en')
|
134
134
|
R18n.set(obj)
|
135
135
|
|
@@ -139,13 +139,13 @@ describe R18n do
|
|
139
139
|
l(Time.at(0).utc).should == '01/01/1970 00:00'
|
140
140
|
end
|
141
141
|
|
142
|
-
it "
|
142
|
+
it "returns available translations" do
|
143
143
|
R18n.available_locales(DIR).should =~ [R18n.locale('nolocale'),
|
144
144
|
R18n.locale('ru'),
|
145
145
|
R18n.locale('en')]
|
146
146
|
end
|
147
147
|
|
148
|
-
it "
|
148
|
+
it "uses default places" do
|
149
149
|
R18n.default_places = DIR
|
150
150
|
R18n.set('en')
|
151
151
|
t.one.should == 'One'
|
@@ -154,12 +154,12 @@ describe R18n do
|
|
154
154
|
R18n.locale('nolocale')]
|
155
155
|
end
|
156
156
|
|
157
|
-
it "
|
157
|
+
it "sets default places by block" do
|
158
158
|
R18n.default_places { DIR }
|
159
159
|
R18n.default_places.should == DIR
|
160
160
|
end
|
161
161
|
|
162
|
-
it "
|
162
|
+
it "allows to ignore default places" do
|
163
163
|
R18n.default_places = DIR
|
164
164
|
i18n = R18n::I18n.new('en', nil)
|
165
165
|
i18n.one.should_not be_translated
|
data/spec/translated_spec.rb
CHANGED
@@ -13,13 +13,13 @@ describe R18n::Translated do
|
|
13
13
|
R18n.set('en')
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "saves methods map" do
|
17
17
|
@user_class.translation :name, :methods => { :ru => :name_ru }
|
18
18
|
@user_class.unlocalized_getters(:name).should == { 'ru' => 'name_ru' }
|
19
19
|
@user_class.unlocalized_setters(:name).should == { 'ru' => 'name_ru=' }
|
20
20
|
end
|
21
21
|
|
22
|
-
it "
|
22
|
+
it "autodetects methods map" do
|
23
23
|
@user_class.translation :name
|
24
24
|
@user_class.unlocalized_getters(:name).should == {
|
25
25
|
'en' => 'name_en', 'ru' => 'name_ru' }
|
@@ -27,11 +27,10 @@ describe R18n::Translated do
|
|
27
27
|
'en' => 'name_en=', 'ru' => 'name_ru=' }
|
28
28
|
end
|
29
29
|
|
30
|
-
it "
|
30
|
+
it "translates methods" do
|
31
31
|
@user_class.translation :name
|
32
32
|
user = @user_class.new
|
33
33
|
|
34
|
-
user.name.should_not be_translated
|
35
34
|
user.name = 'John'
|
36
35
|
user.name.should == 'John'
|
37
36
|
|
@@ -41,7 +40,7 @@ describe R18n::Translated do
|
|
41
40
|
user.name.should == 'Джон'
|
42
41
|
end
|
43
42
|
|
44
|
-
it "
|
43
|
+
it "returns TranslatedString" do
|
45
44
|
class ::SomeTranslatedClass
|
46
45
|
include R18n::Translated
|
47
46
|
def name_en; 'John'; end
|
@@ -54,7 +53,7 @@ describe R18n::Translated do
|
|
54
53
|
obj.name.path.should == 'SomeTranslatedClass#name'
|
55
54
|
end
|
56
55
|
|
57
|
-
it "
|
56
|
+
it "searchs translation by locales priority" do
|
58
57
|
@user_class.translation :name
|
59
58
|
user = @user_class.new
|
60
59
|
|
@@ -63,7 +62,7 @@ describe R18n::Translated do
|
|
63
62
|
user.name.locale.should == R18n.locale('ru')
|
64
63
|
end
|
65
64
|
|
66
|
-
it "
|
65
|
+
it "uses default locale" do
|
67
66
|
@user_class.translation :name
|
68
67
|
user = @user_class.new
|
69
68
|
|
@@ -72,7 +71,7 @@ describe R18n::Translated do
|
|
72
71
|
user.name.locale.should == R18n.locale('en')
|
73
72
|
end
|
74
73
|
|
75
|
-
it "
|
74
|
+
it "uses filters" do
|
76
75
|
@user_class.class_eval do
|
77
76
|
def age_en; {1 => '%1 year', 'n' => '%1 years'} end
|
78
77
|
translation :age, :type => 'pl', :no_params => true
|
@@ -82,7 +81,7 @@ describe R18n::Translated do
|
|
82
81
|
user.age(20).should == '20 years'
|
83
82
|
end
|
84
83
|
|
85
|
-
it "
|
84
|
+
it "sends params to method if user want it" do
|
86
85
|
@user_class.class_eval do
|
87
86
|
def no_params_en(*params) params.join(' '); end
|
88
87
|
def params_en(*params) params.join(' '); end
|
@@ -94,20 +93,7 @@ describe R18n::Translated do
|
|
94
93
|
user.params(1, 2).should == '1 2'
|
95
94
|
end
|
96
95
|
|
97
|
-
it "
|
98
|
-
class ::SomeUntranslatedClass
|
99
|
-
include R18n::Translated
|
100
|
-
|
101
|
-
translation :no
|
102
|
-
end
|
103
|
-
obj = ::SomeUntranslatedClass.new
|
104
|
-
|
105
|
-
obj.no.should be_a(R18n::Untranslated)
|
106
|
-
obj.no.translated_path.should == 'SomeUntranslatedClass#'
|
107
|
-
obj.no.untranslated_path.should == 'no'
|
108
|
-
end
|
109
|
-
|
110
|
-
it "should translate virtual methods" do
|
96
|
+
it "translates virtual methods" do
|
111
97
|
@virtual_class = Class.new do
|
112
98
|
include R18n::Translated
|
113
99
|
translation :no_method, :methods => { :en => :no_method_en }
|
@@ -120,7 +106,7 @@ describe R18n::Translated do
|
|
120
106
|
virtual.no_method.should == 'no_method_en'
|
121
107
|
end
|
122
108
|
|
123
|
-
it "
|
109
|
+
it "returns original type of result" do
|
124
110
|
@user_class.class_eval do
|
125
111
|
translation :name
|
126
112
|
def name_en
|
@@ -132,7 +118,19 @@ describe R18n::Translated do
|
|
132
118
|
user.name.should == :ivan
|
133
119
|
end
|
134
120
|
|
135
|
-
it "
|
121
|
+
it "returns nil" do
|
122
|
+
@user_class.class_eval do
|
123
|
+
translation :name
|
124
|
+
def name_en
|
125
|
+
nil
|
126
|
+
end
|
127
|
+
end
|
128
|
+
user = @user_class.new
|
129
|
+
|
130
|
+
user.name.should be_nil
|
131
|
+
end
|
132
|
+
|
133
|
+
it "allows to change I18n object" do
|
136
134
|
@user_class.class_eval do
|
137
135
|
translation :name
|
138
136
|
attr_accessor :r18n
|