snusnu-dm-is-localizable 0.0.5 → 0.0.6

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,56 @@
1
+ [82db7fd | Mon May 18 15:42:50 UTC 2009] snusnu <gamsnjaga@gmail.com>
2
+
3
+ * Version bump to 0.0.6
4
+
5
+ [016ddd5 | Mon May 18 15:42:28 UTC 2009] snusnu <gamsnjaga@gmail.com>
6
+
7
+ * added localizable_instance.translate(attribute, language_code)
8
+
9
+ [30e7f81 | Mon May 18 15:39:08 UTC 2009] snusnu <gamsnjaga@gmail.com>
10
+
11
+ * added more specs for the remixed translation class.
12
+
13
+ Although the specs for the generated belongs_to association readers
14
+ pass, it's not possible to use :language as query condition when
15
+ calling translations.first :language => 'en-US'. Need to use
16
+ :language_id here. I've no idea why, but it could be some problem
17
+ with dm-is-remixable's enhance method, and association generation
18
+ inside this block.
19
+
20
+ TODO investigate this!
21
+
22
+ [1b3ff53 | Mon May 18 15:38:17 UTC 2009] snusnu <gamsnjaga@gmail.com>
23
+
24
+ * added Language.[](code) method
25
+
26
+ [6465349 | Mon May 18 13:28:26 UTC 2009] snusnu <gamsnjaga@gmail.com>
27
+
28
+ * removed rubygems usage from dm-is-localizable
29
+
30
+ [ce1d783 | Mon May 18 13:27:58 UTC 2009] snusnu <gamsnjaga@gmail.com>
31
+
32
+ * updated gemspec to reflect latest version
33
+
34
+ [0749a4b | Sat May 16 19:22:33 UTC 2009] snusnu <gamsnjaga@gmail.com>
35
+
36
+ * Version bump to 0.0.5
37
+
38
+ [ab0090a | Sat May 16 19:22:19 UTC 2009] snusnu <gamsnjaga@gmail.com>
39
+
40
+ * strip whitespace
41
+
42
+ [f5de7dd | Sat May 16 19:21:42 UTC 2009] snusnu <gamsnjaga@gmail.com>
43
+
44
+ * added whitespace task to gemspec
45
+
46
+ [e759d98 | Sat May 16 19:20:27 UTC 2009] snusnu <gamsnjaga@gmail.com>
47
+
48
+ * added rake task to strip whitespace (taken from brynary/webrat)
49
+
50
+ [2ad8adc | Sat May 16 19:17:42 UTC 2009] snusnu <gamsnjaga@gmail.com>
51
+
52
+ * added CHANGELOG and task to generate(update) it
53
+
1
54
  [e66cccc | Sat May 16 19:02:07 UTC 2009] snusnu <gamsnjaga@gmail.com>
2
55
 
3
56
  * Version bump to 0.0.4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{dm-is-localizable}
5
- s.version = "0.0.5"
5
+ s.version = "0.0.6"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Martin Gamsjaeger (snusnu)"]
@@ -81,6 +81,15 @@ module DataMapper
81
81
  self.class.nr_of_available_languages == translations.size
82
82
  end
83
83
 
84
+ def translate(attribute, language_code)
85
+ if language = Language[language_code]
86
+ t = translations.first(:language_id => language.id)
87
+ t.respond_to?(attribute) ? t.send(attribute) : nil
88
+ else
89
+ nil
90
+ end
91
+ end
92
+
84
93
  end
85
94
 
86
95
  end
@@ -12,4 +12,10 @@ class Language
12
12
  # locale string like 'en-US'
13
13
  validates_format :code, :with => /^[a-z]{2}-[A-Z]{2}$/
14
14
 
15
+
16
+ def self.[](code)
17
+ return nil if code.nil?
18
+ first :code => code.to_s.gsub('_', '-')
19
+ end
20
+
15
21
  end
@@ -153,4 +153,59 @@ describe "instance level API:" do
153
153
 
154
154
  end
155
155
 
