simple_localizer 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,6 +18,14 @@ class Product < ActiveRecord::Base
18
18
  end
19
19
  ```
20
20
 
21
+ ## Create migration for translations
22
+
23
+ ```console
24
+ bundle exec rails generate simple_localizer:create_migration product name:string
25
+ ```
26
+
27
+ ## Usage
28
+
21
29
  ```ruby
22
30
  product = Product.create! :name_en => 'a'
23
31
  puts product.name_en # => a
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -0,0 +1,32 @@
1
+ module SimpleLocalizer
2
+ module Generators
3
+ class CreateMigrationGenerator < Rails::Generators::Base
4
+ include Rails::Generators::Migration
5
+
6
+ source_root File.expand_path('../templates', __FILE__)
7
+ argument :model_name, :type => :string
8
+ argument :fields, :type => :hash
9
+
10
+ def self.next_migration_number(dirname, count = 0)
11
+ if count == 0
12
+ name = Time.now.strftime("%Y%m%d%H%M%S")
13
+ else
14
+ name = (Time.now + count).strftime("%Y%m%d%H%M%S")
15
+ end
16
+
17
+ if Dir[File.join(dirname, name + '*')].empty?
18
+ name
19
+ else
20
+ next_migration_number(dirname, count + 1)
21
+ end
22
+ end
23
+
24
+ def create_migration
25
+ migration_template(
26
+ "create_translations.rb",
27
+ "db/migrate/create_#{model_name.underscore}_translations",
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ <% table_name = ":#{model_name.underscore}_translations" -%>
2
+ <% owner_id = ":#{model_name.underscore}_id" -%>
3
+ class Create<%= model_name.camelcase -%>Translations < ActiveRecord::Migration
4
+ def change
5
+ create_table <%= table_name -%> do |t|
6
+ t.string :locale, :null => false
7
+ t.integer <%= owner_id -%>
8
+ <% fields.each_pair do |column, type| %>
9
+ t.<%= type %> <%= ":#{column}" -%>
10
+ <% end %>
11
+
12
+ t.timestamps
13
+ end
14
+
15
+ add_index <%= table_name -%>, <%= owner_id %>
16
+ add_index <%= table_name -%>, :locale
17
+ add_index <%= table_name -%>, [:locale, <%= owner_id -%>], :unique => true
18
+ end
19
+ end
@@ -3,7 +3,7 @@
3
3
  require "active_record"
4
4
 
5
5
  module SimpleLocalizer
6
- SUPPORTED_LOCALES = %w(
6
+ @@supported_locales = %w(
7
7
  aa ab ae af al am ar as ay az
8
8
  ba be bg bh bi bn bo bp br ca
9
9
  cf ch co cs cy de dr dt dz ef
@@ -41,7 +41,7 @@ module SimpleLocalizer
41
41
 
42
42
  translated_attribute_names.each do |attr|
43
43
  define_method attr do
44
- locale = SimpleLocalizer.read_locale || I18n.default_locale.to_s
44
+ locale = SimpleLocalizer.read_locale
45
45
  send("#{attr}_#{locale}")
46
46
  end
47
47
 
@@ -50,7 +50,7 @@ module SimpleLocalizer
50
50
  send("#{attr}_#{locale}=", value)
51
51
  end
52
52
 
53
- SimpleLocalizer::SUPPORTED_LOCALES.each do |locale|
53
+ SimpleLocalizer.supported_locales.each do |locale|
54
54
  define_method "#{attr}_#{locale}" do
55
55
  translation = translations.detect { |translation|
56
56
  translation.locale == locale
@@ -80,9 +80,17 @@ module SimpleLocalizer
80
80
 
81
81
  module_function
82
82
 
83
+ def supported_locales
84
+ @@supported_locales
85
+ end
86
+
87
+ def supported_locales=(value)
88
+ @@supported_locales = value
89
+ end
90
+
83
91
  def with_locale(new_locale, &block)
84
92
  begin
85
- pre_locale = read_locale
93
+ pre_locale = Thread.current[:simple_localizer_locale]
86
94
  set_locale(new_locale)
87
95
  yield
88
96
  ensure
@@ -91,7 +99,7 @@ module SimpleLocalizer
91
99
  end
92
100
 
93
101
  def read_locale
94
- Thread.current[:simple_localizer_locale]
102
+ (Thread.current[:simple_localizer_locale] || I18n.locale || I18n.default_locale).to_s
95
103
  end
96
104
 
97
105
  private
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "simple_localizer"
8
- s.version = "0.0.1"
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 = ["vad4msiu"]
@@ -23,6 +23,8 @@ Gem::Specification.new do |s|
23
23
  "README.md",
24
24
  "Rakefile",
25
25
  "VERSION",
26
+ "lib/generators/simple_localizer/create_migration_generator.rb",
27
+ "lib/generators/simple_localizer/templates/create_translations.rb",
26
28
  "lib/simple_localizer.rb",
27
29
  "simple_localizer.gemspec",
28
30
  "spec/database.yml",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_localizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-08-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &70306244922640 !ruby/object:Gem::Requirement
16
+ requirement: &70335564759600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70306244922640
24
+ version_requirements: *70335564759600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70306244922020 !ruby/object:Gem::Requirement
27
+ requirement: &70335564758700 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.8.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70306244922020
35
+ version_requirements: *70335564758700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &70306244921440 !ruby/object:Gem::Requirement
38
+ requirement: &70335564757240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70306244921440
46
+ version_requirements: *70335564757240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &70306244920740 !ruby/object:Gem::Requirement
49
+ requirement: &70335564756460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70306244920740
57
+ version_requirements: *70335564756460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: database_cleaner
60
- requirement: &70306244934620 !ruby/object:Gem::Requirement
60
+ requirement: &70335564755700 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70306244934620
68
+ version_requirements: *70335564755700
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
- requirement: &70306244933760 !ruby/object:Gem::Requirement
71
+ requirement: &70335564771380 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70306244933760
79
+ version_requirements: *70335564771380
80
80
  description: Simple localization your ActiveRecord fields without magic
81
81
  email: vad4msiu@gmail.com
82
82
  executables: []
@@ -91,6 +91,8 @@ files:
91
91
  - README.md
92
92
  - Rakefile
93
93
  - VERSION
94
+ - lib/generators/simple_localizer/create_migration_generator.rb
95
+ - lib/generators/simple_localizer/templates/create_translations.rb
94
96
  - lib/simple_localizer.rb
95
97
  - simple_localizer.gemspec
96
98
  - spec/database.yml
@@ -112,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
114
  version: '0'
113
115
  segments:
114
116
  - 0
115
- hash: -348099263649400343
117
+ hash: -3509865957538807327
116
118
  required_rubygems_version: !ruby/object:Gem::Requirement
117
119
  none: false
118
120
  requirements: