grosser-fast_gettext 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -64,7 +64,7 @@ and do not need to be readded for every thread (parsing takes time...).
64
64
  Try the [gettext_i18n_rails plugin](http://github.com/grosser/gettext_i18n_rails), it simplifies the setup.
65
65
 
66
66
  Setting `available_locales`,`text_domain` or `locale` will not work inside the `evironment.rb`, since it runs in a different thread
67
- then e.g. controllers, so set them inside your application_controller.
67
+ then e.g. controllers, so set them inside your application_controller.
68
68
 
69
69
  #environment.rb after initializers
70
70
  FastGettext.add_text_domain('accounting',:path=>'locale')
@@ -96,6 +96,10 @@ Advanced features
96
96
  Pluralisation rules can be set directly via a lambda (see code/specs), or by using the Gettext
97
97
  plural definition (see spec/locale/en/test_plural.po or [Plural expressions for all languages](http://translate.sourceforge.net/wiki/l10n/pluralforms).
98
98
 
99
+ ###default_text_domain
100
+ If you only use one text domain, setting `FastGettext.default_text_domain = 'app'`
101
+ is sufficient and no more `text_domain=` is needed
102
+
99
103
  ###Plugins
100
104
  Want a yml, xml, database version ?
101
105
  Write your own TranslationRepository!
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 3
4
- :patch: 4
4
+ :patch: 5
@@ -10,7 +10,7 @@ module FastGettext
10
10
  end
11
11
  end
12
12
 
13
- [:available_locales,:text_domain,:_locale,:current_cache].each do |method_name|
13
+ [:available_locales,:_locale,:current_cache].each do |method_name|
14
14
  key = "fast_gettext_#{method_name}".to_sym
15
15
  define_method method_name do
16
16
  Thread.current[key]
@@ -23,11 +23,26 @@ module FastGettext
23
23
  #so initial translations does not crash
24
24
  Thread.current[:fast_gettext_current_cache]={}
25
25
 
26
+ def text_domain
27
+ Thread.current[:fast_gettext_text_domain] || default_text_domain
28
+ end
29
+
26
30
  def text_domain=(new_domain)
27
31
  Thread.current[:fast_gettext_text_domain]=new_domain
28
32
  update_current_cache
29
33
  end
30
34
 
35
+ #-> cattr_accessor :default_text_domain
36
+ @@default_text_domain = nil
37
+ def default_text_domain=(domain)
38
+ @@default_text_domain = domain
39
+ update_current_cache
40
+ end
41
+
42
+ def default_text_domain
43
+ @@default_text_domain
44
+ end
45
+
31
46
  #global, since re-parsing whole folders takes too much time...
32
47
  @@translation_repositories={}
33
48
  def translation_repositories
@@ -4,11 +4,15 @@ require File.join(current_folder,'..','spec_helper')
4
4
  include FastGettext::Storage
5
5
 
6
6
  describe 'Storage' do
7
+ before do
8
+ self.default_text_domain = nil
9
+ end
10
+
7
11
  def thread_save(method)
8
12
  send("#{method}=",'de')
9
13
 
10
14
  # mess around with other threads
11
- 100.times do |i|
15
+ 100.times do
12
16
  Thread.new {FastGettext.send("#{method}=",'en')}
13
17
  end
14
18
 
@@ -28,35 +32,62 @@ describe 'Storage' do
28
32
  self.translation_repositories[:x].should == 2
29
33
  end
30
34
 
35
+ describe :default_text_domain do
36
+ it "stores default_text_domain non-thread-safe" do
37
+ self.default_text_domain=1
38
+ t = Thread.new{self.default_text_domain=2}
39
+ t.join
40
+ self.default_text_domain.should == 2
41
+ end
42
+
43
+ it "uses default_text_domain when text_domain is not set" do
44
+ self.text_domain = nil
45
+ self.default_text_domain = 'x'
46
+ text_domain.should == 'x'
47
+ end
48
+
49
+ it "does not use default when domain is set" do
50
+ self.text_domain = 'x'
51
+ self.default_text_domain = 'y'
52
+ text_domain.should == 'x'
53
+ end
54
+ end
55
+
31
56
  describe :locale do
32
57
  it "stores everything as long as available_locales is not set" do
33
58
  self.available_locales = nil
34
59
  self.locale = 'XXX'
35
60
  locale.should == 'XXX'
36
61
  end
62
+
37
63
  it "is en if no locale and no available_locale were set" do
38
64
  FastGettext.send(:_locale=,nil)
39
65
  self.available_locales = nil
40
66
  locale.should == 'en'
41
67
  end
68
+
42
69
  it "does not change the locale if locales was called with nil" do
43
70
  self.locale = nil
44
71
  locale.should == 'en'
45
72
  end
73
+
46
74
  it "is the first available_locale if one was set" do
47
75
  self.available_locales = ['de']
48
76
  locale.should == 'de'
49
77
  end
78
+
50
79
  it "does not store a locale if it is not available" do
51
80
  self.available_locales = ['de']
52
81
  self.locale = 'en'
53
82
  locale.should == 'de'
54
83
  end
84
+
55
85
  it "set_locale returns the old locale if the new could not be set" do
56
86
  self.locale = 'de'
57
87
  self.available_locales = ['de']
58
88
  self.set_locale('en').should == 'de'
59
89
  end
90
+
60
91
  {
61
92
  'Opera' => "de-DE,de;q=0.9,en;q=0.8",
62
93
  'Firefox' => "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3",
@@ -68,11 +99,13 @@ describe 'Storage' do
68
99
  FastGettext.locale.should == 'de_DE'
69
100
  end
70
101
  end
102
+
71
103
  it "sets a unimportant locale if it is the only available" do
72
104
  FastGettext.available_locales = ['en','xx']
73
105
  FastGettext.locale = "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"
74
106
  FastGettext.locale.should == 'en'
75
107
  end
108
+
76
109
  it "sets locale from comma seperated" do
77
110
  FastGettext.available_locales = ['de_DE','en','xx']
78
111
  FastGettext.locale = "de,de-de,en"
@@ -84,6 +117,7 @@ describe 'Storage' do
84
117
  before do
85
118
  FastGettext.text_domain = 'xxx'
86
119
  end
120
+
87
121
  it "raises when a textdomain was empty" do
88
122
  begin
89
123
  FastGettext._('x')
@@ -91,7 +125,7 @@ describe 'Storage' do
91
125
  rescue FastGettext::Storage::NoTextDomainConfigured
92
126
  end
93
127
  end
94
-
128
+
95
129
  it "can silence erros" do
96
130
  FastGettext.silence_errors
97
131
  FastGettext._('x').should == 'x'
@@ -100,16 +134,30 @@ describe 'Storage' do
100
134
 
101
135
  describe :current_cache do
102
136
  before do
137
+ FastGettext.text_domain = 'xxx'
103
138
  FastGettext.available_locales = ['de','en']
104
139
  FastGettext.locale = 'de'
105
140
  FastGettext._('abc')
106
141
  FastGettext.locale = 'en'
107
142
  end
108
143
 
109
- it "stores a translation seperatly" do
144
+ it "stores a translation seperate by locale" do
110
145
  FastGettext.current_cache['abc'].should == nil
111
146
  end
112
147
 
148
+ it "stores a translation seperate by domain" do
149
+ FastGettext.locale = 'de'
150
+ FastGettext.text_domain = nil
151
+ FastGettext.current_cache['abc'].should == nil
152
+ end
153
+
154
+ it "cache is restored through setting of default_text_domain" do
155
+ FastGettext.locale = 'de'
156
+ FastGettext.text_domain = nil
157
+ FastGettext.default_text_domain = 'xxx'
158
+ FastGettext.current_cache['abc'].should == 'abc'
159
+ end
160
+
113
161
  it "stores a translation permanently" do
114
162
  FastGettext.locale = 'de'
115
163
  FastGettext.current_cache['abc'].should == 'abc'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grosser-fast_gettext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser