amatsuda-i18n_generators 0.0.8 → 0.1.0

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.
@@ -30,15 +30,28 @@ class I18nGenerator < Rails::Generator::NamedBase
30
30
  m.directory 'config/locales'
31
31
  unless self.generate_models_only
32
32
  m.generate_configuration
33
- m.active_support_yaml
34
- m.active_record_yaml
35
- m.action_view_yaml
33
+ if defined_in_rails_i18n_repository?
34
+ m.fetch_from_rails_i18n_repository
35
+ else
36
+ m.active_support_yaml
37
+ m.active_record_yaml
38
+ m.action_view_yaml
39
+ end
36
40
  end
37
41
  unless self.generate_locales_only
38
42
  m.models_yaml
39
43
  end
40
44
  end
41
45
  end
46
+
47
+ private
48
+ def defined_in_rails_i18n_repository?
49
+ begin
50
+ OpenURI.open_uri("http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/#{locale_name}.yml").status == %w[200 OK]
51
+ rescue
52
+ false
53
+ end
54
+ end
42
55
  end
43
56
 
44
57
  require File.join(File.dirname(__FILE__), '../i18n_locales/i18n_locales_command')
@@ -10,14 +10,22 @@ module I18nGenerator::Generator
10
10
  module Commands #:nodoc:
11
11
  module Create
12
12
  def generate_configuration
13
- if Rails.configuration.respond_to? :i18n # Edge
13
+ return if I18n.default_locale == locale_name
14
+ if Rails.configuration.respond_to? :i18n # >= 2.2.2
14
15
  # edit environment.rb file
15
16
  environment = add_locale_config File.read(File.join(Rails.root, 'config/environment.rb'))
16
17
  File.open File.join(Rails.root, 'config/environment.rb'), 'w' do |f|
17
18
  f.puts environment
18
19
  end
20
+ puts " update config/environment.rb"
19
21
  else
20
- m.template 'i18n:i18n_config.rb', 'config/initializers/i18n_config.rb', :assigns => {:locale_name => locale_name}
22
+ template 'i18n:i18n_config.rb', 'config/initializers/i18n_config.rb', :assigns => {:locale_name => locale_name}
23
+ end
24
+ end
25
+
26
+ def fetch_from_rails_i18n_repository
27
+ file('i18n:base.yml', "config/locales/#{locale_name}.yml") do |f|
28
+ OpenURI.open_uri("http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/#{locale_name}.yml?raw=true").read
21
29
  end
22
30
  end
23
31
 
@@ -10,7 +10,7 @@ module I18nGenerator::Generator
10
10
  I18n.locale = locale_name
11
11
  models = model_filenames.map do |model_name|
12
12
  model = begin
13
- m = model_name.capitalize.constantize
13
+ m = model_name.camelize.constantize
14
14
  next unless m.ancestors.include? ActiveRecord::Base
15
15
  m
16
16
  rescue
@@ -12,7 +12,7 @@ module I18nModelsGeneratorModule
12
12
  w = CGI.escape ActiveSupport::Inflector.humanize(word)
13
13
  json = OpenURI.open_uri("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=#{w}&langpair=en%7C#{@lang}").read
14
14
  result = ActiveSupport::JSON.decode(json)
15
- return @cache[word] = result['responseData']['translatedText'] if result['responseStatus'] == 200
15
+ result['responseStatus'] == 200 ? (@cache[word] = result['responseData']['translatedText']) : word
16
16
  rescue => e
17
17
  puts %Q[failed to translate "#{word}" into "#{@lang}" language.]
