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 ADDED
@@ -0,0 +1,3 @@
1
+ Dir[File.dirname(__FILE__) + '/traduire/*.rb'].each do |file|
2
+ load file
3
+ end
@@ -0,0 +1,5 @@
1
+ class EnToEnx2Translation
2
+ def translate(str)
3
+ return str + " " + str
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class EnToEsTranslation < GoogleTranslation
2
+ def initialize
3
+ @translation = "en|es"
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class EnToFrTranslation < GoogleTranslation
2
+ def initialize
3
+ @translation = "en|fr"
4
+ end
5
+ end
@@ -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
@@ -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
+