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
|
-
|
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
|
@@ -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
|
-
|
15
|
-
|
16
|
-
|
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 :
|
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 :
|
35
|
+
"#{registered_t_name != col.name ? registered_t_name : self.translator.translate(col.name)}"
|
34
36
|
end
|
35
37
|
END
|
36
38
|
end
|
37
|
-
|
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,17 +2,19 @@ require 'open-uri'
|
|
2
2
|
|
3
3
|
module I18nModelsGeneratorModule
|
4
4
|
class Translator
|
5
|
-
|
6
|
-
|
5
|
+
def initialize(lang)
|
6
|
+
@lang, @cache = lang, {}
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
9
|
+
def translate(word)
|
10
|
+
return @cache[word] if @cache[word]
|
10
11
|
begin
|
11
|
-
|
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.
|
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-
|
12
|
+
date: 2008-11-16 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|