amatsuda-i18n_generators 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,8 @@ module I18nGenerator::Generator
10
10
  module Create
11
11
  def translation_yaml
12
12
  I18n.locale = locale_name
13
+ threads = []
14
+ now = Time.now
13
15
  models = model_filenames.map do |model_name|
14
16
  model = begin
15
17
  m = model_name.camelize.constantize
@@ -18,28 +20,33 @@ module I18nGenerator::Generator
18
20
  rescue
19
21
  next
20
22
  end
21
- registered_t_name = I18n.t("activerecord.models.#{model_name}", :default => model_name)
23
+ threads << Thread.new do
24
+ Thread.pass
25
+ registered_t_name = I18n.t("activerecord.models.#{model_name}", :default => model_name, :locale => locale_name)
22
26
 
23
- model.class_eval <<-END
24
- def self.english_name
25
- "#{model_name}"
26
- end
27
+ model.class_eval <<-END
28
+ def self.english_name
29
+ "#{model_name}"
30
+ end
27
31
 
28
- def self.translated_name
29
- "#{registered_t_name != model_name ? registered_t_name : self.translator.translate(model_name)}"
30
- end
31
- END
32
- model.content_columns.each do |col|
33
- next if %w[created_at updated_at].include? col.name
34
- registered_t_name = I18n.t("activerecord.attributes.#{model_name}.#{col.name}", :default => col.name)
35
- col.class_eval <<-END
36
- def translated_name
37
- "#{registered_t_name != col.name ? registered_t_name : self.translator.translate(col.name)}"
38
- end
39
- END
32
+ def self.translated_name
33
+ "#{registered_t_name != model_name ? registered_t_name : self.translator.translate(model_name)}"
34
+ end
35
+ END
36
+ model.content_columns.each do |col|
37
+ next if %w[created_at updated_at].include? col.name
38
+ registered_t_name = I18n.t("activerecord.attributes.#{model_name}.#{col.name}", :default => col.name, :locale => locale_name)
39
+ col.class_eval <<-END
40
+ def translated_name
41
+ "#{registered_t_name != col.name ? registered_t_name : self.translator.translate(col.name)}"
42
+ end
43
+ END
44
+ end
40
45
  end
41
46
  model
42
47
  end.compact
48
+ threads.each {|t| t.join}
49
+ logger.debug "took #{Time.now - now} secs to translate #{models.count} models."
43
50
  # pick all translated keywords from view files
44
51
  I18n.backend = RecordingBackend.new
45
52
 
@@ -49,7 +56,10 @@ END
49
56
  keys_in_view = I18n.backend.keys
50
57
  keys_in_view -= models.map {|m| m.english_name.to_sym}
51
58
  keys_in_view -= models.inject([]) {|a, m| a + m.content_columns.map {|c| "#{m.english_name}.#{c.name}".to_sym}}
52
- generate_yaml(locale_name, models, keys_in_view.inject({}) {|h, k| h[k] = translator.translate(k); h})
59
+ now = Time.now
60
+ translated_hash = translate_all keys_in_view
61
+ logger.debug "took #{Time.now - now} secs to translate #{keys_in_view.count} words."
62
+ generate_yaml(locale_name, models, translated_hash)
53
63
  end
54
64
 
55
65
  private
@@ -62,6 +72,20 @@ END
62
72
  def generate_yaml(locale_name, models, translations)
63
73
  template 'i18n:translation.yml', "config/locales/translation_#{locale_name}.yml", :assigns => {:locale_name => locale_name, :models => models, :translations => translations}
64
74
  end
75
+
76
+ # receives an array of keys and returns :key => :translation hash
77
+ def translate_all(keys)
78
+ threads = []
79
+ ret = keys.inject({}) do |hash, key|
80
+ threads << Thread.new do
81
+ Thread.pass
82
+ hash[key] = translator.translate key
83
+ end
84
+ hash
85
+ end
86
+ threads.each {|t| t.join}
87
+ ret
88
+ end
65
89
  end
66
90
  end
67
91
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amatsuda-i18n_generators
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-07 00:00:00 -08:00
12
+ date: 2008-12-08 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency