i18n_column 0.0.1 → 0.0.2
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/README.rdoc +20 -9
- data/VERSION +1 -1
- data/i18n_column.gemspec +2 -5
- data/lib/i18n_column/base.rb +2 -2
- data/lib/i18n_column.rb +0 -1
- data/spec/i18n_column_spec.rb +9 -11
- metadata +4 -7
- data/lib/generators/i18n_column/install/install_generator.rb +0 -19
- data/lib/generators/i18n_column/install/templates/config/initializers/i18n_column.rb +0 -2
- data/lib/i18n_column/language.rb +0 -21
data/README.rdoc
CHANGED
@@ -4,12 +4,19 @@
|
|
4
4
|
|
5
5
|
This extension provides the capabilities of storing and retrieving translations from a single database column. The translations are stored as a JSON object i.e. {"en":"Home","de":"Zuhause"}.
|
6
6
|
|
7
|
-
The current and default
|
7
|
+
The current and default locale are retrieved from the {Rails Internationalization (I18n) API}[http://guides.rubyonrails.org/i18n.html]. Set the current locale on each request with i.e. <tt>I18n.locale = :de</tt>. If not set the default locale will be taken: <tt>I18n.default_locale</tt>. <tt>I18n.locale</tt> is used as the JSON key to store a translation i.e. <tt>"en":"Home"</tt>.
|
8
|
+
|
9
|
+
<tt>i18n_column</tt> is tested with rails version 3.
|
8
10
|
|
9
11
|
== Installation
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
+
<b>Gem</b>
|
14
|
+
|
15
|
+
gem install i18n_column
|
16
|
+
|
17
|
+
<b>Bundler</b>
|
18
|
+
|
19
|
+
gem('i18n_column')
|
13
20
|
|
14
21
|
== Example
|
15
22
|
|
@@ -23,7 +30,7 @@ The current and default language are stored within the class <tt>I18nColumn::Lan
|
|
23
30
|
end
|
24
31
|
|
25
32
|
def self.down
|
26
|
-
drop_table
|
33
|
+
drop_table(:nodes)
|
27
34
|
end
|
28
35
|
end
|
29
36
|
|
@@ -36,21 +43,25 @@ The current and default language are stored within the class <tt>I18nColumn::Lan
|
|
36
43
|
<b>Controller</b>
|
37
44
|
|
38
45
|
class ApplicationController < ActionController::Base
|
39
|
-
before_filter(:
|
46
|
+
before_filter(:set_locale)
|
40
47
|
|
41
48
|
private
|
42
49
|
|
43
|
-
def
|
44
|
-
|
50
|
+
def set_locale
|
51
|
+
I18n.locale = params[:locale]
|
45
52
|
end
|
46
53
|
end
|
47
54
|
|
55
|
+
<b>Set the default locale in config/application.rb file</b>
|
56
|
+
|
57
|
+
config.i18n.default_locale = :de
|
58
|
+
|
48
59
|
<b>Console</b>
|
49
60
|
|
50
|
-
|
61
|
+
I18n.locale = :en
|
51
62
|
node = Node.create!(:name => 'Home') => {"en":"Home"}
|
52
63
|
node.name => 'Home'
|
53
|
-
|
64
|
+
I18n.locale = :de
|
54
65
|
node.name = 'Zuhause'
|
55
66
|
node.save! => {"en":"Home","de":"Zuhause"}
|
56
67
|
node.name => 'Zuhause'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/i18n_column.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{i18n_column}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Philipp Ullmann"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-14}
|
13
13
|
s.description = %q{This extension provides the capabilities of storing and retrieving translations from a single database column. The translations are serialized using JSON.}
|
14
14
|
s.email = %q{philipp.ullmann@create.at}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,11 +24,8 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"i18n_column.gemspec",
|
27
|
-
"lib/generators/i18n_column/install/install_generator.rb",
|
28
|
-
"lib/generators/i18n_column/install/templates/config/initializers/i18n_column.rb",
|
29
27
|
"lib/i18n_column.rb",
|
30
28
|
"lib/i18n_column/base.rb",
|
31
|
-
"lib/i18n_column/language.rb",
|
32
29
|
"spec/.rspec",
|
33
30
|
"spec/i18n_column_spec.rb",
|
34
31
|
"spec/spec_helper.rb"
|
data/lib/i18n_column/base.rb
CHANGED
@@ -19,12 +19,12 @@ module I18nColumn
|
|
19
19
|
class_eval <<-EOV
|
20
20
|
def #{col_name}
|
21
21
|
json = #{col_name}_to_json
|
22
|
-
json.nil? ? nil : json[::
|
22
|
+
json.nil? ? nil : json[::I18n.locale.to_s]
|
23
23
|
end
|
24
24
|
|
25
25
|
def #{col_name}=(value)
|
26
26
|
json = #{col_name}_to_json || {}
|
27
|
-
json[::
|
27
|
+
json[::I18n.locale.to_s] = value
|
28
28
|
self[:#{col_name}] = json.to_json
|
29
29
|
value
|
30
30
|
end
|
data/lib/i18n_column.rb
CHANGED
data/spec/i18n_column_spec.rb
CHANGED
@@ -2,6 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe(I18nColumn::Base) do
|
4
4
|
before(:each) do
|
5
|
+
I18n.locale = :en
|
5
6
|
setup_db
|
6
7
|
end
|
7
8
|
|
@@ -11,7 +12,6 @@ describe(I18nColumn::Base) do
|
|
11
12
|
|
12
13
|
context('with no translation') do
|
13
14
|
before(:each) do
|
14
|
-
I18nColumn::Language.current_lang = 'en'
|
15
15
|
@node = Node.new
|
16
16
|
end
|
17
17
|
|
@@ -31,7 +31,6 @@ describe(I18nColumn::Base) do
|
|
31
31
|
|
32
32
|
context('with an english name only') do
|
33
33
|
before(:each) do
|
34
|
-
I18nColumn::Language.current_lang = 'en'
|
35
34
|
@node = Node.create!(:name => 'Home')
|
36
35
|
end
|
37
36
|
|
@@ -48,7 +47,7 @@ describe(I18nColumn::Base) do
|
|
48
47
|
end
|
49
48
|
|
50
49
|
it('translates the name into german') do
|
51
|
-
|
50
|
+
I18n.locale = :de
|
52
51
|
@node.name = 'Zuhause'
|
53
52
|
@node.name.should == 'Zuhause'
|
54
53
|
end
|
@@ -57,38 +56,37 @@ describe(I18nColumn::Base) do
|
|
57
56
|
|
58
57
|
context('with an english and german name') do
|
59
58
|
before(:each) do
|
60
|
-
I18nColumn::Language.current_lang = 'en'
|
61
59
|
@node = Node.create!(:name => 'Home')
|
62
|
-
|
60
|
+
I18n.locale = :de
|
63
61
|
@node.update_attribute(:name, 'Zuhause')
|
64
62
|
end
|
65
63
|
|
66
64
|
describe('#name') do
|
67
65
|
it('returns the english name') do
|
68
|
-
|
66
|
+
I18n.locale = :en
|
69
67
|
@node.name.should == 'Home'
|
70
68
|
end
|
71
69
|
|
72
70
|
it('returns the german name') do
|
73
|
-
|
71
|
+
I18n.locale = :de
|
74
72
|
@node.name.should == 'Zuhause'
|
75
73
|
end
|
76
74
|
end
|
77
75
|
|
78
76
|
describe('#name=') do
|
79
77
|
it('overrides the english name only') do
|
80
|
-
|
78
|
+
I18n.locale = :en
|
81
79
|
@node.name = 'Home overridden'
|
82
80
|
@node.name.should == 'Home overridden'
|
83
|
-
|
81
|
+
I18n.locale = :de
|
84
82
|
@node.name.should == 'Zuhause'
|
85
83
|
end
|
86
84
|
|
87
85
|
it('overrides the german name only') do
|
88
|
-
|
86
|
+
I18n.locale = :de
|
89
87
|
@node.name = 'Zuhause ueberschrieben'
|
90
88
|
@node.name.should == 'Zuhause ueberschrieben'
|
91
|
-
|
89
|
+
I18n.locale = :en
|
92
90
|
@node.name.should == 'Home'
|
93
91
|
end
|
94
92
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_column
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Philipp Ullmann
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-14 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -83,11 +83,8 @@ files:
|
|
83
83
|
- Rakefile
|
84
84
|
- VERSION
|
85
85
|
- i18n_column.gemspec
|
86
|
-
- lib/generators/i18n_column/install/install_generator.rb
|
87
|
-
- lib/generators/i18n_column/install/templates/config/initializers/i18n_column.rb
|
88
86
|
- lib/i18n_column.rb
|
89
87
|
- lib/i18n_column/base.rb
|
90
|
-
- lib/i18n_column/language.rb
|
91
88
|
- spec/.rspec
|
92
89
|
- spec/i18n_column_spec.rb
|
93
90
|
- spec/spec_helper.rb
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module I18nColumn
|
2
|
-
module Generators
|
3
|
-
class InstallGenerator < Rails::Generators::Base
|
4
|
-
|
5
|
-
desc <<DESC
|
6
|
-
Description:
|
7
|
-
Copy initialize file to your application.
|
8
|
-
DESC
|
9
|
-
|
10
|
-
def self.source_root
|
11
|
-
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
12
|
-
end
|
13
|
-
|
14
|
-
def copy_initializer_file
|
15
|
-
template('config/initializers/i18n_column.rb')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/lib/i18n_column/language.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# Saves the current and default language.
|
2
|
-
module I18nColumn
|
3
|
-
class Language
|
4
|
-
@@default_lang = 'en'
|
5
|
-
|
6
|
-
# Sets the default language.
|
7
|
-
def self.default_lang=(lang)
|
8
|
-
@@default_lang = lang
|
9
|
-
end
|
10
|
-
|
11
|
-
# Returns the current language.
|
12
|
-
def self.current_lang
|
13
|
-
::Thread.current[:i18n_column_current_lang] || @@default_lang
|
14
|
-
end
|
15
|
-
|
16
|
-
# Sets the current language. Must be set by each request.
|
17
|
-
def self.current_lang=(lang)
|
18
|
-
::Thread.current[:i18n_column_current_lang] = lang
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|