bing_translate_yaml 0.0.24 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,90 @@
1
+ require 'net/http'
2
+ require 'rexml/document'
3
+
4
+ desc "Translate your YAML files using Bing."
5
+ task :translate => :environment do
6
+ @source_locale = ENV["source"]
7
+ @dest_locale = ENV["destination"]
8
+ @app_id = ENV["app_id"] || "TWwfmo09qPdsxVfnXUMCRHAyk2dGOaodKYVOvbyu3m5Y*"
9
+
10
+ puts "Translating..."
11
+
12
+ source_locale = ENV["source"]
13
+ dest_locale = ENV["destination"]
14
+
15
+ source_path = "#{Rails.root}/config/locales/#{@source_locale}.yml"
16
+ dest_path = "#{Rails.root}/config/locales/#{@dest_locale}.yml"
17
+
18
+ if File.exists?(source_path)
19
+ source_yaml = YAML::load(File.open(source_path))
20
+ source = source_yaml ? source_yaml[source_locale] || {} : {}
21
+ else
22
+ source = {}
23
+ end
24
+
25
+ if File.exists?(dest_path)
26
+ dest_yaml = YAML::load(File.open(dest_path))
27
+ dest = dest_yaml ? dest_yaml[dest_locale] || {} : {}
28
+ else
29
+ dest = {}
30
+ end
31
+
32
+ source = source_yaml ? source_yaml[source_locale] || {} : {}
33
+ dest = dest_yaml ? dest_yaml[dest_locale] || {} : {}
34
+
35
+ translated = translate_hash(source)
36
+
37
+ out = { dest_locale => translated.deep_merge(dest) }
38
+
39
+ File.open(dest_path, 'w') {|f| YAML.dump(out, f) }
40
+
41
+ puts "Done!"
42
+ end
43
+
44
+ def translate_hash(yaml)
45
+ dest = yaml.dup
46
+
47
+ yaml.keys.each do |key|
48
+ source = yaml[key]
49
+
50
+ if source.is_a?(String)
51
+ translated = translate_string(source)
52
+ elsif source.is_a?(Hash)
53
+ translated = translate_hash(source)
54
+ elsif source.is_a?(Array)
55
+ translated = translate_array(source)
56
+ else
57
+ translated = ""
58
+ end
59
+
60
+ dest[key] = translated
61
+ end
62
+
63
+ dest
64
+ end
65
+
66
+ def translate_array(array)
67
+ out = []
68
+ array.each do |source|
69
+ if source.is_a?(Symbol)
70
+ out << source
71
+ else
72
+ out << translate_string(source)
73
+ end
74
+ end
75
+ out
76
+ end
77
+
78
+ def translate_string(source)
79
+ return "" unless source
80
+
81
+ url = "http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=#{@app_id}&text=#{CGI::escape(source)}&from=#{@source_locale}&to=#{@dest_locale}"
82
+ xml = Net::HTTP.get_response(URI.parse(url)).body
83
+
84
+ doc = REXML::Document.new(xml)
85
+ dest = doc.elements["string"].text.html_safe.gsub("% {", "%{")
86
+
87
+ puts "#{source} => #{dest}"
88
+
89
+ dest
90
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bing_translate_yaml
3
3
  version: !ruby/object:Gem::Version
4
- hash: 47
4
+ hash: 45
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 24
10
- version: 0.0.24
9
+ - 25
10
+ version: 0.0.25
11
11
  platform: ruby
12
12
  authors:
13
13
  - Lasse Bunk
@@ -27,7 +27,7 @@ extensions: []
27
27
  extra_rdoc_files: []
28
28
 
29
29
  files:
30
- - lib/bing_translate_yaml.rb
30
+ - lib/tasks/translate_task.rake
31
31
  homepage: http://github.com/lassebunk/bing_translate_yaml
32
32
  licenses: []
33
33
 
@@ -1 +0,0 @@
1
- dasgdad