babelphish 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -6,6 +6,28 @@
6
6
 
7
7
  babelphish makes it simple to translate you yaml files into all the languages supported by Google Translate
8
8
 
9
+ == NOTE:
10
+
11
+ detect_language does not currently supported v2 of the Google API - Google doesn't provide the functionality. But you can easily switch between
12
+ API version by calling Babelphish.set_settings({"api_key"=>"PUT YOUR KEY HERE", "version"=>"v2"}) or Babelphish.set_settings({"api_key"=>"", "version"=>"v1"}).
13
+
14
+ == CONFIG:
15
+
16
+ babelphish now supports version 2 of the Google API. To enable the new version you will need to get an API key from Google:
17
+ https://code.google.com/apis/console/?pli=1#welcome
18
+
19
+ Once you have the key create a file in your home directory called .babelphish.yml
20
+ The contents should look like this:
21
+
22
+ api_key: THE KEY YOU GET FROM GOOGLE GOES HERE
23
+ version: v2
24
+
25
+ You can also set the values programmatically:
26
+
27
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v2"})
28
+
29
+ Google places a 100,000 character limit per day on each API key. Once you hit the limit Google will begin returning 403 errors.
30
+
9
31
  == USAGE:
10
32
 
11
33
  Translate the en.yml file into all supported languages:
@@ -146,7 +168,7 @@ VIETNAMESE = 'vi'
146
168
 
147
169
  (The MIT License)
148
170
 
149
- Copyright (c) 2009-2010 Justin Ball
171
+ Copyright (c) 2009-2011 Justin Ball
150
172
 
151
173
  Permission is hereby granted, free of charge, to any person obtaining
152
174
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -28,7 +28,7 @@ begin
28
28
  gem.email = "justinball@gmail.com"
29
29
  gem.homepage = "http://github.com/jbasdf/babelphish"
30
30
  gem.description = "Babelphish helps you make a quick translation of your application using Google Translate."
31
- gem.authors = ["Justin Ball"]
31
+ gem.authors = ["Justin Ball", "Michael Jenik"]
32
32
  gem.rubyforge_project = "babelphish"
33
33
  gem.add_dependency "ya2yaml"
34
34
  gem.add_dependency "json"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
data/babelphish.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{babelphish}
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Justin Ball"]
12
- s.date = %q{2011-01-12}
11
+ s.authors = ["Justin Ball", "Michael Jenik"]
12
+ s.date = %q{2011-03-15}
13
13
  s.default_executable = %q{babelphish}
14
14
  s.description = %q{Babelphish helps you make a quick translation of your application using Google Translate.}
15
15
  s.email = %q{justinball@gmail.com}