18
18
  word
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), '/../generators/i18n_locales/i18n_locales_command')
2
+
3
+ describe I18nGenerator::Generator::Commands::Create do
4
+ before do
5
+ (@command = Object.new).extend I18nGenerator::Generator::Commands::Create
6
+ @command.stub!(:locale_name).and_return('ja')
7
+ end
8
+
9
+ describe 'add_locale_config' do
10
+ describe 'when i18n.default_locale is configured in environment.rb' do
11
+ before do
12
+ @config = "
13
+ Rails::Initializer.run do |config|
14
+ config.i18n.default_locale = :de
15
+ end"
16
+ end
17
+
18
+ it 'rewrites the existing default_locale to locale_name value' do
19
+ @command.send(:add_locale_config, @config).should == "
20
+ Rails::Initializer.run do |config|
21
+ config.i18n.default_locale = 'ja'
22
+ end"
23
+ end
24
+ end
25
+
26
+ describe 'when i18n.default_locale config is commented in environment.rb' do
27
+ before do
28
+ @config = "
29
+ Rails::Initializer.run do |config|
30
+ # config.i18n.default_locale = :de
31
+ end"
32
+ end
33
+
34
+ it 'uncomments the existing commented i18n config and sets locale_name value' do
35
+ @command.send(:add_locale_config, @config).should == "
36
+ Rails::Initializer.run do |config|
37
+ config.i18n.default_locale = 'ja'
38
+ end"
39
+ end
40
+ end
41
+
42
+ describe 'when i18n.default_locale is not written in environment.rb' do
43
+ before do
44
+ @config = "
45
+ Rails::Initializer.run do |config|
46
+ something goes here.
47
+ bla bla bla...
48
+ end"
49
+ end
50
+
51
+ it 'adds the default_locale config inside the config block and sets locale_name value' do
52
+ @command.send(:add_locale_config, @config).should == "
53
+ Rails::Initializer.run do |config|
54
+ something goes here.
55
+ bla bla bla...
56
+ config.i18n.default_locale = 'ja'
57
+ end"
58
+ end
59
+ end
60
+ end
61
+ end
62
+
@@ -0,0 +1,44 @@
1
+ $KCODE = 'U'
2
+
3
+ require File.join(File.dirname(__FILE__), '../generators/i18n_models/lib/translator')
4
+ include I18nModelsGeneratorModule
5
+
6
+ describe Translator do
7
+ before(:each) do
8
+ @translator = Translator.new 'ja'
9
+ end
10
+
11
+ describe 'when successfully translated' do
12
+ before do
13
+ res_200 = mock('res_200')
14
+ res_200.stub!(:read).and_return('{"responseData": {"translatedText":"こんにちは"}, "responseDetails": null, "responseStatus": 200}')
15
+ end
16
+
17
+ it 'returns translated text' do
18
+ @translator.translate('hello').should == 'こんにちは'
19
+ end
20
+ end
21
+
22
+ describe 'when translation failed with error code' do
23
+ before do
24
+ res_500 = mock('res_500')
25
+ res_500.stub!(:read).and_return('{"responseData": {"translatedText":"こんにちは?"}, "responseDetails": null, "responseStatus": 500}')
26
+ OpenURI.stub!(:open_uri).and_return(res_500)
27
+ end
28
+
29
+ it 'returns the original text' do
30
+ @translator.translate('hello').should == 'hello'
31
+ end
32
+ end
33
+
34
+ describe 'when translation raised an error' do
35
+ before do
36
+ OpenURI.stub!(:open_uri).and_raise('ERROR!')
37
+ end
38
+
39
+ it 'returns the original text' do
40
+ @translator.translate('hello').should == 'hello'
41
+ end
42
+ end
43
+ end
44
+
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.8
4
+ version: 0.1.0
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-21 00:00:00 -08:00
12
+ date: 2008-11-26 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -50,6 +50,8 @@ files:
50
50
  - spec/cldr_spec.rb
51
51
  - spec/data/cldr/ja.html
52
52
  - spec/data/yml/active_record/en-US.yml
53
+ - spec/i18n_locales_command_spec.rb
54
+ - spec/translator_spec.rb
53
55
  - spec/yaml_spec.rb
54
56
  has_rdoc: false
55
57
  homepage: http://github.com/amatsuda/i18n_generators/