Traduire 0.0.1
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.
- data/bin/traduire.rb +3 -0
- data/bin/traduire/en_to_enx2_translation.rb +5 -0
- data/bin/traduire/en_to_es_translation.rb +5 -0
- data/bin/traduire/en_to_fr_translation.rb +5 -0
- data/bin/traduire/google_translation.rb +28 -0
- data/bin/traduire/translation.rb +52 -0
- data/bin/translate.rake +34 -0
- metadata +70 -0
data/bin/traduire.rb
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'cgi'
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
class GoogleTranslation
|
|
6
|
+
def translate(str)
|
|
7
|
+
base = 'http://ajax.googleapis.com/ajax/services/language/translate'
|
|
8
|
+
|
|
9
|
+
params = {
|
|
10
|
+
:langpair => @translation,
|
|
11
|
+
:q => str,
|
|
12
|
+
:v => 1.0
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
query = params.map{|k,v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
|
|
16
|
+
|
|
17
|
+
response = Net::HTTP.get_response(URI.parse("#{base}?#{query}"))
|
|
18
|
+
|
|
19
|
+
json = JSON.parse(response.body)
|
|
20
|
+
|
|
21
|
+
if json['responseStatus'] == 200
|
|
22
|
+
translation = json['responseData']['translatedText']
|
|
23
|
+
return translation
|
|
24
|
+
else
|
|
25
|
+
raise StandardError, response['responseDetails']
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Traduire
|
|
2
|
+
def self.translation(&block)
|
|
3
|
+
translation = Translation.new
|
|
4
|
+
translation.instance_eval(&block)
|
|
5
|
+
return translation.result
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Translation
|
|
9
|
+
attr_accessor :result
|
|
10
|
+
|
|
11
|
+
def from(language)
|
|
12
|
+
@from_language = language
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def to(language)
|
|
16
|
+
@to_language = language
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def translate(from_locale)
|
|
20
|
+
@result = {}
|
|
21
|
+
@result[@to_language] = {}
|
|
22
|
+
|
|
23
|
+
translator = load_translator
|
|
24
|
+
|
|
25
|
+
walk = lambda do |key, value|
|
|
26
|
+
case value
|
|
27
|
+
when String then
|
|
28
|
+
translation = translator.translate value
|
|
29
|
+
return translation
|
|
30
|
+
when Hash then
|
|
31
|
+
hash = {}
|
|
32
|
+
value.each do |k, v|
|
|
33
|
+
hash[k] = walk.call(k, v)
|
|
34
|
+
end
|
|
35
|
+
return hash
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
from_locale[@from_language].each do |key, value|
|
|
39
|
+
@result[@to_language][key] = walk.call(key, value)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def load_translator
|
|
44
|
+
class_constant = Traduire.const_get(translator_name)
|
|
45
|
+
return class_constant.new
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def translator_name
|
|
49
|
+
@from_language.camelize + "To" + @to_language.camelize + "Translation"
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
data/bin/translate.rake
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'traduire'
|
|
2
|
+
|
|
3
|
+
task :default => [:translate]
|
|
4
|
+
|
|
5
|
+
task :translate, [:from_language, :to_language] => [:environment] do |t, args|
|
|
6
|
+
args.with_defaults(:from_language => 'en', :to_language => 'enx2')
|
|
7
|
+
puts "Translating from #{args.from_language} to #{args.to_language}"
|
|
8
|
+
|
|
9
|
+
file_names = Rails::Application.config.i18n.load_path
|
|
10
|
+
|
|
11
|
+
file_names.each do |file_name|
|
|
12
|
+
if (file_name.include? (args.from_language + '.yml'))
|
|
13
|
+
source_yaml = YAML::load(File.open(file_name))
|
|
14
|
+
|
|
15
|
+
translation = Traduire.translation do
|
|
16
|
+
from args.from_language
|
|
17
|
+
to args.to_language
|
|
18
|
+
translate source_yaml
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
translated_yaml = translation.to_yaml
|
|
22
|
+
|
|
23
|
+
translation_file_name = file_name.gsub(args.from_language + '.yml', args.to_language + '.yml')
|
|
24
|
+
|
|
25
|
+
if (File.exists? translation_file_name)
|
|
26
|
+
File.delete translation_file_name
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
File.open(translation_file_name, 'w') do |f|
|
|
30
|
+
f.puts translated_yaml
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: Traduire
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease: false
|
|
5
|
+
segments:
|
|
6
|
+
- 0
|
|
7
|
+
- 0
|
|
8
|
+
- 1
|
|
9
|
+
version: 0.0.1
|
|
10
|
+
platform: ruby
|
|
11
|
+
authors:
|
|
12
|
+
- Brian Hazzard
|
|
13
|
+
autorequire: name
|
|
14
|
+
bindir: bin
|
|
15
|
+
cert_chain: []
|
|
16
|
+
|
|
17
|
+
date: 2010-06-14 00:00:00 -04:00
|
|
18
|
+
default_executable:
|
|
19
|
+
dependencies: []
|
|
20
|
+
|
|
21
|
+
description:
|
|
22
|
+
email:
|
|
23
|
+
executables: []
|
|
24
|
+
|
|
25
|
+
extensions: []
|
|
26
|
+
|
|
27
|
+
extra_rdoc_files: []
|
|
28
|
+
|
|
29
|
+
files:
|
|
30
|
+
- bin/traduire/google_translation.rb
|
|
31
|
+
- bin/traduire/en_to_enx2_translation.rb
|
|
32
|
+
- bin/traduire/en_to_fr_translation.rb
|
|
33
|
+
- bin/traduire/translation.rb
|
|
34
|
+
- bin/traduire/en_to_es_translation.rb
|
|
35
|
+
- bin/translate.rake
|
|
36
|
+
- bin/traduire.rb
|
|
37
|
+
has_rdoc: true
|
|
38
|
+
homepage:
|
|
39
|
+
licenses: []
|
|
40
|
+
|
|
41
|
+
post_install_message:
|
|
42
|
+
rdoc_options: []
|
|
43
|
+
|
|
44
|
+
require_paths:
|
|
45
|
+
- lib
|
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
47
|
+
none: false
|
|
48
|
+
requirements:
|
|
49
|
+
- - ">="
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
segments:
|
|
52
|
+
- 0
|
|
53
|
+
version: "0"
|
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
|
+
none: false
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
segments:
|
|
60
|
+
- 0
|
|
61
|
+
version: "0"
|
|
62
|
+
requirements: []
|
|
63
|
+
|
|
64
|
+
rubyforge_project:
|
|
65
|
+
rubygems_version: 1.3.7
|
|
66
|
+
signing_key:
|
|
67
|
+
specification_version: 3
|
|
68
|
+
summary: Translates locale yaml files
|
|
69
|
+
test_files: []
|
|
70
|
+
|