grosser-fast_gettext 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +31 -0
- data/VERSION.yml +1 -1
- data/lib/fast_gettext/storage.rb +6 -1
- data/lib/fast_gettext.rb +1 -0
- data/spec/fast_gettext/storage_spec.rb +8 -1
- metadata +2 -2
data/README.markdown
CHANGED
@@ -44,6 +44,37 @@ GetText
|
|
44
44
|
mapped: 9156K writeable/private: 6124K shared: 28K
|
45
45
|
|
46
46
|
|
47
|
+
Thread Safety and Rails
|
48
|
+
=======================
|
49
|
+
`text_domains` is not stored thread-save, so that they can be added inside the `environment.rb`,
|
50
|
+
and do not need to be readded for every thread (parsing takes time...).
|
51
|
+
|
52
|
+
Setting `available_locales`,`text_domain` or `locale` will not work inside the `evironment.rb`, since it runs in a different thread
|
53
|
+
then e.g. controllers, so set them inside your application_controller.
|
54
|
+
|
55
|
+
#environment.rb after initializers
|
56
|
+
FastGettext.add_text_domain('accounting',:path=>'locale')
|
57
|
+
FastGettext.add_text_domain('frontend',:path=>'locale')
|
58
|
+
...
|
59
|
+
|
60
|
+
#application_controller.rb
|
61
|
+
FastGettext.available_locales = ['de','en',...]
|
62
|
+
FastGettext.text_domain = 'frontend'
|
63
|
+
|
64
|
+
class ApplicationController ...
|
65
|
+
include FastGettext
|
66
|
+
before_filter :set_locale
|
67
|
+
def set_locale
|
68
|
+
sessions[:locale] = I18n.locale = FastGettext.locale = params[:locale] || sessions[:locale] || 'en'
|
69
|
+
end
|
70
|
+
|
71
|
+
#application_helper.rb
|
72
|
+
module ApplicationHelper
|
73
|
+
include FastGettext
|
74
|
+
...
|
75
|
+
|
76
|
+
Try the [gettext_i18n_rails plugin](http://github.com/grosser/gettext_i18n_rails), it simplifies the setup.
|
77
|
+
|
47
78
|
Updating translations
|
48
79
|
=====================
|
49
80
|
ATM you have to use the [original GetText](http://github.com/mutoh/gettext) to create and manage your po/mo-files.
|
data/VERSION.yml
CHANGED
data/lib/fast_gettext/storage.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module FastGettext
|
2
2
|
module Storage
|
3
|
-
[:text_domain,:available_locales
|
3
|
+
[:text_domain,:available_locales].each do |method|
|
4
4
|
define_method method do
|
5
5
|
thread_store(method)
|
6
6
|
end
|
@@ -9,6 +9,11 @@ module FastGettext
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
@@text_domains={}
|
13
|
+
def text_domains
|
14
|
+
@@text_domains
|
15
|
+
end
|
16
|
+
|
12
17
|
def locale
|
13
18
|
thread_store(:locale) || (available_locales||[]).first || 'en'
|
14
19
|
end
|
data/lib/fast_gettext.rb
CHANGED
@@ -15,12 +15,19 @@ describe Storage do
|
|
15
15
|
send(method) == 'de'
|
16
16
|
end
|
17
17
|
|
18
|
-
[:locale, :available_locales, :text_domain
|
18
|
+
[:locale, :available_locales, :text_domain].each do |method|
|
19
19
|
it "stores #{method} thread-save" do
|
20
20
|
thread_save(method).should == true
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
it "stores text_domains non-thread-safe" do
|
25
|
+
self.text_domains[:x]=1
|
26
|
+
t = Thread.new{self.text_domains[:x]=2}
|
27
|
+
t.join
|
28
|
+
self.text_domains[:x].should == 2
|
29
|
+
end
|
30
|
+
|
24
31
|
describe :locale do
|
25
32
|
it "stores everything as long as available_locales is not set" do
|
26
33
|
self.available_locales = nil
|
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.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02-
|
12
|
+
date: 2009-02-20 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|