web_translate_it 1.4.2 → 1.4.3
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/README.md +5 -0
- data/history.md +6 -0
- data/lib/web_translate_it.rb +5 -2
- data/lib/web_translate_it/auto_fetch.rb +1 -1
- data/lib/web_translate_it/configuration.rb +26 -9
- data/lib/web_translate_it/tasks.rb +8 -19
- data/lib/web_translate_it/translation_file.rb +10 -15
- data/lib/web_translate_it/util.rb +7 -15
- data/version.yml +1 -1
- metadata +2 -2
data/README.md
CHANGED
|
@@ -7,6 +7,11 @@ This gem provides your app with:
|
|
|
7
7
|
* a set of 4 handy rake task to fetch your translations.
|
|
8
8
|
* a rack middleware to automatically fetch new translations from Web Translate It.
|
|
9
9
|
|
|
10
|
+
Examples
|
|
11
|
+
|
|
12
|
+
* See a [Rails 2.3 example app](http://github.com/AtelierConvivialite/rails_example_app) using it.
|
|
13
|
+
* All the necessary changes have been made in [this commit](http://github.com/AtelierConvivialite/rails_example_app/commit/d88e4aa62b061f215d1784d76c94cd8613efc9bb)
|
|
14
|
+
|
|
10
15
|
## First steps
|
|
11
16
|
|
|
12
17
|
* For each environment you want to use the gem, add to your config/environment/development.rb:
|
data/history.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## Version 1.4.3 / 2010-01-09
|
|
2
|
+
|
|
3
|
+
* Remove colour outputs as it increases code complexity and doesn't add any value.
|
|
4
|
+
* Rack middleware now write to the application’s log file instead of just puts-ing
|
|
5
|
+
* Better error messages for misconfigured projects
|
|
6
|
+
|
|
1
7
|
## Version 1.4.2 / 2010-01-07
|
|
2
8
|
|
|
3
9
|
* Bug fix for `rake trans:config` which was not installing the translation.yml file properly.
|
data/lib/web_translate_it.rb
CHANGED
|
@@ -8,7 +8,10 @@ module WebTranslateIt
|
|
|
8
8
|
config = Configuration.new
|
|
9
9
|
locale = I18n.locale.to_s
|
|
10
10
|
return if config.ignore_locales.include?(locale)
|
|
11
|
-
|
|
12
|
-
config.files.each
|
|
11
|
+
config.logger.debug { "Fetching #{locale} translations to Web Translate It" } if config.logger
|
|
12
|
+
config.files.each do |file|
|
|
13
|
+
response = file.fetch(locale)
|
|
14
|
+
config.logger { "Web Translate It response: #{response}" } if config.logger
|
|
15
|
+
end
|
|
13
16
|
end
|
|
14
17
|
end
|
|
@@ -2,27 +2,32 @@ module WebTranslateIt
|
|
|
2
2
|
class Configuration
|
|
3
3
|
require 'yaml'
|
|
4
4
|
require 'fileutils'
|
|
5
|
-
attr_accessor :api_key, :files, :ignore_locales
|
|
5
|
+
attr_accessor :api_key, :files, :ignore_locales, :logger
|
|
6
6
|
|
|
7
7
|
def initialize
|
|
8
8
|
file = File.join(RAILS_ROOT, 'config', 'translation.yml')
|
|
9
9
|
configuration = YAML.load_file(file)
|
|
10
|
+
self.logger = logger
|
|
10
11
|
self.api_key = configuration['api_key']
|
|
11
12
|
self.files = []
|
|
12
|
-
self.ignore_locales = configuration['ignore_locales'].to_a.map{ |
|
|
13
|
+
self.ignore_locales = configuration['ignore_locales'].to_a.map{ |locale| locale.to_s }
|
|
13
14
|
configuration['files'].each do |file_id, file_path|
|
|
14
15
|
self.files.push(TranslationFile.new(file_id, file_path, api_key))
|
|
15
16
|
end
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
def locales
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
WebTranslateIt::Util.http_connection do |http|
|
|
21
|
+
request = Net::HTTP::Get.new(api_url)
|
|
22
|
+
response = http.request(request)
|
|
23
|
+
if response.code.to_i >= 400 and response.code.to_i < 500
|
|
24
|
+
puts "----------------------------------------------------------------------"
|
|
25
|
+
puts "You API key seems to be misconfigured. It is currently “self.api_key”."
|
|
26
|
+
puts "Change it in RAILS_ROOT/configuration/translation.yml."
|
|
27
|
+
else
|
|
28
|
+
response.body.split
|
|
29
|
+
end
|
|
30
|
+
end
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
def self.create_config_file
|
|
@@ -32,5 +37,17 @@ module WebTranslateIt
|
|
|
32
37
|
FileUtils.copy File.join(File.dirname(__FILE__), '..', '..', 'examples', 'translation.yml'), config_file
|
|
33
38
|
end
|
|
34
39
|
end
|
|
40
|
+
|
|
41
|
+
def api_url
|
|
42
|
+
"/api/projects/#{api_key}/locales"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def logger
|
|
46
|
+
if defined?(Rails.logger)
|
|
47
|
+
Rails.logger
|
|
48
|
+
elsif defined?(RAILS_DEFAULT_LOGGER)
|
|
49
|
+
RAILS_DEFAULT_LOGGER
|
|
50
|
+
end
|
|
51
|
+
end
|
|
35
52
|
end
|
|
36
53
|
end
|
|
@@ -2,9 +2,9 @@ require File.join(File.dirname(__FILE__), '..', 'web_translate_it')
|
|
|
2
2
|
|
|
3
3
|
namespace :trans do
|
|
4
4
|
desc "Fetch translation files from Web Translate It"
|
|
5
|
-
task :fetch, :locale do |
|
|
5
|
+
task :fetch, :locale do |task, args|
|
|
6
6
|
welcome_message
|
|
7
|
-
|
|
7
|
+
puts "Fetching file for locale #{args.locale}…"
|
|
8
8
|
configuration = WebTranslateIt::Configuration.new
|
|
9
9
|
configuration.files.each do |file|
|
|
10
10
|
response_code = file.fetch(args.locale)
|
|
@@ -21,7 +21,7 @@ namespace :trans do
|
|
|
21
21
|
configuration.ignore_locales.each do |ignore|
|
|
22
22
|
locales.delete(ignore)
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
puts "Fetching all files for all locales…"
|
|
25
25
|
locales.each do |locale|
|
|
26
26
|
configuration.files.each do |file|
|
|
27
27
|
response_code = file.fetch(locale)
|
|
@@ -32,9 +32,9 @@ namespace :trans do
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
desc "Upload a translation file to Web Translate It"
|
|
35
|
-
task :upload, :locale do |
|
|
35
|
+
task :upload, :locale do |task, args|
|
|
36
36
|
welcome_message
|
|
37
|
-
|
|
37
|
+
puts "Uploading file for locale #{args.locale}…"
|
|
38
38
|
configuration = WebTranslateIt::Configuration.new
|
|
39
39
|
configuration.files.each do |file|
|
|
40
40
|
response_code = file.upload(args.locale)
|
|
@@ -50,24 +50,13 @@ namespace :trans do
|
|
|
50
50
|
|
|
51
51
|
def handle_response(file_path, response_code)
|
|
52
52
|
if response_code < 400
|
|
53
|
-
|
|
53
|
+
puts "#{file_path}: #{response_code}, OK"
|
|
54
54
|
else
|
|
55
|
-
|
|
55
|
+
puts "#{file_path}: #{response_code}, Problem!"
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def welcome_message
|
|
60
|
-
|
|
60
|
+
puts "Web Translate It v#{WebTranslateIt::Util.version}"
|
|
61
61
|
end
|
|
62
|
-
|
|
63
|
-
def colour_puts(text)
|
|
64
|
-
puts WebTranslateIt::Util.subs_colour(text)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
private
|
|
68
|
-
|
|
69
|
-
WELCOME_SCREEN = <<-EO_WELCOME
|
|
70
|
-
<banner>Web Translate It v#{WebTranslateIt::Util.version}</banner>
|
|
71
|
-
|
|
72
|
-
EO_WELCOME
|
|
73
62
|
end
|
|
@@ -13,19 +13,18 @@ module WebTranslateIt
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def fetch(locale, force = false)
|
|
16
|
-
http_connection do |http|
|
|
16
|
+
WebTranslateIt::Util.http_connection do |http|
|
|
17
17
|
request = Net::HTTP::Get.new(api_url(locale))
|
|
18
|
-
request.add_field('If-Modified-Since',
|
|
19
|
-
response
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
response_code
|
|
18
|
+
request.add_field('If-Modified-Since', last_modification(file_path)) if File.exist?(file_path) and !force
|
|
19
|
+
response = http.request(request)
|
|
20
|
+
File.open(file_path_for_locale(locale), 'w'){ |file| file << response.body } if response.code.to_i == 200 and !response.body == ''
|
|
21
|
+
response.code.to_i
|
|
23
22
|
end
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def upload(locale)
|
|
27
26
|
File.open(file_path_for_locale(locale)) do |file|
|
|
28
|
-
http_connection do |http|
|
|
27
|
+
WebTranslateIt::Util.http_connection do |http|
|
|
29
28
|
request = Net::HTTP::Put::Multipart.new(api_url(locale), "file" => UploadIO.new(file, "text/plain", file.path))
|
|
30
29
|
response = http.request(request)
|
|
31
30
|
response.code.to_i
|
|
@@ -38,15 +37,11 @@ module WebTranslateIt
|
|
|
38
37
|
end
|
|
39
38
|
|
|
40
39
|
protected
|
|
41
|
-
|
|
42
|
-
def http_connection
|
|
43
|
-
http = Net::HTTP.new('webtranslateit.com', 443)
|
|
44
|
-
http.use_ssl = true
|
|
45
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
46
|
-
http.read_timeout = 10
|
|
47
|
-
yield http
|
|
48
|
-
end
|
|
49
40
|
|
|
41
|
+
def last_modification(file_path)
|
|
42
|
+
File.mtime(File.new(file_path, 'r')).rfc2822
|
|
43
|
+
end
|
|
44
|
+
|
|
50
45
|
def api_url(locale)
|
|
51
46
|
"/api/projects/#{api_key}/files/#{self.id}/locales/#{locale}"
|
|
52
47
|
end
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
module WebTranslateIt
|
|
2
2
|
class Util
|
|
3
|
-
DEFAULT_TERMINAL_COLORS = "\e[0m\e[37m\e[40m"
|
|
4
|
-
MONOCHROME_OUTPUT = "\\1"
|
|
5
|
-
|
|
6
3
|
def self.version
|
|
7
4
|
hash = YAML.load_file File.join(File.dirname(__FILE__), '..', '..' '/version.yml')
|
|
8
5
|
[hash[:major], hash[:minor], hash[:patch]].join('.')
|
|
9
6
|
end
|
|
10
7
|
|
|
11
|
-
def self.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
data = data.gsub(%r{<b>(.*?)</b>}m, colourise_output? ? "\e[1m\\1#{DEFAULT_TERMINAL_COLORS}" : MONOCHROME_OUTPUT)
|
|
18
|
-
data.gsub!(%r{<red>(.*?)</red>}m, colourise_output? ? "\e[1m\e[31m\\1#{DEFAULT_TERMINAL_COLORS}" : MONOCHROME_OUTPUT)
|
|
19
|
-
data.gsub!(%r{<green>(.*?)</green>}m, colourise_output? ? "\e[1m\e[32m\\1#{DEFAULT_TERMINAL_COLORS}" : MONOCHROME_OUTPUT)
|
|
20
|
-
data.gsub!(%r{<yellow>(.*?)</yellow>}m, colourise_output? ? "\e[1m\e[33m\\1#{DEFAULT_TERMINAL_COLORS}" : MONOCHROME_OUTPUT)
|
|
21
|
-
data.gsub!(%r{<banner>(.*?)</banner>}m, colourise_output? ? "\e[33m\e[44m\e[1m\\1#{DEFAULT_TERMINAL_COLORS}" : MONOCHROME_OUTPUT)
|
|
22
|
-
data
|
|
8
|
+
def self.http_connection
|
|
9
|
+
http = Net::HTTP.new('webtranslateit.com', 443)
|
|
10
|
+
http.use_ssl = true
|
|
11
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
12
|
+
http.read_timeout = 10
|
|
13
|
+
yield http
|
|
23
14
|
end
|
|
15
|
+
|
|
24
16
|
end
|
|
25
17
|
end
|
data/version.yml
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: web_translate_it
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.4.
|
|
4
|
+
version: 1.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "\xC3\x89douard Bri\xC3\xA8re"
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2010-01-
|
|
12
|
+
date: 2010-01-09 00:00:00 +01:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|