amatsuda-i18n_generators 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.
@@ -4,7 +4,7 @@ require 'rubygems'
4
4
  require 'gettext'
5
5
 
6
6
  class I18nGenerator < Rails::Generator::NamedBase
7
- attr_reader :locale_name, :cldr, :generate_models_only, :generate_locales_only
7
+ attr_reader :locale_name, :cldr, :translator, :generate_models_only, :generate_locales_only
8
8
 
9
9
  def initialize(runtime_args, runtime_options = {})
10
10
  super
@@ -16,7 +16,13 @@ class I18nGenerator < Rails::Generator::NamedBase
16
16
  GetText.bindtextdomain 'rails'
17
17
  GetText.locale = @locale_name
18
18
 
19
- @cldr = CldrDocument.new @locale_name
19
+ unless self.generate_models_only
20
+ @cldr = CldrDocument.new @locale_name
21
+ end
22
+ unless self.generate_locales_only
23
+ lang = @locale_name.sub(/-.*$/, '')
24
+ @translator = Translator.new lang
25
+ end
20
26
  end
21
27
 
22
28
  def manifest
@@ -2,8 +2,8 @@ require File.join(File.dirname(__FILE__), '../i18n/i18n_generator')
2
2
 
3
3
  class I18nLocalesGenerator < I18nGenerator
4
4
  def initialize(runtime_args, runtime_options = {})
5
- super
6
5
  @generate_locales_only = true
6
+ super
7
7
  end
8
8
  end
9
9
 
@@ -7,13 +7,15 @@ module I18nGenerator::Generator
7
7
  module Commands #:nodoc:
8
8
  module Create
9
9
  def models_yaml
10
- models = Dir.chdir("#{RAILS_ROOT}/app/models/") do
11
- Dir["**/*.rb"].map {|m| m.sub(/\.rb$/, '').capitalize.constantize}
12
- end
13
10
  I18n.locale = locale_name
14
- lang = locale_name.sub(/-.*$/, '')
15
- models.each do |model|
16
- model_name = model.class_name.underscore
11
+ models = model_filenames.map do |model_name|
12
+ model = begin
13
+ m = model_name.capitalize.constantize
14
+ next unless m.ancestors.include? ActiveRecord::Base
15
+ m
16
+ rescue
17
+ next
18
+ end
17
19
  registered_t_name = I18n.t("activerecord.models.#{model_name}", :default => model_name)
18
20
 
19
21
  model.class_eval <<-END
@@ -22,7 +24,7 @@ module I18nGenerator::Generator
22
24
  end
23
25
 
24
26
  def self.translated_name
25
- "#{registered_t_name != model_name ? registered_t_name : Translator.translate(model_name, lang)}"
27
+ "#{registered_t_name != model_name ? registered_t_name : self.translator.translate(model_name)}"
26
28
  end
27
29
  END
28
30
  model.content_columns.each do |col|
@@ -30,15 +32,22 @@ END
30
32
  registered_t_name = I18n.t("activerecord.attributes.#{model_name}.#{col.name}", :default => col.name)
31
33
  col.class_eval <<-END
32
34
  def translated_name
33
- "#{registered_t_name != col.name ? registered_t_name : Translator.translate(col.name, lang)}"
35
+ "#{registered_t_name != col.name ? registered_t_name : self.translator.translate(col.name)}"
34
36
  end
35
37
  END
36
38
  end
37
- end
39
+ model
40
+ end.compact
38
41
  generate_yaml(locale_name, models)
39
42
  end
40
43
 
41
44
  private
45
+ def model_filenames
46
+ Dir.chdir("#{RAILS_ROOT}/app/models/") do
47
+ Dir["**/*.rb"].map {|m| m.sub(/\.rb$/, '')}
48
+ end
49
+ end
50
+
42
51
  def generate_yaml(locale_name, models)
43
52
  template 'i18n:models.yml', "lib/locale/models_#{locale_name}.yml", :assigns => {:locale_name => locale_name, :models => models}
44
53
  end
@@ -2,8 +2,8 @@ require File.join(File.dirname(__FILE__), '../i18n/i18n_generator')
2
2
 
3
3
  class I18nModelsGenerator < I18nGenerator
4
4
  def initialize(runtime_args, runtime_options = {})
5
- super
6
5
  @generate_models_only = true
6
+ super
7
7
  end
8
8
  end
9
9
 
@@ -2,17 +2,19 @@ require 'open-uri'
2
2
 
3
3
  module I18nModelsGeneratorModule
4
4
  class Translator
5
- #TODO
6
- def self.translatable?(lang)
5
+ def initialize(lang)
6
+ @lang, @cache = lang, {}
7
7
  end
8
8
 
9
- def self.translate(word, lang)
9
+ def translate(word)
10
+ return @cache[word] if @cache[word]
10
11
  begin
11
- json = OpenURI.open_uri("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=#{word}&langpair=en%7C#{lang}").read
12
+ w = CGI.escape ActiveSupport::Inflector.humanize(word)
13
+ json = OpenURI.open_uri("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=#{w}&langpair=en%7C#{@lang}").read
12
14
  result = ActiveSupport::JSON.decode(json)
13
- return result['responseData']['translatedText'] if result['responseStatus'] == 200
14
- rescue e
15
- puts %Q[failed to translate "#{word}" into "#{lang}" language.]
15
+ return @cache[word] = result['responseData']['translatedText'] if result['responseStatus'] == 200
16
+ rescue => e
17
+ puts %Q[failed to translate "#{word}" into "#{@lang}" language.]
16
18
  word
17
19
  end
18
20
  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.0.5
4
+ version: 0.0.6
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-11-15 00:00:00 -08:00
12
+ date: 2008-11-16 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency