ixtlan-gettext 0.1.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.
@@ -0,0 +1,17 @@
1
+ require 'ixtlan/remote/rest'
2
+ require 'ixtlan/gettext/manager'
3
+ module Ixtlan
4
+ module Remote
5
+
6
+ class Railtie < Rails::Railtie
7
+
8
+ config.rest = Ixtlan::Remote::Rest.new
9
+
10
+ config.gettext = Ixtlan::Gettext::Manager.new
11
+
12
+ rake_tasks do
13
+ load 'ixtlan/gettext/translation.rake'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,120 @@
1
+ require 'dm-migrations'
2
+ require 'dm-validations'
3
+ require 'dm-timestamps'
4
+ require 'dm-sqlite-adapter'
5
+ require 'ixtlan/gettext/models'
6
+ require 'ixtlan/gettext/manager'
7
+
8
+
9
+ describe Ixtlan::Gettext::Manager do
10
+
11
+ include FastGettext::Translation
12
+
13
+ subject { Ixtlan::Gettext::Manager.new }
14
+
15
+ let( :en ) { @en }
16
+ let( :de ) { @de }
17
+
18
+ let( :test ) { @test }
19
+
20
+ let( :key ) { @key }
21
+
22
+ let( :word ) { @word }
23
+ let( :wort ) { @wort }
24
+ let( :word_test ) { @word_test }
25
+ let( :wort_test ) { @wort_test }
26
+
27
+ before do
28
+ DataMapper.setup(:default, "sqlite::memory:")
29
+ DataMapper.auto_migrate!
30
+ # setup DB :)
31
+ date = DateTime.now( 0 )
32
+ @en = Ixtlan::Gettext::Locale.first_or_create( :code => 'en',
33
+ :updated_at => date )
34
+ @de = Ixtlan::Gettext::Locale.first_or_create( :code => 'de',
35
+ :updated_at => date )
36
+ @test = Ixtlan::UserManagement::Domain.first_or_create( :name => 'test',
37
+ :updated_at => date )
38
+ @key = Ixtlan::Gettext::TranslationKey.first_or_create( :name => 'word',
39
+ :updated_at => date )
40
+ @word = Ixtlan::Gettext::Translation.first_or_create( :text => 'word_en_default',
41
+ :updated_at => date,
42
+ :translation_key => key,
43
+ :locale => @en )
44
+ @word_test = Ixtlan::Gettext::Translation.first_or_create( :text => 'word_en_test',
45
+ :updated_at => date,
46
+ :translation_key => key,
47
+ :domain => @test,
48
+ :locale => @en )
49
+ @wort = Ixtlan::Gettext::Translation.first_or_create( :text => 'wort_de_default',
50
+ :updated_at => date,
51
+ :translation_key => key,
52
+ :locale => @de )
53
+ @wort_test = Ixtlan::Gettext::Translation.first_or_create( :text => 'wort_de_test',
54
+ :updated_at => date,
55
+ :translation_key => key,
56
+ :domain => @test,
57
+ :locale => @de )
58
+
59
+ FastGettext.default_locale = en.code
60
+ end
61
+
62
+ it 'lookup' do
63
+ subject.use( en.code )
64
+ _('word').must_equal "word_en_default"
65
+ subject.use( en.code, test.name )
66
+ _('word').must_equal "word_en_test"
67
+ subject.use( de.code )
68
+ _('word').must_equal "wort_de_default"
69
+ subject.use( de.code, test.name )
70
+ _('word').must_equal "wort_de_test"
71
+
72
+ wort_test.reload.destroy!
73
+ subject.flush_caches
74
+
75
+ subject.use( en.code )
76
+ _('word').must_equal "word_en_default"
77
+ subject.use( en.code, test.name )
78
+ _('word').must_equal "word_en_test"
79
+ subject.use( de.code )
80
+ _('word').must_equal "wort_de_default"
81
+ subject.use( de.code, test.name )
82
+ _('word').must_equal "wort_de_default"
83
+
84
+ wort.destroy!
85
+ subject.flush_caches
86
+
87
+ subject.use( en.code )
88
+ _('word').must_equal "word_en_default"
89
+ subject.use( en.code, test.name )
90
+ _('word').must_equal "word_en_test"
91
+ subject.use( de.code )
92
+ _('word').must_equal "word"
93
+ subject.use( de.code, test.name )
94
+ _('word').must_equal "word"
95
+
96
+ word.destroy!
97
+ subject.flush_caches
98
+
99
+ subject.use( en.code )
100
+ _('word').must_equal 'word'
101
+ subject.use( en.code, test.name )
102
+ _('word').must_equal "word_en_test"
103
+ subject.use( de.code )
104
+ _('word').must_equal 'word'
105
+ subject.use( de.code, test.name )
106
+ _('word').must_equal "word"
107
+
108
+ word_test.destroy!
109
+ subject.flush_caches
110
+
111
+ subject.use( en.code )
112
+ _('word').must_equal 'word'
113
+ subject.use( en.code, test.name )
114
+ _('word').must_equal 'word'
115
+ subject.use( de.code )
116
+ _('word').must_equal 'word'
117
+ subject.use( de.code, test.name )
118
+ _('word').must_equal 'word'
119
+ end
120
+ end
@@ -0,0 +1,68 @@
1
+ require 'dm-migrations'
2
+ require 'dm-validations'
3
+ require 'dm-timestamps'
4
+ require 'dm-sqlite-adapter'
5
+ require 'ixtlan/gettext/models'
6
+ require 'ixtlan/gettext/manager'
7
+
8
+ DataMapper.setup(:default, "sqlite::memory:")
9
+ DataMapper.auto_migrate!
10
+
11
+ describe Ixtlan::Gettext::Manager do
12
+
13
+ include FastGettext::Translation
14
+
15
+ subject { Ixtlan::Gettext::Manager.new }
16
+
17
+ let( :date ) { DateTime.now( 0 ) }
18
+
19
+ let( :en ) { Ixtlan::Gettext::Locale.first_or_create( :code => 'en',
20
+ :updated_at => date ) }
21
+ let( :de ) { Ixtlan::Gettext::Locale.first_or_create( :code => 'de',
22
+ :updated_at => date ) }
23
+
24
+ let( :test ) { Ixtlan::UserManagement::Domain.first_or_create( :name => 'test',
25
+ :updated_at => date ) }
26
+
27
+ let( :key ) { Ixtlan::Gettext::TranslationKey.first_or_create( :name => 'word',
28
+ :updated_at => date ) }
29
+
30
+ let( :word ) { Ixtlan::Gettext::Translation.first_or_create( :text => 'word_en_default',
31
+ :updated_at => date,
32
+ :translation_key => key,
33
+ :locale => en ) }
34
+ let( :wort ) { Ixtlan::Gettext::Translation.first_or_create( :text => 'wort_de_default',
35
+ :updated_at => date,
36
+ :translation_key => key,
37
+ :locale => de ) }
38
+ let( :word_test ) { Ixtlan::Gettext::Translation.first_or_create( :text => 'word_en_test',
39
+ :updated_at => date,
40
+ :translation_key => key,
41
+ :domain => test,
42
+ :locale => en ) }
43
+ let( :wort_test ) { Ixtlan::Gettext::Translation.first_or_create( :text => 'wort_de_test',
44
+ :updated_at => date,
45
+ :translation_key => key,
46
+ :domain => test,
47
+ :locale => de ) }
48
+ before do
49
+ # setup DB :)
50
+ en
51
+ de
52
+ test
53
+ word
54
+ word_test
55
+ wort
56
+ wort_test
57
+ end
58
+
59
+ it 'd' do
60
+ # p Ixtlan::Gettext::TranslationKey.all
61
+ # p Ixtlan::Gettext::Translation.all
62
+ # p Ixtlan::Gettext::Locale.all
63
+ # p Ixtlan::UserManagement::Domain.all
64
+ subject.use( en.code )
65
+ puts "ads"
66
+ p _('word')
67
+ end
68
+ end
@@ -0,0 +1,83 @@
1
+ require 'ixtlan/remote/sync'
2
+ require 'ixtlan/remote/rest'
3
+ require 'dm-aggregates'
4
+ require 'dm-migrations'
5
+ require 'dm-sqlite-adapter'
6
+ require 'webmock/minitest'
7
+
8
+ class Locale
9
+ include DataMapper::Resource
10
+
11
+ property :id, Serial
12
+ property :name, String
13
+ property :updated_at, DateTime
14
+ end
15
+ DataMapper.setup(:default, "sqlite::memory:")
16
+ Locale.auto_migrate!
17
+
18
+ describe Ixtlan::Remote::Sync do
19
+
20
+ subject do
21
+ s = Ixtlan::Remote::Sync.new( restserver)
22
+ s.register( Locale )
23
+ s
24
+ end
25
+
26
+ let( :baseurl ) { 'http://www.example.com' }
27
+ let( :restserver ) do
28
+ factory = Ixtlan::Remote::Rest.new
29
+ factory.server( :trans ) do |s|
30
+ s.url = baseurl
31
+ s.add_model( Locale )
32
+ end
33
+ factory
34
+ end
35
+ let( :headers ) { { 'Accept'=>'application/json', 'Accept-Encoding'=>'gzip, deflate', 'Content-Type'=>'application/json' }}#, 'User-Agent'=>'Ruby' } }
36
+ let( :url ) { baseurl + "/locales" }
37
+
38
+ before { Locale.all.destroy }
39
+
40
+ it 'sync all' do
41
+
42
+ stub_request(:get, /#{url}\/last_changes.*00:00:00.*/).with(:headers => headers).to_return( :status => 200, :body => '[{"id": 111, "name": "bla", "updated_at":"2011-07-20 11:11:11.000000+0:00" }]' )
43
+
44
+ subject.do_it.to_s.must_equal "update Locale - total: 1 success: 1 failures: 0"
45
+
46
+ Locale.count.must_equal 1
47
+
48
+ stub_request(:get, /#{url}\/last_changes.*11:11:11.*/).with(:headers => headers).to_return( :status => 200, :body => '[{"id": 111, "name": "blabla", "updated_at":"2011-07-20 11:11:12.000000+0:00" }]' )
49
+
50
+ subject.do_it( Locale ).to_s.must_equal "update Locale - total: 1 success: 1 failures: 0"
51
+
52
+ Locale.count.must_equal 1
53
+ Locale.first.name.must_equal 'blabla'
54
+
55
+ stub_request(:get, /#{url}\/last_changes.*11:11:12.*/).with(:headers => headers).to_return( :status => 200, :body => '[]' )
56
+
57
+ subject.do_it.to_s.must_equal "update Locale - total: 0 success: 0 failures: 0"
58
+
59
+ Locale.count.must_equal 1
60
+ end
61
+
62
+ it 'sync Locale' do
63
+
64
+ stub_request(:get, /#{url}\/last_changes.*00:00:00.*/).with(:headers => headers).to_return( :status => 200, :body => '[{"id": 111, "name": "bla", "updated_at":"2011-07-20 10:10:10.000000+0:00" }]' )
65
+
66
+ subject.do_it( Locale ).to_s.must_equal "update Locale - total: 1 success: 1 failures: 0"
67
+
68
+ Locale.count.must_equal 1
69
+
70
+ stub_request(:get, /#{url}\/last_changes.*10:10:10.*/).with(:headers => headers).to_return( :status => 200, :body => '[{"id": 111, "name": "blabla", "updated_at":"2011-07-20 10:10:11.000000+0:00" }]' )
71
+
72
+ subject.do_it( Locale ).to_s.must_equal "update Locale - total: 1 success: 1 failures: 0"
73
+
74
+ Locale.count.must_equal 1
75
+ Locale.first.name.must_equal 'blabla'
76
+
77
+ stub_request(:get, /#{url}\/last_changes.*10:10:11.*/).with(:headers => headers).to_return( :status => 200, :body => '[]' )
78
+
79
+ subject.do_it( Locale ).to_s.must_equal "update Locale - total: 0 success: 0 failures: 0"
80
+
81
+ Locale.count.must_equal 1
82
+ end
83
+ end
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ixtlan-gettext
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Christian Meier
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-12-31 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: ixtlan-remote
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 9
29
+ segments:
30
+ - 0
31
+ - 1
32
+ version: "0.1"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: fast_gettext
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 7
44
+ segments:
45
+ - 0
46
+ - 6
47
+ version: "0.6"
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rake
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ hash: 75
59
+ segments:
60
+ - 10
61
+ - 0
62
+ - 2
63
+ version: 10.0.2
64
+ type: :development
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: minitest
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ hash: 51
75
+ segments:
76
+ - 4
77
+ - 3
78
+ - 0
79
+ version: 4.3.0
80
+ type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: dm-sqlite-adapter
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - "="
89
+ - !ruby/object:Gem::Version
90
+ hash: 31
91
+ segments:
92
+ - 1
93
+ - 2
94
+ - 0
95
+ version: 1.2.0
96
+ type: :development
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ name: dm-migrations
100
+ prerelease: false
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - "="
105
+ - !ruby/object:Gem::Version
106
+ hash: 31
107
+ segments:
108
+ - 1
109
+ - 2
110
+ - 0
111
+ version: 1.2.0
112
+ type: :development
113
+ version_requirements: *id006
114
+ - !ruby/object:Gem::Dependency
115
+ name: dm-validations
116
+ prerelease: false
117
+ requirement: &id007 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - "="
121
+ - !ruby/object:Gem::Version
122
+ hash: 31
123
+ segments:
124
+ - 1
125
+ - 2
126
+ - 0
127
+ version: 1.2.0
128
+ type: :development
129
+ version_requirements: *id007
130
+ - !ruby/object:Gem::Dependency
131
+ name: dm-timestamps
132
+ prerelease: false
133
+ requirement: &id008 !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - "="
137
+ - !ruby/object:Gem::Version
138
+ hash: 31
139
+ segments:
140
+ - 1
141
+ - 2
142
+ - 0
143
+ version: 1.2.0
144
+ type: :development
145
+ version_requirements: *id008
146
+ - !ruby/object:Gem::Dependency
147
+ name: copyright-header
148
+ prerelease: false
149
+ requirement: &id009 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ hash: 15
155
+ segments:
156
+ - 1
157
+ - 0
158
+ version: "1.0"
159
+ type: :development
160
+ version_requirements: *id009
161
+ description: helper to use fast_gettext with datamapper/ixtlan
162
+ email:
163
+ - m.kristian@web.de
164
+ executables: []
165
+
166
+ extensions: []
167
+
168
+ extra_rdoc_files: []
169
+
170
+ files:
171
+ - lib/ixtlan-gettext.rb
172
+ - lib/fast_gettext/translation_repository/ixtlan.rb
173
+ - lib/fast_gettext/translation_repository/ixtlan.rb~
174
+ - lib/ixtlan-gettext.rb~
175
+ - lib/ixtlan/gettext.rb
176
+ - lib/ixtlan/gettext.rb~
177
+ - lib/ixtlan/gettext/translation_models.rb~
178
+ - lib/ixtlan/gettext/locale_serializer.rb
179
+ - lib/ixtlan/gettext/controller.rb
180
+ - lib/ixtlan/gettext/rails_controller.rb~
181
+ - lib/ixtlan/gettext/crawler.rb
182
+ - lib/ixtlan/gettext/models.rb~
183
+ - lib/ixtlan/gettext/controller.rb~
184
+ - lib/ixtlan/gettext/locale.rb~
185
+ - lib/ixtlan/gettext/manager.rb
186
+ - lib/ixtlan/gettext/locale_resource.rb~
187
+ - lib/ixtlan/gettext/crawler.rb~
188
+ - lib/ixtlan/gettext/translation.rake
189
+ - lib/ixtlan/gettext/railtie.rb~
190
+ - lib/ixtlan/gettext/manager.rb~
191
+ - lib/ixtlan/gettext/models.rb
192
+ - lib/ixtlan/gettext/railtie.rb
193
+ - lib/ixtlan/gettext/locale_resource.rb
194
+ - lib/ixtlan/gettext/translation.rake~
195
+ - lib/ixtlan/railtie.rb~
196
+ - spec/manager_spec.rb~
197
+ - spec/sync_spec.rb~
198
+ - spec/manager_spec.rb
199
+ - agpl-3.0.txt
200
+ - README.md
201
+ - Gemfile
202
+ homepage: https://github.com/mkristian/ixtlan-gettext
203
+ licenses:
204
+ - AGPL3
205
+ post_install_message:
206
+ rdoc_options: []
207
+
208
+ require_paths:
209
+ - lib
210
+ required_ruby_version: !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ hash: 3
216
+ segments:
217
+ - 0
218
+ version: "0"
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
+ none: false
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ hash: 3
225
+ segments:
226
+ - 0
227
+ version: "0"
228
+ requirements: []
229
+
230
+ rubyforge_project:
231
+ rubygems_version: 1.8.15
232
+ signing_key:
233
+ specification_version: 3
234
+ summary: ""
235
+ test_files:
236
+ - spec/manager_spec.rb