@@ -73,7 +73,7 @@ Gem::Specification.new do |s|
73
73
  s.homepage = %q{http://github.com/jbasdf/babelphish}
74
74
  s.require_paths = ["lib"]
75
75
  s.rubyforge_project = %q{babelphish}
76
- s.rubygems_version = %q{1.3.7}
76
+ s.rubygems_version = %q{1.6.0}
77
77
  s.summary = %q{Translate with Google like a fule => 'fool'}
78
78
  s.test_files = [
79
79
  "test/test_babelphish.rb",
@@ -83,7 +83,6 @@ Gem::Specification.new do |s|
83
83
  ]
84
84
 
85
85
  if s.respond_to? :specification_version then
86
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
87
86
  s.specification_version = 3
88
87
 
89
88
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -6,27 +6,67 @@ module Babelphish
6
6
  # from: http://ruby.geraldbauer.ca/google-translation-api.html
7
7
  # translate text from 'from' to 'to'
8
8
  def translate(text, to, from = 'en', tries = 0)
9
-
10
9
  return if to == from
11
- base = Babelphish::GOOGLE_AJAX_URL + 'translate'
12
- # assemble query params
13
- params = {
14
- :langpair => "#{from}|#{to}",
15
- :q => text,
16
- :v => 1.0
17
- }
18
- query = params.map{ |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
10
+ if text.is_a? Symbol
11
+ return text
12
+ end
13
+
14
+ if text.length > 1000 #actually the USI length limit is 2000
15
+ text_now = ""
16
+ text_rem = ""
17
+ text.split(".") do |text_chunk|
18
+ if text_now.length < 1000
19
+ text_now += (text_now.length == 0 ? "" : ".") + text_chunk
20
+ else
21
+ text_rem += (text_now.length == 0 ? "" : ".") + text_chunk
22
+ end
23
+ end
24
+ return translate(text_now, to, from) + "." + translate(text_rem, to, from)
25
+ end
26
+
27
+ base = Babelphish.google_ajax_url
28
+ if Babelphish.api_version == 'v2'
29
+ # assemble query params
30
+ params = {
31
+ :source => "#{from}",
32
+ :target => "#{to}",
33
+ :q => text,
34
+ :key => Babelphish.settings['api_key']
35
+ }
36
+ else
37
+ base << 'translate'
38
+ # assemble query params
39
+ params = {
40
+ :langpair => "#{from}|#{to}",
41
+ :source => "#{from}",
42
+ :target => "#{to}",
43
+ :q => text,
44
+ :v => 1.0
45
+ }
46
+ end
47
+
19
48
  # send get request
20
- response = Net::HTTP.get_response( URI.parse( "#{base}?#{query}" ) )
21
- json = JSON.parse( response.body )
22
- if json['responseStatus'] == 200
23
- json['responseData']['translatedText']
49
+ uri = URI.parse(base)
50
+ uri.query = params.map{ |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
51
+ http = Net::HTTP.new( uri.host, uri.port )
52
+ http.use_ssl = true if uri.scheme == "https" # enable SSL/TLS
53
+ response = nil
54
+
55
+ http.start {|http| response = http.request_get(uri.request_uri) }
56
+
57
+ if response.code == "200"
58
+ json = JSON.parse(response.body)
59
+ if Babelphish.api_version == 'v2'
60
+ json['data']['translations'][0]['translatedText']
61
+ else
62
+ json['responseData']['translatedText']
63
+ end
24
64
  else
25
65
  if tries <= Babelphish::MAX_RETRIES
26
66
  # Try again a few more times
27
67
  translate(text, to, from, tries+=1)
28
68
  else
29
- raise Exceptions::GoogleResponseError, "A problem occured while translating from #{from} to #{to}. #{json['responseDetails']}"
69
+ raise Exceptions::GoogleResponseError, "A problem occured while translating from #{from} to #{to}. #{response.body}"
30
70
  end
31
71
  end
32
72
  end
@@ -45,50 +85,59 @@ module Babelphish
45
85
  #
46
86
  def multiple_translate(text, tos, from = 'en', tries = 0)
47
87
  return {} if text.strip.empty? # Google doesn't like it when you send them an empty string
48
- base = Babelphish::GOOGLE_AJAX_URL + 'translate'
49
- # assemble query params
50
- params = {
51
- :q => text,
52
- :v => 1.0
53
- }
54
- query = params.map{ |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
55
-
56
- tos.each do |to|
57
- if !Babelphish::GoogleTranslate::LANGUAGES.include?(to)
58
- raise Exceptions::GoogleResponseError, "#{to} is not a valid Google Translate code. Please be sure language codes are one of: #{Babelphish::GoogleTranslate::LANGUAGES.join(',')}"
59
- end
60
- query << "&langpair=" + CGI.escape("#{from}|#{to}")
61
- end
62
88
 
63
- response = Net::HTTP.get_response( URI.parse( "#{base}?#{query}" ) )
64
- json = JSON.parse( response.body )
65
-
66
- if json['responseStatus'] == 200
89
+ if Babelphish.api_version == 'v2'
67
90
  results = {}
68
- json['responseData'].each_with_index do |data, index|
69
- if data['responseStatus'] == 200
70
- results[tos[index]] = data['responseData']['translatedText']
71
- else
72
- # retry the single translation
73
- translate(text, tos[index], from)
74
- end
91
+ tos.each do |to|
92
+ results[to] = translate( text, to, from )
75
93
  end
76
94
  results
77
95
  else
78
- if tries <= Babelphish::MAX_RETRIES
79
- # Try again a few more times
80
- multiple_translate(text, tos, from, tries+=1)
96
+ base = Babelphish.google_ajax_url + 'translate'
97
+ # assemble query params
98
+ params = {
99
+ :q => text,
100
+ :v => 1.0
101
+ }
102
+ query = params.map{ |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
103
+
104
+ tos.each do |to|
105
+ if !Babelphish::GoogleTranslate::LANGUAGES.include?(to)
106
+ raise Exceptions::GoogleResponseError, "#{to} is not a valid Google Translate code. Please be sure language codes are one of: #{Babelphish::GoogleTranslate::LANGUAGES.join(',')}"
107
+ end
108
+ query << "&langpair=" + CGI.escape("#{from}|#{to}")
109
+ end
110
+
111
+ response = Net::HTTP.get_response( URI.parse( "#{base}?#{query}" ) )
112
+ json = JSON.parse( response.body )
113
+
114
+ if json['responseStatus'] == 200
115
+ results = {}
116
+ if json['responseData'].is_a?(Array)
117
+ json['responseData'].each_with_index do |data, index|
118
+ results[tos[index]] = data['responseData']['translatedText']
119
+ end
120
+ else
121
+ results[tos[0]] = json['responseData']['translatedText']
122
+ end
123
+ results
81
124
  else
82
- raise Exceptions::GoogleResponseError, "A problem occured while translating. #{response} -- #{response.body} -- From: #{from} -- Text: #{text}"
125
+ if tries <= Babelphish::MAX_RETRIES
126
+ # Try again a few more times
127
+ multiple_translate(text, tos, from, tries+=1)
128
+ else
129
+ raise Exceptions::GoogleResponseError, "A problem occured while translating. #{response} -- #{response.body} -- From: #{from} -- Text: #{text}"
130
+ end
83
131
  end
84
132
  end
133
+
85
134
  end
86
135
 
87
136
  # Sends a string to google to attempt to detect the language.
88
137
  # Returns an array indicating success/fail and the resulting data from google in a hash:
89
138
  # {"language"=>"en", "confidence"=>0.08594032, "isReliable"=>false}
90
139
  def detect_language(text)
91
- request = Babelphish::GOOGLE_AJAX_URL + "detect?v=1.0&q=" + CGI.escape(text)
140
+ request = Babelphish.google_ajax_url + "detect?v=1.0&q=" + CGI.escape(text)
92
141
  # send get request
93
142
  response = Net::HTTP.get_response( URI.parse( request ) )
94
143
  json = JSON.parse( response.body )
@@ -101,4 +150,4 @@ module Babelphish
101
150
 
102
151
  end
103
152
  end
104
- end
153
+ end
@@ -44,20 +44,29 @@ module Babelphish
44
44
  end
45
45
 
46
46
  def translate_keys(translate_hash, to, from)
47
- translate_hash.each_key do |key|
48
- if translate_hash[key].is_a?(Hash)
49
- translate_keys(translate_hash[key], to, from)
50
- else
51
- if key == false
52
- puts "Key #{key} was evaluated as false. Check your yml file and be sure to escape values like no with 'no'. ie 'no': 'No'"
53
- elsif key == true
54
- puts "Key #{key} was evaluated as true. Check your yml file and be sure to escape values like yes with 'yes'. ie 'yes': 'Yes'"
55
- elsif !translate_hash[key].nil?
56
- add_substitutions(translate_hash[key])
57
- translate_hash[key] = Babelphish::Translator.translate(translate_hash[key], to, from)
58
- remove_substitutions(translate_hash[key])
47
+ if translate_hash.is_a?(String)
48
+ add_substitutions(translate_hash)
49
+ translate_hash = Babelphish::Translator.translate(translate_hash, to, from)
50
+ remove_substitutions(translate_hash)
51
+ elsif translate_hash.is_a?(Array)
52
+ translate_hash.map!{ |x| if !x.nil? then Babelphish::Translator.translate(x, to, from) else "" end }
53
+ elsif translate_hash.is_a?(Hash)
54
+ translate_hash.each_key do |key|
55
+ next if translate_hash[key].is_a?(Fixnum)
56
+ if translate_hash[key].is_a?(Hash) || translate_hash[key].is_a?(Array)
57
+ translate_keys(translate_hash[key], to, from)
59
58
  else
60
- puts "Key #{key} contains no data"
59
+ if key == false
60
+ puts "Key #{key} was evaluated as false. Check your yml file and be sure to escape values like no with 'no'. ie 'no': 'No'"
61
+ elsif key == true
62
+ puts "Key #{key} was evaluated as true. Check your yml file and be sure to escape values like yes with 'yes'. ie 'yes': 'Yes'"
63
+ elsif !translate_hash[key].nil?
64
+ add_substitutions(translate_hash[key])
65
+ translate_hash[key] = Babelphish::Translator.translate(translate_hash[key], to, from)
66
+ remove_substitutions(translate_hash[key])
67
+ else
68
+ puts "Key #{key} contains no data"
69
+ end
61
70
  end
62
71
  end
63
72
  end
@@ -139,4 +148,4 @@ module Babelphish
139
148
 
140
149
  end
141
150
  end
142
- end
151
+ end
data/lib/babelphish.rb CHANGED
@@ -4,7 +4,8 @@ $:.unshift(File.dirname(__FILE__)) unless
4
4
  require 'yaml'
5
5
  require 'cgi'
6
6
  require 'json'
7
- require 'net/http'
7
+ #require 'net/http'
8
+ require 'net/https'
8
9
 
9
10
  begin
10
11
  require 'jcode'
@@ -35,10 +36,35 @@ require File.dirname(__FILE__) + '/../lib/babelphish/html_translator'
35
36
  $KCODE = 'UTF8'
36
37
 
37
38
  module Babelphish
38
-
39
- GOOGLE_AJAX_URL = "http://ajax.googleapis.com/ajax/services/language/"
39
+
40
40
  MAX_RETRIES = 3
41
41
 
42
+ def self.google_ajax_url
43
+ if api_version == 'v2'
44
+ "https://www.googleapis.com/language/translate/v2"
45
+ else
46
+ "http://ajax.googleapis.com/ajax/services/language/"
47
+ end
48
+ end
49
+
50
+ def self.api_version
51
+ self.settings['version']
52
+ end
53
+
54
+ def self.settings
55
+ return @settings if @settings
56
+ babelphish_settings_file = File.join(File.expand_path("~"), ".babelphish.yml")
57
+ if File.exist?(babelphish_settings_file)
58
+ @settings = YAML.load_file(babelphish_settings_file)
59
+ else
60
+ @settings = {"api_key"=>"", "version"=>"v1"}
61
+ end
62
+ end
63
+
64
+ def self.set_settings(settings)
65
+ @settings = settings
66
+ end
67
+
42
68
  def self.load_tasks
43
69
  if File.exists?('Rakefile')
44
70
  load 'Rakefile'
@@ -49,4 +75,4 @@ module Babelphish
49
75
  end
50
76
  end
51
77
 
52
- end
78
+ end
@@ -3,12 +3,15 @@ require File.dirname(__FILE__) + '/test_helper.rb'
3
3
  class TestBabelphish < Test::Unit::TestCase
4
4
 
5
5
  def test_translate
6
+ Babelphish.set_settings(nil)
6
7
  translation = Babelphish::Translator.translate('hello', 'es', 'en')
7
- assert_equal '¡Hola', translation
8
+ assert_equal 'hola', translation
8
9
  end
9
10
 
10
11
  def test_run_each_language
11
- Babelphish::GoogleTranslate::LANGUAGES.each do |language|
12
+ Babelphish.set_settings(nil)
13
+ #Babelphish::GoogleTranslate::LANGUAGES.each do |language| # Running all languages is time consuming and probably pisses off google
14
+ ['es', 'fr'].each do |language|
12
15
  begin
13
16
  translation = Babelphish::Translator.translate('hello', language)
14
17
  rescue => ex
@@ -18,21 +21,65 @@ class TestBabelphish < Test::Unit::TestCase
18
21
  end
19
22
 
20
23
  def test_multiple_translate
21
- translations = Babelphish::Translator.multiple_translate('hello', Babelphish::GoogleTranslate::LANGUAGES, 'en')
22
- assert_equal '¡Hola', translations[Babelphish::GoogleTranslate::SPANISH]
24
+ Babelphish.set_settings(nil)
25
+ translations = Babelphish::Translator.multiple_translate('hello', [Babelphish::GoogleTranslate::SPANISH,
26
+ Babelphish::GoogleTranslate::GERMAN,
27
+ Babelphish::GoogleTranslate::ITALIAN,
28
+ Babelphish::GoogleTranslate::ROMANIAN,
29
+ Babelphish::GoogleTranslate::JAPANESE], 'en')
30
+ assert_equal 'hola', translations[Babelphish::GoogleTranslate::SPANISH]
23
31
  assert_equal 'hallo', translations[Babelphish::GoogleTranslate::GERMAN]
24
32
  assert_equal 'ciao', translations[Babelphish::GoogleTranslate::ITALIAN]
25
33
  assert_equal 'alo', translations[Babelphish::GoogleTranslate::ROMANIAN]
26
34
  assert_equal 'こんにちは', translations[Babelphish::GoogleTranslate::JAPANESE]
27
35
  end
28
36
 
29
- def test_detect_language
37
+ def test_supported_languages
38
+ Babelphish.set_settings(nil)
39
+ assert_equal Babelphish::Translator.supported_languages, Babelphish::GoogleTranslate::LANGUAGES
40
+ end
41
+
42
+ # run same tests with v1 of the api
43
+ def test_translate_v1
44
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
45
+ translation = Babelphish::Translator.translate('hello', 'es', 'en')
46
+ assert_equal 'hola', translation
47
+ end
48
+
49
+ def test_run_each_language_v1
50
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
51
+ ['es'].each do |language|
52
+ begin
53
+ translation = Babelphish::Translator.translate('hello', language)
54
+ rescue => ex
55
+ puts "There was a problem translating to #{language}: #{ex}"
56
+ end
57
+ end
58
+ end
59
+
60
+ def test_multiple_translate_v1
61
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
62
+ translations = Babelphish::Translator.multiple_translate('hello', [Babelphish::GoogleTranslate::SPANISH,
63
+ Babelphish::GoogleTranslate::GERMAN,
64
+ Babelphish::GoogleTranslate::ITALIAN,
65
+ Babelphish::GoogleTranslate::ROMANIAN,
66
+ Babelphish::GoogleTranslate::JAPANESE], 'en')
67
+ assert_equal 'hola', translations[Babelphish::GoogleTranslate::SPANISH]
68
+ assert_equal 'hallo', translations[Babelphish::GoogleTranslate::GERMAN]
69
+ assert_equal 'ciao', translations[Babelphish::GoogleTranslate::ITALIAN]
70
+ assert_equal 'alo', translations[Babelphish::GoogleTranslate::ROMANIAN]
71
+ assert_equal 'こんにちは', translations[Babelphish::GoogleTranslate::JAPANESE]
72
+ end
73
+
74
+ def test_detect_language_v1
75
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
30
76
  success, result = Babelphish::Translator.detect_language('hello world')
31
77
  assert success, "Failed to detect language"
32
78
  assert_equal Babelphish::GoogleTranslate::ENGLISH, result['language']
33
79
  end
34
80
 
35
- def test_supported_languages
81
+ def test_supported_languages_v1
82
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
36
83
  assert_equal Babelphish::Translator.supported_languages, Babelphish::GoogleTranslate::LANGUAGES
37
84
  end
38
85
 
@@ -6,8 +6,8 @@ class TestHtmlTranslator < Test::Unit::TestCase
6
6
  overwrite = true
7
7
  translate_from = 'en'
8
8
  directory = File.join(File.dirname(__FILE__), 'html_translations')
9
- Babelphish::HtmlTranslator.translate(directory, Babelphish::GoogleTranslate::LANGUAGES, translate_from, overwrite)
10
- Babelphish::GoogleTranslate::LANGUAGES.each do |to|
9
+ Babelphish::HtmlTranslator.translate(directory, ['es'], translate_from, overwrite)
10
+ ['es'].each do |to|
11
11
  if to != translate_from
12
12
  # This will make sure the file was created
13
13
  translated_html = File.join(File.dirname(__FILE__), 'html_translations', "test.#{to}.html.erb")
@@ -23,8 +23,8 @@ class TestHtmlTranslator < Test::Unit::TestCase
23
23
  overwrite = true
24
24
  translate_from = 'en'
25
25
  directory = File.join(File.dirname(__FILE__), 'html_translations')
26
- Babelphish::HtmlTranslator.translate(directory, Babelphish::GoogleTranslate::LANGUAGES, translate_from, overwrite)
27
- Babelphish::GoogleTranslate::LANGUAGES.each do |to|
26
+ Babelphish::HtmlTranslator.translate(directory, ['es'], translate_from, overwrite)
27
+ ['es'].each do |to|
28
28
  if to != translate_from
29
29
  # This will make sure the file was created
30
30
  translated_html = File.join(File.dirname(__FILE__), 'html_translations', "test.text.#{to}.html.erb")
@@ -40,8 +40,8 @@ class TestHtmlTranslator < Test::Unit::TestCase
40
40
  overwrite = true
41
41
  translate_from = 'en'
42
42
  directory = File.join(File.dirname(__FILE__), 'html_translations')
43
- Babelphish::HtmlTranslator.translate(directory, Babelphish::GoogleTranslate::LANGUAGES, translate_from, overwrite)
44
- Babelphish::GoogleTranslate::LANGUAGES.each do |to|
43
+ Babelphish::HtmlTranslator.translate(directory, ['es'], translate_from, overwrite)
44
+ ['es'].each do |to|
45
45
  if to != translate_from
46
46
  # This will make sure the file was created
47
47
  translated_html = File.join(File.dirname(__FILE__), 'html_translations', "test.text.#{to}.plain.erb")
@@ -3,6 +3,7 @@ require File.dirname(__FILE__) + '/test_helper.rb'
3
3
  class TestYmlTranslator < Test::Unit::TestCase
4
4
 
5
5
  def test_single_yml_translation
6
+ Babelphish.set_settings(nil) # Make sure the .babelphish.yml settings are used
6
7
  overwrite = true
7
8
  translate_to = 'es'
8
9
  yml = File.join(File.dirname(__FILE__), 'translations', 'en.yml')
@@ -12,14 +13,46 @@ class TestYmlTranslator < Test::Unit::TestCase
12
13
  assert translation['es']
13
14
  assert translation['es']['babelphish']
14
15
  assert_equal "Se trata de un nivel inferior", translation['es']['babelphish']['more']['test_more']
15
- assert_equal "Esto es una cadena de prueba", translation['es']['babelphish']['test']
16
- assert_equal "Esta es una cadena con incrustación {{insert}}", translation['es']['babelphish']['test_embedded']
16
+ assert_equal "Esta es una cadena de prueba", translation['es']['babelphish']['test']
17
+ assert_equal "Esto es una cadena con incrustación {{insert}}", translation['es']['babelphish']['test_embedded']
17
18
  end
18
19
 
19
20
  def test_multiple_yml_translation
21
+ Babelphish.set_settings(nil) # Make sure the .babelphish.yml settings are used
20
22
  overwrite = true
21
23
  yml = File.join(File.dirname(__FILE__), 'translations', 'en.yml')
22
- tos = Babelphish::GoogleTranslate::LANGUAGES
24
+ tos = ['es']
25
+ Babelphish::YmlTranslator.translate(yml, overwrite, nil, tos)
26
+ tos.each do |to|
27
+ translated_yml = File.join(File.dirname(__FILE__), 'translations', "#{to}.yml")
28
+ translation = YAML.load_file(translated_yml)
29
+ assert translation[to]
30
+ assert translation[to]['babelphish']['test_embedded'].include?("{{insert}}")
31
+ end
32
+ end
33
+
34
+
35
+ # run same tests with v1 of the api
36
+ def test_single_yml_translation_v1
37
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
38
+ overwrite = true
39
+ translate_to = 'es'
40
+ yml = File.join(File.dirname(__FILE__), 'translations', 'en.yml')
41
+ Babelphish::YmlTranslator.translate(yml, overwrite, translate_to)
42
+ translated_yml = File.join(File.dirname(__FILE__), 'translations', "#{translate_to}.yml")
43
+ translation = YAML.load_file(translated_yml)
44
+ assert translation['es']
45
+ assert translation['es']['babelphish']
46
+ assert_equal "Se trata de un nivel inferior", translation['es']['babelphish']['more']['test_more']
47
+ assert_equal "Esta es una cadena de prueba", translation['es']['babelphish']['test']
48
+ assert_equal "Esto es una cadena con incrustación {{insert}}", translation['es']['babelphish']['test_embedded']
49
+ end
50
+
51
+ def test_multiple_yml_translation_v1
52
+ Babelphish.set_settings({"api_key"=>"", "version"=>"v1"})
53
+ overwrite = true
54
+ yml = File.join(File.dirname(__FILE__), 'translations', 'en.yml')
55
+ tos = ['es']
23
56
  Babelphish::YmlTranslator.translate(yml, overwrite, nil, tos)
24
57
  tos.each do |to|
25
58
  translated_yml = File.join(File.dirname(__FILE__), 'translations', "#{to}.yml")
metadata CHANGED
@@ -1,21 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: babelphish
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
4
+ hash: 15
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Ball
14
+ - Michael Jenik
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-01-12 00:00:00 -07:00
19
+ date: 2011-03-15 00:00:00 -06:00
19
20
  default_executable: babelphish
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
@@ -136,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
137
  requirements: []
137
138
 
138
139
  rubyforge_project: babelphish
139
- rubygems_version: 1.3.7
140
+ rubygems_version: 1.6.0
140
141
  signing_key:
141
142
  specification_version: 3
142
143
  summary: Translate with Google like a fule => 'fool'