fast_gettext 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fast_gettext/cache.rb +42 -0
- data/lib/fast_gettext/storage.rb +28 -55
- data/lib/fast_gettext/version.rb +1 -1
- metadata +105 -73
- data/.gitignore +0 -2
- data/.travis.yml +0 -17
- data/Appraisals +0 -8
- data/CHANGELOG +0 -8
- data/Gemfile +0 -10
- data/Gemfile.lock +0 -52
- data/Rakefile +0 -25
- data/Readme.md +0 -261
- data/benchmark/base.rb +0 -46
- data/benchmark/baseline.rb +0 -5
- data/benchmark/fast_gettext.rb +0 -18
- data/benchmark/i18n_simple.rb +0 -8
- data/benchmark/ideal.rb +0 -24
- data/benchmark/locale/de.yml +0 -126
- data/benchmark/locale/de/LC_MESSAGES/large.mo +0 -0
- data/benchmark/misc/threadsave.rb +0 -21
- data/benchmark/namespace/fast_gettext.rb +0 -15
- data/benchmark/namespace/original.rb +0 -14
- data/benchmark/original.rb +0 -22
- data/examples/db/migration.rb +0 -22
- data/examples/missing_translation_logger.rb +0 -13
- data/fast_gettext.gemspec +0 -12
- data/gemfiles/rails23.gemfile +0 -14
- data/gemfiles/rails23.gemfile.lock +0 -56
- data/gemfiles/rails32.gemfile +0 -14
- data/gemfiles/rails32.gemfile.lock +0 -112
- data/gemfiles/rails40.gemfile +0 -15
- data/gemfiles/rails40.gemfile.lock +0 -110
- data/spec/aa_unconfigued_spec.rb +0 -21
- data/spec/cases/fake_load_path/iconv.rb +0 -2
- data/spec/cases/iconv_fallback.rb +0 -22
- data/spec/cases/interpolate_i18n_after_fast_gettext.rb +0 -7
- data/spec/cases/interpolate_i18n_before_fast_gettext.rb +0 -9
- data/spec/cases/safe_mode_can_handle_locales.rb +0 -5
- data/spec/fast_gettext/mo_file_spec.rb +0 -35
- data/spec/fast_gettext/po_file_spec.rb +0 -35
- data/spec/fast_gettext/storage_spec.rb +0 -386
- data/spec/fast_gettext/translation_repository/base_spec.rb +0 -24
- data/spec/fast_gettext/translation_repository/chain_spec.rb +0 -98
- data/spec/fast_gettext/translation_repository/db_spec.rb +0 -114
- data/spec/fast_gettext/translation_repository/logger_spec.rb +0 -40
- data/spec/fast_gettext/translation_repository/mo_spec.rb +0 -58
- data/spec/fast_gettext/translation_repository/po_spec.rb +0 -65
- data/spec/fast_gettext/translation_repository/yaml_spec.rb +0 -84
- data/spec/fast_gettext/translation_repository_spec.rb +0 -33
- data/spec/fast_gettext/translation_spec.rb +0 -363
- data/spec/fast_gettext/vendor/iconv_spec.rb +0 -7
- data/spec/fast_gettext/vendor/string_spec.rb +0 -101
- data/spec/fast_gettext_spec.rb +0 -51
- data/spec/fuzzy_locale/de/test.po +0 -22
- data/spec/locale/de/LC_MESSAGES/test.mo +0 -0
- data/spec/locale/de/LC_MESSAGES/test2.mo +0 -0
- data/spec/locale/de/test.po +0 -74
- data/spec/locale/de/test2.po +0 -64
- data/spec/locale/en/LC_MESSAGES/plural_test.mo +0 -0
- data/spec/locale/en/LC_MESSAGES/test.mo +0 -0
- data/spec/locale/en/plural_test.po +0 -20
- data/spec/locale/en/test.po +0 -59
- data/spec/locale/gsw_CH/LC_MESSAGES/test.mo +0 -0
- data/spec/locale/gsw_CH/test.po +0 -61
- data/spec/locale/yaml/de.yml +0 -25
- data/spec/locale/yaml/de2.yml +0 -25
- data/spec/locale/yaml/en.yml +0 -21
- data/spec/locale/yaml/notfound.yml +0 -2
- data/spec/obsolete_locale/de/test.po +0 -21
- data/spec/spec_helper.rb +0 -42
- data/spec/support/be_accessible_matcher.rb +0 -8
@@ -1,24 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'fast_gettext/translation_repository/base'
|
3
|
-
|
4
|
-
describe 'FastGettext::TranslationRepository::Base' do
|
5
|
-
before do
|
6
|
-
@rep = FastGettext::TranslationRepository::Base.new('x')
|
7
|
-
end
|
8
|
-
|
9
|
-
it "can be built" do
|
10
|
-
@rep.available_locales.should == []
|
11
|
-
end
|
12
|
-
|
13
|
-
it "cannot translate" do
|
14
|
-
@rep['car'].should == nil
|
15
|
-
end
|
16
|
-
|
17
|
-
it "cannot pluralize" do
|
18
|
-
@rep.plural('Axis','Axis').should == []
|
19
|
-
end
|
20
|
-
|
21
|
-
it "can be reloaded" do
|
22
|
-
@rep.reload.should be_true
|
23
|
-
end
|
24
|
-
end
|
@@ -1,98 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
class MockRepo
|
4
|
-
def [](key)#should_receive :[] does not work so well...
|
5
|
-
singular key
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe 'FastGettext::TranslationRepository::Chain' do
|
10
|
-
describe "empty chain" do
|
11
|
-
before do
|
12
|
-
@rep = FastGettext::TranslationRepository.build('chain', :chain=>[], :type=>:chain)
|
13
|
-
end
|
14
|
-
|
15
|
-
it "has no locales" do
|
16
|
-
@rep.available_locales.should == []
|
17
|
-
end
|
18
|
-
|
19
|
-
it "cannot translate" do
|
20
|
-
@rep['car'].should == nil
|
21
|
-
end
|
22
|
-
|
23
|
-
it "cannot pluralize" do
|
24
|
-
@rep.plural('Axis','Axis').should == []
|
25
|
-
end
|
26
|
-
|
27
|
-
it "has no pluralisation rule" do
|
28
|
-
@rep.pluralisation_rule.should == nil
|
29
|
-
end
|
30
|
-
|
31
|
-
it "returns true on reload" do
|
32
|
-
@rep.reload.should be_true
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "filled chain" do
|
37
|
-
before do
|
38
|
-
@one = MockRepo.new
|
39
|
-
@one.stub(:singular).with('xx').and_return 'one'
|
40
|
-
@two = MockRepo.new
|
41
|
-
@two.stub(:singular).with('xx').and_return 'two'
|
42
|
-
@rep = FastGettext::TranslationRepository.build('chain', :chain=>[@one, @two], :type=>:chain)
|
43
|
-
end
|
44
|
-
|
45
|
-
describe :singular do
|
46
|
-
it "uses the first repo in the chain if it responds" do
|
47
|
-
@rep['xx'].should == 'one'
|
48
|
-
end
|
49
|
-
|
50
|
-
it "uses the second repo in the chain if the first does not respond" do
|
51
|
-
@one.should_receive(:singular).and_return nil
|
52
|
-
@rep['xx'].should == 'two'
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe :plural do
|
57
|
-
it "uses the first repo in the chain if it responds" do
|
58
|
-
@one.should_receive(:plural).with('a','b').and_return ['A','B']
|
59
|
-
@rep.plural('a','b').should == ['A','B']
|
60
|
-
end
|
61
|
-
|
62
|
-
it "uses the second repo in the chain if the first does not respond" do
|
63
|
-
@one.should_receive(:plural).with('a','b').and_return []
|
64
|
-
@two.should_receive(:plural).with('a','b').and_return ['A','B']
|
65
|
-
@rep.plural('a','b').should == ['A','B']
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe :available_locales do
|
70
|
-
it "should be the sum of all added repositories" do
|
71
|
-
@one.should_receive(:available_locales).and_return ['de']
|
72
|
-
@two.should_receive(:available_locales).and_return ['de','en']
|
73
|
-
@rep.available_locales.should == ['de','en']
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe :pluralisation_rule do
|
78
|
-
it "chooses the first that exists" do
|
79
|
-
@one.should_receive(:pluralisation_rule).and_return nil
|
80
|
-
@two.should_receive(:pluralisation_rule).and_return 'x'
|
81
|
-
@rep.pluralisation_rule.should == 'x'
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe :reload do
|
86
|
-
it "reloads all repositories" do
|
87
|
-
@one.should_receive(:reload)
|
88
|
-
@two.should_receive(:reload)
|
89
|
-
@rep.reload
|
90
|
-
end
|
91
|
-
|
92
|
-
it "returns true" do
|
93
|
-
@rep.chain.each { |c| c.stub(:reload) }
|
94
|
-
@rep.reload.should be_true
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,114 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'active_record'
|
3
|
-
require 'fast_gettext/translation_repository/db'
|
4
|
-
require 'support/be_accessible_matcher'
|
5
|
-
|
6
|
-
FastGettext::TranslationRepository::Db.require_models
|
7
|
-
|
8
|
-
describe FastGettext::TranslationRepository::Db do
|
9
|
-
before :all do
|
10
|
-
ActiveRecord::Base.establish_connection(
|
11
|
-
:adapter => "sqlite3",
|
12
|
-
:database => ":memory:"
|
13
|
-
)
|
14
|
-
|
15
|
-
#create model table
|
16
|
-
ActiveRecord::Migration.verbose = false
|
17
|
-
ActiveRecord::Schema.define(:version => 1) do
|
18
|
-
create_table :translation_keys do |t|
|
19
|
-
t.string :key, :unique=>true, :null=>false
|
20
|
-
t.timestamps
|
21
|
-
end
|
22
|
-
|
23
|
-
create_table :translation_texts do |t|
|
24
|
-
t.string :text, :locale
|
25
|
-
t.integer :translation_key_id, :null=>false
|
26
|
-
t.timestamps
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
before do
|
32
|
-
TranslationKey.delete_all
|
33
|
-
TranslationText.delete_all
|
34
|
-
FastGettext.locale = 'de'
|
35
|
-
@rep = FastGettext::TranslationRepository::Db.new('x', :model=>TranslationKey)
|
36
|
-
end
|
37
|
-
|
38
|
-
def create_translation(key, text)
|
39
|
-
translation_key = TranslationKey.create!(:key => key)
|
40
|
-
TranslationText.create!(:translation_key_id => translation_key.id, :text => text, :locale => "de")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "reads locales from the db" do
|
44
|
-
locales = ['de','en','es']
|
45
|
-
locales.reverse.each do |locale|
|
46
|
-
TranslationText.create!(:translation_key_id=>1, :text=>'asdasd', :locale=>locale)
|
47
|
-
end
|
48
|
-
@rep.available_locales.should == locales
|
49
|
-
end
|
50
|
-
|
51
|
-
it "has no pluralisation_rule by default" do
|
52
|
-
@rep.pluralisation_rule.should == nil
|
53
|
-
end
|
54
|
-
|
55
|
-
it "cannot translate when no models are present" do
|
56
|
-
@rep['car'].should == nil
|
57
|
-
end
|
58
|
-
|
59
|
-
it "can translate" do
|
60
|
-
create_translation 'car', 'Auto'
|
61
|
-
@rep['car'].should == 'Auto'
|
62
|
-
end
|
63
|
-
|
64
|
-
it "cannot pluralize when no model is present" do
|
65
|
-
@rep.plural('Axis','Axis').should == []
|
66
|
-
end
|
67
|
-
|
68
|
-
it "can pluralize" do
|
69
|
-
create_translation 'Axis||||Axis', 'Achse||||Achsen'
|
70
|
-
@rep.plural('Axis','Axis').should == ['Achse','Achsen']
|
71
|
-
end
|
72
|
-
|
73
|
-
it "can ignore newline format" do
|
74
|
-
create_translation "good\r\nmorning", "guten\r\nMorgen"
|
75
|
-
@rep["good\nmorning"].should == "guten\r\nMorgen"
|
76
|
-
end
|
77
|
-
|
78
|
-
it "removes texts when key is removed" do
|
79
|
-
t = create_translation("a", "b")
|
80
|
-
expect{
|
81
|
-
expect{
|
82
|
-
t.translation_key.destroy
|
83
|
-
}.to change{ TranslationText.count }.by(-1)
|
84
|
-
}.to change{ TranslationKey.count }.by(-1)
|
85
|
-
end
|
86
|
-
|
87
|
-
it "model attributes should be accessible" do
|
88
|
-
key = TranslationKey.new(:key => 'New Key', :translations_attributes => { '0' => {:text => 'New Key En', :locale => 'en'}})
|
89
|
-
|
90
|
-
key.key.should == 'New Key'
|
91
|
-
|
92
|
-
key.should be_accessible(:key)
|
93
|
-
key.should be_accessible(:translations)
|
94
|
-
key.should be_accessible(:translations_attributes)
|
95
|
-
key.should_not be_accessible(:created_at)
|
96
|
-
|
97
|
-
translation = key.translations.first
|
98
|
-
|
99
|
-
translation.text.should == 'New Key En'
|
100
|
-
translation.locale.should == 'en'
|
101
|
-
|
102
|
-
translation.should be_accessible(:locale)
|
103
|
-
translation.should be_accessible(:text)
|
104
|
-
translation.should be_accessible(:translation_key)
|
105
|
-
translation.should be_accessible(:translation_key_id)
|
106
|
-
translation.should_not be_accessible(:created_at)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "expires the cache when updated" do
|
110
|
-
FastGettext.should_receive(:expire_cache_for).with('car')
|
111
|
-
translation_text = create_translation 'car', 'Auto'
|
112
|
-
translation_text.update_attributes :text => 'Autobot'
|
113
|
-
end
|
114
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe 'FastGettext::TranslationRepository::Logger' do
|
4
|
-
before do
|
5
|
-
@callback = lambda{}
|
6
|
-
@rep = FastGettext::TranslationRepository.build('test', :type=>:logger, :callback=>@callback)
|
7
|
-
@rep.is_a?(FastGettext::TranslationRepository::Logger).should be_true
|
8
|
-
end
|
9
|
-
subject{@rep}
|
10
|
-
|
11
|
-
it{ should have(0).available_locales}
|
12
|
-
|
13
|
-
it "has no pluralisation_rule" do
|
14
|
-
@rep.pluralisation_rule.should == nil
|
15
|
-
end
|
16
|
-
|
17
|
-
describe :single do
|
18
|
-
it "logs every call" do
|
19
|
-
@callback.should_receive(:call).with('the_key')
|
20
|
-
@rep['the_key']
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns nil" do
|
24
|
-
@callback.should_receive(:call).with('the_key').and_return 'something'
|
25
|
-
@rep['the_key'].should == nil
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe :plural do
|
30
|
-
it "logs every call" do
|
31
|
-
@callback.should_receive(:call).with(['a','b'])
|
32
|
-
@rep.plural('a','b')
|
33
|
-
end
|
34
|
-
|
35
|
-
it "returns an empty array" do
|
36
|
-
@callback.should_receive(:call).with(['a','b']).and_return 'something'
|
37
|
-
@rep.plural('a','b').should == []
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe 'FastGettext::TranslationRepository::Mo' do
|
4
|
-
before do
|
5
|
-
@rep = FastGettext::TranslationRepository.build('test',:path=>File.join('spec', 'locale'))
|
6
|
-
@rep.is_a?(FastGettext::TranslationRepository::Mo).should be_true
|
7
|
-
end
|
8
|
-
|
9
|
-
it "can be built" do
|
10
|
-
@rep.available_locales.sort.should == ['de','en','gsw_CH']
|
11
|
-
end
|
12
|
-
|
13
|
-
it "can translate" do
|
14
|
-
FastGettext.locale = 'de'
|
15
|
-
@rep['car'].should == 'Auto'
|
16
|
-
end
|
17
|
-
|
18
|
-
it "can pluralize" do
|
19
|
-
FastGettext.locale = 'de'
|
20
|
-
@rep.plural('Axis','Axis').should == ['Achse','Achsen']
|
21
|
-
end
|
22
|
-
|
23
|
-
describe :reload do
|
24
|
-
before do
|
25
|
-
mo_file = FastGettext::MoFile.new('spec/locale/de/LC_MESSAGES/test2.mo')
|
26
|
-
|
27
|
-
FastGettext::MoFile.stub(:new).and_return(FastGettext::MoFile.empty)
|
28
|
-
FastGettext::MoFile.stub(:new).with('spec/locale/de/LC_MESSAGES/test.mo').and_return(mo_file)
|
29
|
-
end
|
30
|
-
|
31
|
-
it "can reload" do
|
32
|
-
FastGettext.locale = 'de'
|
33
|
-
|
34
|
-
@rep['Untranslated and translated in test2'].should be_nil
|
35
|
-
|
36
|
-
@rep.reload
|
37
|
-
|
38
|
-
@rep['Untranslated and translated in test2'].should == 'Translated'
|
39
|
-
end
|
40
|
-
|
41
|
-
it "returns true" do
|
42
|
-
@rep.reload.should be_true
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "has access to the mo repositories pluralisation rule" do
|
47
|
-
FastGettext.locale = 'en'
|
48
|
-
rep = FastGettext::TranslationRepository.build('plural_test',:path=>File.join('spec','locale'))
|
49
|
-
rep['car'].should == 'Test'#just check it is loaded correctly
|
50
|
-
rep.pluralisation_rule.call(2).should == 3
|
51
|
-
end
|
52
|
-
|
53
|
-
it "can work in SAFE mode" do
|
54
|
-
pending_if RUBY_VERSION > "2.0" do
|
55
|
-
`ruby spec/cases/safe_mode_can_handle_locales.rb 2>&1`.should == 'true'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe 'FastGettext::TranslationRepository::Po' do
|
4
|
-
before do
|
5
|
-
@rep = FastGettext::TranslationRepository.build('test',:path=>File.join('spec','locale'),:type=>:po)
|
6
|
-
@rep.is_a?(FastGettext::TranslationRepository::Po).should be_true
|
7
|
-
end
|
8
|
-
|
9
|
-
it "can be built" do
|
10
|
-
@rep.available_locales.sort.should == ['de','en','gsw_CH']
|
11
|
-
end
|
12
|
-
|
13
|
-
it "can translate" do
|
14
|
-
FastGettext.locale = 'de'
|
15
|
-
@rep['car'].should == 'Auto'
|
16
|
-
end
|
17
|
-
|
18
|
-
it "can pluralize" do
|
19
|
-
FastGettext.locale = 'de'
|
20
|
-
@rep.plural('Axis','Axis').should == ['Achse','Achsen']
|
21
|
-
end
|
22
|
-
|
23
|
-
it "has access to the mo repositories pluralisation rule" do
|
24
|
-
FastGettext.locale = 'en'
|
25
|
-
rep = FastGettext::TranslationRepository.build('plural_test',:path=>File.join('spec','locale'),:type=>:po)
|
26
|
-
rep['car'].should == 'Test'#just check it is loaded correctly
|
27
|
-
rep.pluralisation_rule.call(2).should == 3
|
28
|
-
end
|
29
|
-
|
30
|
-
describe 'fuzzy' do
|
31
|
-
before do
|
32
|
-
@fuzzy = File.join('spec','fuzzy_locale')
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should use fuzzy by default" do
|
36
|
-
$stderr.should_receive(:print).at_least(:once)
|
37
|
-
repo = FastGettext::TranslationRepository.build('test',:path=>@fuzzy,:type=>:po)
|
38
|
-
repo["%{relative_time} ago"].should == "vor %{relative_time}"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should warn on fuzzy when ignoring" do
|
42
|
-
$stderr.should_receive(:print).at_least(:once)
|
43
|
-
repo = FastGettext::TranslationRepository.build('test',:path=>@fuzzy,:type=>:po, :ignore_fuzzy => true)
|
44
|
-
repo["%{relative_time} ago"].should == nil
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should ignore fuzzy and not report when told to do so" do
|
48
|
-
$stderr.should_not_receive(:print)
|
49
|
-
repo = FastGettext::TranslationRepository.build('test',:path=>@fuzzy,:type=>:po, :ignore_fuzzy => true, :report_warning => false)
|
50
|
-
repo["%{relative_time} ago"].should == nil
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'obsolete' do
|
55
|
-
it "should warn on obsolete by default" do
|
56
|
-
$stderr.should_receive(:print).at_least(:once)
|
57
|
-
FastGettext::TranslationRepository.build('test',:path=>File.join('spec','obsolete_locale'),:type=>:po)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should ignore obsolete when told to do so" do
|
61
|
-
$stderr.should_not_receive(:print)
|
62
|
-
FastGettext::TranslationRepository.build('test',:path=>File.join('spec','obsolete_locale'),:type=>:po, :report_warning => false)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe 'FastGettext::TranslationRepository::Yaml' do
|
4
|
-
before do
|
5
|
-
FastGettext.pluralisation_rule = nil
|
6
|
-
@rep = FastGettext::TranslationRepository.build('test', :path => File.join('spec', 'locale', 'yaml'), :type => :yaml)
|
7
|
-
@rep.is_a?(FastGettext::TranslationRepository::Yaml).should be_true
|
8
|
-
FastGettext.locale = 'de'
|
9
|
-
end
|
10
|
-
|
11
|
-
it "can be built" do
|
12
|
-
@rep.available_locales.sort.should == ['de', 'en']
|
13
|
-
end
|
14
|
-
|
15
|
-
it "translates nothing when locale is unsupported" do
|
16
|
-
FastGettext.locale = 'xx'
|
17
|
-
@rep['simple'].should == nil
|
18
|
-
end
|
19
|
-
|
20
|
-
it "does not translated categories" do
|
21
|
-
@rep['cars'].should == nil
|
22
|
-
end
|
23
|
-
|
24
|
-
it "can translate simple" do
|
25
|
-
@rep['simple'].should == 'einfach'
|
26
|
-
end
|
27
|
-
|
28
|
-
it "can translate nested" do
|
29
|
-
@rep['cars.car'].should == 'Auto'
|
30
|
-
end
|
31
|
-
|
32
|
-
it "can pluralize" do
|
33
|
-
@rep.plural('cars.axis').should == ['Achse', 'Achsen', nil, nil]
|
34
|
-
end
|
35
|
-
|
36
|
-
describe :reload do
|
37
|
-
before do
|
38
|
-
yaml = YAML.load_file('spec/locale/yaml/de2.yml')
|
39
|
-
|
40
|
-
YAML.stub(:load_file).and_return('en' => {}, 'de' => {})
|
41
|
-
YAML.stub(:load_file).with('spec/locale/yaml/de.yml').and_return(yaml)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "can reload" do
|
45
|
-
FastGettext.locale = 'de'
|
46
|
-
|
47
|
-
@rep['cars.car'].should == 'Auto'
|
48
|
-
|
49
|
-
@rep.reload
|
50
|
-
|
51
|
-
@rep['cars.car'].should == 'Aufzugskabine'
|
52
|
-
end
|
53
|
-
|
54
|
-
it "returns true" do
|
55
|
-
@rep.reload.should be_true
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
it "handles unfound plurals with nil" do
|
60
|
-
@rep.plural('cars.xxx').should == [nil, nil, nil, nil]
|
61
|
-
end
|
62
|
-
|
63
|
-
it "can be used to translate plural forms" do
|
64
|
-
FastGettext.stub(:current_repository).and_return @rep
|
65
|
-
FastGettext.n_('cars.axis','cars.axis',2).should == 'Achsen'
|
66
|
-
FastGettext.n_('cars.axis',2).should == 'Achsen'
|
67
|
-
FastGettext.n_('cars.axis',1).should == 'Achse'
|
68
|
-
end
|
69
|
-
|
70
|
-
4.times do |i|
|
71
|
-
it "can be used to do wanky pluralisation rules #{i}" do
|
72
|
-
FastGettext.stub(:current_repository).and_return @rep
|
73
|
-
@rep.stub(:pluralisation_rule).and_return lambda{|x| i}
|
74
|
-
FastGettext.n_('cars.silly',1).should == i.to_s # cars.silly translations are 0,1,2,3
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
it "can use custom pluraliztion rules" do
|
79
|
-
FastGettext.locale = 'en'
|
80
|
-
{0 => 0, 1 => 1, 2 => 2, 3 => 0}.each do |input, expected|
|
81
|
-
@rep.pluralisation_rule.call(input).should == expected
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|