fast_gettext 0.8.1 → 0.9.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.
- 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
|