156
+ describe "translate(attribute, language_code)" do
157
+
158
+ before :each do
159
+ @l1 = Language.create :code => 'en-US', :name => 'English'
160
+ @l2 = Language.create :code => 'de-AT', :name => 'Deutsch'
161
+ @i1 = Item.create
162
+ @t1 = ItemTranslation.create :item => @i1, :language => @l1, :name => 'Book', :desc => 'Literature'
163
+ @t2 = ItemTranslation.create :item => @i1, :language => @l2, :name => 'Buch', :desc => 'Literatur'
164
+ end
165
+
166
+ describe "with an existing attribute" do
167
+
168
+ describe "and an existing language_code" do
169
+
170
+ it "should return the translated string" do
171
+ @i1.translate(:name, :en_US).should == 'Book'
172
+ @i1.translate(:desc, :en_US).should == 'Literature'
173
+ @i1.translate(:name, :de_AT).should == 'Buch'
174
+ @i1.translate(:desc, :de_AT).should == 'Literatur'
175
+ end
176
+
177
+ end
178
+
179
+ describe "and a non existent language_code" do
180
+
181
+ it "should return the translated string" do
182
+ @i1.translate(:name, :it).should be_nil
183
+ end
184
+
185
+ end
186
+
187
+ end
188
+
189
+ describe "with a non existent attribute" do
190
+
191
+ describe "and an existing language_code" do
192
+
193
+ it "should return the translated string" do
194
+ @i1.translate(:foo, :en_US).should be_nil
195
+ end
196
+
197
+ end
198
+
199
+ describe "and a non existent language_code" do
200
+
201
+ it "should return the translated string" do
202
+ @i1.translate(:foo, :it).should be_nil
203
+ end
204
+
205
+ end
206
+
207
+ end
208
+
209
+ end
210
+
156
211
  end
@@ -61,4 +61,37 @@ describe "Language" do
61
61
 
62
62
  end
63
63
 
64
+ describe "the [](value) class method" do
65
+
66
+ before :each do
67
+ Language.create :code => 'en-US', :name => 'English'
68
+ Language.create :code => 'de-AT', :name => 'Deutsch'
69
+ end
70
+
71
+ describe "with nil as paramter" do
72
+
73
+ it "should return nil" do
74
+ Language[nil].should be_nil
75
+ end
76
+
77
+ end
78
+
79
+ describe "with an invalid (not present) language symbol as parameter" do
80
+
81
+ it "should return nil" do
82
+ Language[:it].should be_nil
83
+ end
84
+
85
+ end
86
+
87
+ describe "with a valid (present) language symbol as parameter" do
88
+
89
+ it "should return the correct language instance" do
90
+ Language[:en_US].should == Language.first(:code => 'en-US')
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
64
97
  end
@@ -2,15 +2,26 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe "the remixed translation resource" do
4
4
 
5
+ before :each do
6
+ @l = Language.create :code => 'en-US', :name => 'English'
7
+ @i = Item.create
8
+ @t1 = ItemTranslation.create(:item => @i, :language => @l)
9
+ end
10
+
11
+ it "should belong to a localizable resource" do
12
+ @t1.item.should == @i
13
+ end
14
+
15
+ it "should belong to a language" do
16
+ @t1.language.should == @l
17
+ end
18
+
5
19
  it "should store unique languages for every resource to translate" do
6
- l = Language.create :code => 'en-US', :name => 'English'
7
- i = Item.create
8
- t1 = ItemTranslation.create(:item => i, :language => l)
9
- t1.should_not be_new_record
10
- t2 = ItemTranslation.create(:item => i, :language => l)
11
- t2.should be_new_record
12
- t2.errors.should_not be_empty
13
- t2.errors.size.should == 1
20
+ @t2 = ItemTranslation.create(:item => @i, :language => @l)
21
+ @t1.should_not be_new_record
22
+ @t2.should be_new_record
23
+ @t2.errors.should_not be_empty
24
+ @t2.errors.size.should == 1
14
25
  end
15
26
 
16
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snusnu-dm-is-localizable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Gamsjaeger (snusnu)