web_translate_it 1.5.2 → 1.6.0

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 CHANGED
@@ -3,10 +3,10 @@
3
3
  [Homepage](https://webtranslateit.com) |
4
4
  [RDocs](http://yardoc.org/docs/AtelierConvivialite-webtranslateit) |
5
5
  [Metrics](http://getcaliper.com/caliper/project?repo=git%3A%2F%2Fgithub.com%2FAtelierConvivialite%2Fwebtranslateit.git) |
6
- [Tests](http://runcoderun.com/AtelierConvivialite/webtranslateit/builds/74a78c2b382cb1856fa0964ed4ad372b50872844/1/ruby_186) |
6
+ [Bugs](http://github.com/AtelierConvivialite/webtranslateit/issues) |
7
7
  [Example app](http://github.com/AtelierConvivialite/rails_example_app)
8
8
 
9
- This is a gem providing tools to integrate your software to translate with [Web Translate It](https://webtranslateit.com), a web-based translation hub.
9
+ This is a gem providing tools to sync your software’s language files with [Web Translate It](https://webtranslateit.com), a web-based computer-aided translation tool.
10
10
 
11
11
  ![Web Translate It](http://s3.amazonaws.com:80/edouard.baconfile.com/web_translate_it%2Fwti.png)
12
12
 
@@ -20,8 +20,8 @@ This gem provides your app with:
20
20
 
21
21
  gem install web_translate_it
22
22
 
23
- That’s it! At this point you have the Web Translate It executable.
24
- If your project if already set up on Web Translate It, run `wti autoconf` to generate the configuration file.
23
+ At this point you should have the `wti` executable working.
24
+ If your project if already set up on Web Translate It, open a terminal and type `wti autoconf` to generate the configuration file.
25
25
 
26
26
  Run `wti --help` to see the usage:
27
27
 
@@ -55,7 +55,7 @@ This gem includes some rake tasks and a rack middleware to integrate Web Transla
55
55
 
56
56
  `rake gems:install`
57
57
 
58
- * Copy/paste your api key from Web Translate It and run:
58
+ * Copy/paste your API key from Web Translate It and run:
59
59
 
60
60
  `script/generate webtranslateit --api-key your_key_here`
61
61
 
@@ -94,12 +94,12 @@ Please open a discussion on [our support site](http://help.webtranslateit.com) i
94
94
 
95
95
  # Acknowledgement
96
96
 
97
- * The executable is very much inspired from the awesome [Gemcutter](http://gemcutter.org/) commands,
98
- * The Rails generator has been pinched from [Hoptoad Notifier](http://github.com/thoughtbot/hoptoad_notifier/).
97
+ * The executable’s commands are very much inspired from [Gemcutter](http://gemcutter.org/),
98
+ * The Rails generator was pinched from [Hoptoad Notifier](http://github.com/thoughtbot/hoptoad_notifier/).
99
99
 
100
100
  # What is Web Translate It anyway?
101
101
 
102
- Web Translate It is a web-based translation hub to collaboratively translate software.
102
+ Web Translate It is a web-based translation tool to collaboratively translate software.
103
103
 
104
104
  To learn more about it, please visit our [tour page](https://webtranslateit.com/tour).
105
105
 
data/examples/locale.rb CHANGED
@@ -5,8 +5,8 @@ class Locale
5
5
 
6
6
  def call(env)
7
7
  req = Rack::Request.new(env)
8
- I18n.locale = req.params['locale']
8
+ I18n.locale = req.params['locale'] || :en
9
9
  status, headers, response = @app.call(env)
10
- [status, headers, response.body]
10
+ [status, headers, response]
11
11
  end
12
12
  end
@@ -1,18 +1,6 @@
1
1
  # The Project API Token from Web Translate It
2
2
  api_key: SECRET
3
3
 
4
- # The locales not to sync with Web Translate It.
5
- # Pass an array of string, or an array of symbols, a string or a symbol.
4
+ # Optional: locales not to sync with Web Translate It.
6
5
  # eg. [:en, :fr] or just 'en'
7
- ignore_locales: :en
8
-
9
- # A list of files to translate
10
- # You can name your language files as you want, as long as the locale name match the
11
- # locale name you set in Web Translate It, and that the different language files names are
12
- # differenciated by their locale name.
13
- # For example, if you set to translate a project in en_US in WTI, you should use the locale en_US in your app
14
- #
15
- # wti_id is the file id from Web Translate It.
16
- files:
17
- wti_id: config/locales/file1_[locale].yml
18
- wti_id: config/locales/file2_[locale].yml
6
+ # ignore_locales: :en
@@ -1,17 +1,6 @@
1
1
  # The Project API Token from Web Translate It
2
2
  api_key: '<%= api_key %>'
3
3
 
4
- # The locales not to sync with Web Translate It.
5
- # Pass an array of string, or an array of symbols, a string or a symbol.
4
+ # Optional: locales not to sync with Web Translate It.
6
5
  # eg. [:en, :fr] or just 'en'
7
- ignore_locales: '<%= project["source_locale"]["code"] %>'
8
-
9
- # A list of files to translate
10
- # You can name your language files as you want, as long as the locale name match the
11
- # locale name you set in Web Translate It, and that the different language files names are
12
- # differenciated by their locale name.
13
- # For example, if you set to translate a project in en_US in WTI, you should use the locale en_US in your app
14
- #
15
- # wti_id is the file id from Web Translate It.
16
- files:
17
- <% project["project_files"].each do |project_file| -%><% if project_file["master"] -%> <%= project_file["id"] %>: config/locales/<%= project_file["name"].gsub(project["source_locale"]["code"], "[locale]") %><% end %><% end -%>
6
+ # ignore_locales: '<%= project["source_locale"]["code"] %>'
data/history.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## Version 1.6.0 /2010-03-22
2
+
3
+ * Bug fix: Encoding problem with Ruby 1.9 (Romain Sempé)
4
+ * Bug fix: Make rake task create locale directory if it doesn’t exist yet. (Romain Sempé)
5
+ * Bug fix: Make the list of ignore locales work for wti pull (it won’t pull the locales you ignore)
6
+
7
+ * **Breaking update**: The project configuration changed and doesn’t include a list of master language files any longer.
8
+ This makes configuration much simpler. However you must configure the exact file path of your files in
9
+ the File Manager. This allows much more flexibility for the choice of your language file names. Ref #22.
10
+
1
11
  ## Version 1.5.2 /2010-03-13
2
12
 
3
13
  * Only added a man page.
@@ -6,14 +6,15 @@ require File.join(File.dirname(__FILE__), 'web_translate_it', 'command_line')
6
6
  require File.join(File.dirname(__FILE__), 'web_translate_it', 'project')
7
7
 
8
8
  module WebTranslateIt
9
+
9
10
  def self.fetch_translations
10
11
  config = Configuration.new
11
12
  locale = I18n.locale.to_s
12
13
  return if config.ignore_locales.include?(locale)
13
- config.logger.debug { "Fetching #{locale} translations to Web Translate It" } if config.logger
14
- config.files.each do |file|
15
- response = file.fetch(locale)
16
- config.logger { "Web Translate It response: #{response}" } if config.logger
14
+ config.logger.debug { "Fetching #{locale.upcase} language file(s) from Web Translate It" } if config.logger
15
+ config.files.find_all{ |file| file.locale == locale }.each do |file|
16
+ response = file.fetch
17
+ config.logger.debug { "Web Translate It response: #{response}" } if config.logger
17
18
  end
18
19
  end
19
20
  end
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  module WebTranslateIt
2
3
  class CommandLine
3
4
  require 'fileutils'
@@ -44,22 +45,20 @@ OPTION
44
45
 
45
46
  def self.pull
46
47
  configuration = fetch_configuration
47
- locales = fetch_locales_to_pull(configuration)
48
- configuration.files.each do |file|
49
- locales.each do |locale|
50
- puts "Pulling #{file.file_path_for_locale(locale)}…"
51
- file.fetch(locale, ARGV.index('--force'))
48
+ fetch_locales_to_pull(configuration).each do |locale|
49
+ configuration.files.find_all{ |file| file.locale == locale }.each do |file|
50
+ puts "Pulling #{file.file_path}…"
51
+ puts file.fetch(ARGV.index('--force'))
52
52
  end
53
53
  end
54
54
  end
55
55
 
56
56
  def self.push
57
57
  configuration = fetch_configuration
58
- locales = fetch_locales_to_push(configuration)
59
- configuration.files.each do |file|
60
- locales.each do |locale|
61
- puts "Pushing #{file.file_path_for_locale(locale)}…"
62
- file.upload(locale)
58
+ fetch_locales_to_push(configuration).each do |locale|
59
+ configuration.files.find_all{ |file| file.locale == locale }.each do |file|
60
+ puts "Pushing #{file.file_path}…"
61
+ puts file.upload
63
62
  end
64
63
  end
65
64
  end
@@ -76,11 +75,19 @@ OPTION
76
75
  path = STDIN.gets.strip
77
76
  path = "config/translation.yml" if path == ""
78
77
  FileUtils.mkpath(path.split('/')[0..path.split('/').size-1])
79
- puts "Where are you language files located? (Default: `config/locales/`)"
80
- path_to_locale_files = STDIN.gets.strip
81
- path_to_locale_files = "config/locales/" if path_to_locale_files == ""
82
- FileUtils.mkpath(path.split('/')[0..path.split('/').size-1])
83
- File.open(path, 'w'){ |file| file << generate_configuration(api_key, path_to_locale_files) }
78
+ project = YAML.load WebTranslateIt::Project.fetch_info(api_key)
79
+ project_info = project['project']
80
+ File.open(path, 'w'){ |file| file << generate_configuration(api_key, project_info) }
81
+ project_info['project_files'].each do |file|
82
+ if !File.exists?(file['name'])
83
+ puts "Could not find file `#{file['name']}`."
84
+ puts "Please check the correct full path is specified in the File Manager"
85
+ puts "https://webtranslateit.com/projects/#{project_info['id']}/files"
86
+ else
87
+ puts "Found #{file['name']}."
88
+ end
89
+ end
90
+ puts ""
84
91
  puts "Done! You can now use `wti` to push and pull your language files."
85
92
  puts "Check `wti --help` for more information."
86
93
  end
@@ -119,6 +126,7 @@ OPTION
119
126
  def self.fetch_locales_to_pull(configuration)
120
127
  if (index = ARGV.index('-l') || ARGV.index('--locale')).nil?
121
128
  locales = configuration.target_locales
129
+ configuration.ignore_locales.each{ |locale_to_delete| locales.delete(locale_to_delete) }
122
130
  else
123
131
  locales = [ARGV[index+1]]
124
132
  end
@@ -136,30 +144,14 @@ OPTION
136
144
  return locales.uniq
137
145
  end
138
146
 
139
- def self.generate_configuration(api_key, path_to_locale_files)
140
- project_info = YAML.load WebTranslateIt::Project.fetch_info(api_key)
141
- project = project_info['project']
147
+ def self.generate_configuration(api_key, project_info)
142
148
  file = <<-FILE
143
149
  api_key: #{api_key}
144
150
 
145
- # The locales not to sync with Web Translate It.
146
- # Pass an array of string, or an array of symbols, a string or a symbol.
151
+ # Optional: locales not to sync with Web Translate It.
147
152
  # eg. [:en, :fr] or just 'en'
148
- ignore_locales: '#{project["source_locale"]["code"]}'
149
-
150
- # A list of files to translate
151
- # You can name your language files as you want, as long as the locale name match the
152
- # locale name you set in Web Translate It, and that the different language files names are
153
- # differenciated by their locale name.
154
- # For example, if you set to translate a project in en_US in WTI, you should use the locale en_US in your app
155
- #
156
- files:
153
+ # ignore_locales: '#{project_info["source_locale"]["code"]}'
157
154
  FILE
158
- project["project_files"].each do |project_file|
159
- if project_file["master"]
160
- file << " #{project_file["id"]}: #{path_to_locale_files}" + project_file["name"].gsub(project["source_locale"]["code"], "[locale]") + "\n"
161
- end
162
- end
163
155
  return file
164
156
  end
165
157
  end
@@ -12,31 +12,44 @@ module WebTranslateIt
12
12
  attr_accessor :path, :api_key, :source_locale, :target_locales, :files, :ignore_locales, :logger
13
13
 
14
14
  # Load configuration file from the path.
15
- def initialize(root_path=RAILS_ROOT, path_to_config="config/translation.yml")
15
+ def initialize(root_path = Rails.root, path_to_config_file = "config/translation.yml")
16
16
  self.path = root_path
17
- configuration = YAML.load_file(File.join(root_path, path_to_config))
18
17
  self.logger = logger
18
+ configuration = YAML.load_file(File.join(self.path, path_to_config_file))
19
19
  self.api_key = configuration['api_key']
20
- self.files = []
21
- self.ignore_locales = configuration['ignore_locales'].to_a.map{ |locale| locale.to_s }
22
- configuration['files'].each do |file_id, file_path|
23
- self.files.push(TranslationFile.new(file_id, root_path + '/' + file_path, api_key))
24
- end
25
- set_locales
20
+ project_info = YAML.load WebTranslateIt::Project.fetch_info(api_key)
21
+ set_locales_to_ignore(configuration)
22
+ set_files(project_info['project'])
23
+ set_locales(project_info['project'])
26
24
  end
27
25
 
28
- # Makes an API request to fetch the list of the different locales for a project.
26
+ # Set the project locales from the Project API.
29
27
  # Implementation example:
30
28
  #
31
29
  # configuration = WebTranslateIt::Configuration.new
32
30
  # locales = configuration.locales # returns an array of locales: ['en', 'fr', 'es', ...]
33
- def set_locales
34
- project_info = YAML.load WebTranslateIt::Project.fetch_info(api_key)
35
- project = project_info['project']
31
+ def set_locales(project)
36
32
  self.source_locale = project['source_locale']['code']
37
33
  self.target_locales = project['target_locales'].map{|locale| locale['code']}
38
34
  end
39
35
 
36
+ # Set the project files from the Project API.
37
+ # Implementation example:
38
+ #
39
+ # configuration = WebTranslateIt::Configuration.new
40
+ # files = configuration.files # returns an array of TranslationFile
41
+ def set_files(project)
42
+ self.files = []
43
+ project['project_files'].each do |project_file|
44
+ self.files.push TranslationFile.new(project_file['id'], project_file['name'], project_file['locale_code'], self.api_key)
45
+ end
46
+ end
47
+
48
+ # Set locales to ignore from the configuration file, if set.
49
+ def set_locales_to_ignore(configuration)
50
+ self.ignore_locales = Array(configuration['ignore_locales']).map{ |locale| locale.to_s }
51
+ end
52
+
40
53
  # Convenience method which returns the endpoint for fetching a list of locales for a project.
41
54
  def api_url
42
55
  "/api/projects/#{api_key}.yaml"
@@ -4,34 +4,14 @@ module WebTranslateIt
4
4
  def self.fetch_info(api_key)
5
5
  WebTranslateIt::Util.http_connection do |http|
6
6
  request = Net::HTTP::Get.new("/api/projects/#{api_key}.yaml")
7
- response = http.request(request)
8
- if response.code.to_i >= 400 and response.code.to_i < 500
9
- puts "We had a problem connecting to Web Translate It with this API key."
10
- puts "Make sure it is correct."
11
- exit
12
- elsif response.code.to_i >= 500
13
- puts "Web Translate It is temporarily unavailable. Please try again shortly."
14
- exit
15
- else
16
- return response.body
17
- end
7
+ Util.handle_response(http.request(request), true)
18
8
  end
19
9
  end
20
10
 
21
11
  def self.fetch_stats(api_key)
22
12
  WebTranslateIt::Util.http_connection do |http|
23
13
  request = Net::HTTP::Get.new("/api/projects/#{api_key}/stats.yaml")
24
- response = http.request(request)
25
- if response.code.to_i >= 400 and response.code.to_i < 500
26
- puts "We had a problem connecting to Web Translate It with this API key."
27
- puts "Make sure it is correct."
28
- exit
29
- elsif response.code.to_i >= 500
30
- puts "Web Translate It is temporarily unavailable. Please try again shortly."
31
- exit
32
- else
33
- return response.body
34
- end
14
+ Util.handle_response(http.request(request), true)
35
15
  end
36
16
  end
37
17
  end
@@ -1,31 +1,28 @@
1
+ # encoding: utf-8
1
2
  require File.join(File.dirname(__FILE__), '..', 'web_translate_it')
2
3
 
3
4
  namespace :trans do
4
5
  desc "Fetch translation files from Web Translate It"
5
6
  task :fetch, :locale do |task, args|
6
- welcome_message
7
+ WebTranslateIt::Util.welcome_message
7
8
  puts "Fetching file for locale #{args.locale}…"
8
9
  configuration = WebTranslateIt::Configuration.new
9
- configuration.files.each do |file|
10
- response_code = file.fetch(args.locale)
11
- handle_response(file.file_path_for_locale(args.locale), response_code)
10
+ configuration.files.find_all{ |file| file.locale == args.locale }.each do |file|
11
+ puts file.file_path + ": " + file.fetch
12
12
  end
13
13
  end
14
14
 
15
15
  namespace :fetch do
16
16
  desc "Fetch all the translation files from Web Translate It"
17
17
  task :all do
18
- welcome_message
18
+ WebTranslateIt::Util.welcome_message
19
19
  configuration = WebTranslateIt::Configuration.new
20
20
  locales = configuration.target_locales
21
- configuration.ignore_locales.each do |ignore|
22
- locales.delete(ignore)
23
- end
21
+ configuration.ignore_locales.each{ |locale_to_ignore| locales.delete(locale_to_ignore) }
24
22
  puts "Fetching all files for all locales…"
25
23
  locales.each do |locale|
26
- configuration.files.each do |file|
27
- response_code = file.fetch(locale)
28
- handle_response(file.file_path_for_locale(locale), response_code)
24
+ configuration.files.find_all{ |file| file.locale == locale }.each do |file|
25
+ puts file.file_path + " " + file.fetch
29
26
  end
30
27
  end
31
28
  end
@@ -33,24 +30,11 @@ namespace :trans do
33
30
 
34
31
  desc "Upload the translation files for a locale to Web Translate It"
35
32
  task :upload, :locale do |task, args|
36
- welcome_message
33
+ WebTranslateIt::Util.welcome_message
37
34
  puts "Uploading file for locale #{args.locale}…"
38
35
  configuration = WebTranslateIt::Configuration.new
39
- configuration.files.each do |file|
40
- response_code = file.upload(args.locale)
41
- handle_response(file.file_path_for_locale(args.locale), response_code)
42
- end
43
- end
44
-
45
- def handle_response(file_path, response_code)
46
- if response_code < 400
47
- puts "#{file_path}: #{response_code}, OK"
48
- else
49
- puts "#{file_path}: #{response_code}, Problem!"
36
+ configuration.files.find_all{ |file| file.locale == args.locale }.each do |file|
37
+ puts file.file_path + " " + file.upload
50
38
  end
51
39
  end
52
-
53
- def welcome_message
54
- puts "Web Translate It v#{WebTranslateIt::Util.version}"
55
- end
56
40
  end
@@ -11,11 +11,12 @@ module WebTranslateIt
11
11
  require 'net/http/post/multipart'
12
12
  require 'time'
13
13
 
14
- attr_accessor :id, :file_path, :api_key
14
+ attr_accessor :id, :file_path, :locale, :api_key
15
15
 
16
- def initialize(id, file_path, api_key)
16
+ def initialize(id, file_path, locale, api_key)
17
17
  self.id = id
18
18
  self.file_path = file_path
19
+ self.locale = locale
19
20
  self.api_key = api_key
20
21
  end
21
22
 
@@ -26,19 +27,19 @@ module WebTranslateIt
26
27
  # Example of implementation:
27
28
  #
28
29
  # configuration = WebTranslateIt::Configuration.new
29
- # locale = configuration.locales.first
30
30
  # file = configuration.files.first
31
- # file.fetch(locale) # the first time, will return the content of the language file with a status 200 OK
32
- # file.fetch(locale) # returns nothing, with a status 304 Not Modified
33
- # file.fetch(locale, true) # force to re-download the file, will return the content of the file with a 200 OK
31
+ # file.fetch # the first time, will return the content of the language file with a status 200 OK
32
+ # file.fetch # returns nothing, with a status 304 Not Modified
33
+ # file.fetch(true) # force to re-download the file, will return the content of the file with a 200 OK
34
34
  #
35
- def fetch(locale, force = false)
35
+ def fetch(force = false)
36
36
  WebTranslateIt::Util.http_connection do |http|
37
- request = Net::HTTP::Get.new(api_url(locale))
38
- request.add_field('If-Modified-Since', last_modification(file_path_for_locale(locale))) if File.exist?(file_path_for_locale(locale)) and !force
37
+ request = Net::HTTP::Get.new(api_url)
38
+ request.add_field('If-Modified-Since', last_modification) if File.exist?(self.file_path) and !force
39
39
  response = http.request(request)
40
- File.open(file_path_for_locale(locale), 'w'){ |file| file << response.body } if response.code.to_i == 200 and response.body != ''
41
- response.code.to_i
40
+ FileUtils.mkpath(self.file_path.split('/')[0..-2].join('/')) unless File.exist?(self.file_path)
41
+ File.open(self.file_path, 'w'){ |file| file << response.body } if response.code.to_i == 200 and response.body != ''
42
+ Util.handle_response(response)
42
43
  end
43
44
  end
44
45
 
@@ -50,37 +51,31 @@ module WebTranslateIt
50
51
  # configuration = WebTranslateIt::Configuration.new
51
52
  # locale = configuration.locales.first
52
53
  # file = configuration.files.first
53
- # file.upload(locale) # should respond the HTTP code 202 Accepted
54
+ # file.upload # should respond the HTTP code 202 Accepted
54
55
  #
55
56
  # The meaning of the HTTP 202 code is: the request has been accepted for processing, but the processing has not
56
57
  # been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing
57
58
  # actually takes place.
58
59
  # This is due to the fact that language file imports are handled by background processing.
59
- def upload(locale)
60
- File.open(file_path_for_locale(locale)) do |file|
60
+ def upload
61
+ File.open(self.file_path) do |file|
61
62
  WebTranslateIt::Util.http_connection do |http|
62
- request = Net::HTTP::Put::Multipart.new(api_url(locale), "file" => UploadIO.new(file, "text/plain", file.path))
63
- response = http.request(request)
64
- response.code.to_i
63
+ request = Net::HTTP::Put::Multipart.new(api_url, "file" => UploadIO.new(file, "text/plain", file.path))
64
+ Util.handle_response(http.request(request))
65
65
  end
66
66
  end
67
67
  end
68
-
69
- # Convenience method which returns the file path of a TranslationFile for a given locale.
70
- def file_path_for_locale(locale)
71
- self.file_path.gsub("[locale]", locale)
72
- end
73
-
68
+
74
69
  protected
75
70
 
76
71
  # Convenience method which returns the date of last modification of a language file.
77
- def last_modification(file_path)
78
- File.mtime(File.new(file_path, 'r')).rfc2822
72
+ def last_modification
73
+ File.mtime(File.new(self.file_path, 'r')).rfc2822
79
74
  end
80
75
 
81
76
  # Convenience method which returns the URL of the API endpoint for a locale.
82
- def api_url(locale)
83
- "/api/projects/#{api_key}/files/#{self.id}/locales/#{locale}"
77
+ def api_url
78
+ "/api/projects/#{self.api_key}/files/#{self.id}/locales/#{self.locale}"
84
79
  end
85
80
  end
86
81
  end
@@ -1,5 +1,4 @@
1
1
  module WebTranslateIt
2
-
3
2
  # A few useful functions
4
3
  class Util
5
4
 
@@ -31,5 +30,23 @@ module WebTranslateIt
31
30
  return 0 if total == 0
32
31
  ((processed*10)/total).to_f.ceil*10
33
32
  end
33
+
34
+ def self.welcome_message
35
+ puts "Web Translate It v#{WebTranslateIt::Util.version}"
36
+ end
37
+
38
+ def self.handle_response(response, return_response = false)
39
+ if response.code.to_i >= 400 and response.code.to_i < 500
40
+ "We had a problem connecting to Web Translate It with this API key. Make sure it is correct."
41
+ elsif response.code.to_i >= 500
42
+ "Web Translate It is temporarily unavailable. Please try again shortly."
43
+ else
44
+ if return_response
45
+ response.body
46
+ else
47
+ "#{response.code.to_i} OK"
48
+ end
49
+ end
50
+ end
34
51
  end
35
52
  end
@@ -1,15 +1,6 @@
1
1
  # The Project API Token from Web Translate It
2
- api_key: abcd
2
+ api_key: 4af21ce1fb3a4f7127a60b31ebc41c1446b38bb2
3
3
 
4
- # The Master locale is the locale you translate your project from. Web Translate It shouldn’t
5
- # attempt to edit these files.
6
- ignore_locales: en_GB
7
-
8
- # A list of files to translate
9
- # You can name your language files as you want, as long as the locale name match the
10
- # locale name you set in Web Translate It, and that the different language files names are
11
- # differenciated by their locale name.
12
- # For example, if you set to translate a project in en_US in WTI, you should use the locale en_US in your app
13
- files:
14
- - config/locales/file1_[locale].yml
15
- - config/locales/file2_[locale].yml
4
+ # Optional: locales not to sync with Web Translate It.
5
+ # eg. [:en, :fr] or just 'en'
6
+ # ignore_locales: :en
@@ -1,31 +1,64 @@
1
1
  require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
2
 
3
3
  describe WebTranslateIt::Configuration do
4
- before(:each) do
5
- WebTranslateIt::Configuration.const_set("RAILS_ROOT", File.dirname(__FILE__) + '/../examples')
6
- end
7
-
8
4
  describe "#initialize" do
9
5
  it "should fetch and not blow up" do
6
+ Rails = OpenStruct.new(:root => Pathname.new(File.dirname(__FILE__) + "/../examples"))
10
7
  lambda{ WebTranslateIt::Configuration.new }.should_not raise_error
11
8
  end
12
9
 
13
10
  it "should load the content of the YAML file" do
14
11
  config_hash = {
15
- "api_key" => "abcd",
16
- "ignore_locales" => "en_GB",
17
- "files" => ["config/locales/file1_[locale].yml", "config/locales/file2_[locale].yml"]
12
+ "api_key" => "4af21ce1fb3a4f7127a60b31ebc41c1446b38bb2",
13
+ "ignore_locales" => "en_GB"
18
14
  }
19
15
  YAML.should_receive(:load_file).and_return(config_hash)
20
- WebTranslateIt::Configuration.new
16
+ WebTranslateIt::Configuration.new(File.dirname(__FILE__) + '/../..', 'examples/translation.yml')
21
17
  end
22
18
 
23
- it "should assign the API key, autofetch, files and master_locale" do
19
+ it "should assign the API key, files" do
20
+ Rails = OpenStruct.new(:root => Pathname.new(File.dirname(__FILE__) + "/../examples"))
24
21
  configuration = WebTranslateIt::Configuration.new
25
- configuration.api_key.should == 'abcd'
22
+ configuration.api_key.should == '4af21ce1fb3a4f7127a60b31ebc41c1446b38bb2'
26
23
  configuration.files.first.should be_a(WebTranslateIt::TranslationFile)
27
- configuration.ignore_locales.should == ['en_GB']
28
24
  end
29
25
  end
30
26
 
27
+ describe "#set_locales_to_ignore" do
28
+ before(:each) do
29
+ Rails = OpenStruct.new(:root => Pathname.new(File.dirname(__FILE__) + "/../examples"))
30
+ @configuration = WebTranslateIt::Configuration.new
31
+ end
32
+
33
+ it "should return an array" do
34
+ config_hash = { 'ignore_locales' => 'en' }
35
+ @configuration.set_locales_to_ignore(config_hash).should be_a(Array)
36
+ end
37
+
38
+ it "should not blow up if no locales are given" do
39
+ config_hash = { 'ignore_locales' => nil }
40
+ @configuration.set_locales_to_ignore(config_hash).should be_a(Array)
41
+ @configuration.set_locales_to_ignore(config_hash).should == []
42
+ end
43
+
44
+ it "should return an array of 2 elements if given array of strings" do
45
+ config_hash = { 'ignore_locales' => ['en', 'fr'] }
46
+ @configuration.set_locales_to_ignore(config_hash).should be_a(Array)
47
+ @configuration.set_locales_to_ignore(config_hash).should == ['en', 'fr']
48
+ end
49
+
50
+ it "should return an array of 1 element if given a symbol" do
51
+ config_hash = { 'ignore_locales' => :en }
52
+ @configuration.set_locales_to_ignore(config_hash).should be_a(Array)
53
+ @configuration.set_locales_to_ignore(config_hash).should == ['en']
54
+ end
55
+
56
+ it "should return an array of 2 element if given an array of symbol and string" do
57
+ config_hash = { 'ignore_locales' => [:en, 'fr'] }
58
+ @configuration.set_locales_to_ignore(config_hash).should be_a(Array)
59
+ @configuration.set_locales_to_ignore(config_hash).should == ['en', 'fr']
60
+ end
61
+
62
+ end
63
+
31
64
  end
@@ -2,15 +2,15 @@ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
2
 
3
3
  describe WebTranslateIt::TranslationFile do
4
4
  before(:each) do
5
- @translation_file = WebTranslateIt::TranslationFile.new(1174, "/config/locales/[locale].yml", "04b254da22a6eb301b103f848e469ad494eea47d")
5
+ @translation_file = WebTranslateIt::TranslationFile.new(2267, "examples/en.yml", 'fr', "4af21ce1fb3a4f7127a60b31ebc41c1446b38bb2")
6
6
  end
7
7
 
8
8
  describe "#initialize" do
9
9
  it "should assign id, file_path and api_key" do
10
- tr_file = WebTranslateIt::TranslationFile.new(1174, "/config/locales/[locale].yml", "04b254da22a6eb301b103f848e469ad494eea47d")
11
- tr_file.id.should == 1174
12
- tr_file.file_path.should == "/config/locales/[locale].yml"
13
- tr_file.api_key.should == "04b254da22a6eb301b103f848e469ad494eea47d"
10
+ tr_file = WebTranslateIt::TranslationFile.new(2267, "examples/en.yml", 'fr', "4af21ce1fb3a4f7127a60b31ebc41c1446b38bb2")
11
+ tr_file.id.should == 2267
12
+ tr_file.file_path.should == "examples/en.yml"
13
+ tr_file.api_key.should == "4af21ce1fb3a4f7127a60b31ebc41c1446b38bb2"
14
14
  end
15
15
  end
16
16
 
@@ -19,50 +19,40 @@ describe WebTranslateIt::TranslationFile do
19
19
  file = mock(File)
20
20
  file.stub(:puts => true, :close => true)
21
21
  File.stub(:exist? => true, :mtime => Time.at(0), :new => file)
22
- @translation_file.fetch('fr_FR').should == 200
22
+ @translation_file.fetch.should == 200
23
23
  end
24
24
 
25
25
  it "should prepare a HTTP request and get a 200 OK if the language file is stale using the force download parameter" do
26
26
  file = mock(File)
27
27
  file.stub(:puts => true, :close => true)
28
28
  File.stub(:exist? => true, :mtime => Time.at(0), :new => file)
29
- @translation_file.fetch('fr_FR', true).should == 200
29
+ @translation_file.fetch(true).should == 200
30
30
  end
31
31
 
32
32
  it "should prepare a HTTP request and get a 304 OK if the language file is fresh" do
33
33
  file = mock(File)
34
34
  file.stub(:puts => true, :close => true)
35
35
  File.stub(:exist? => true, :mtime => Time.now, :new => file)
36
- @translation_file.fetch('fr_FR').should == 304
36
+ @translation_file.fetch.should == 304
37
37
  end
38
38
 
39
39
  it "should prepare a HTTP request and get a 200 OK if the language file is fresh using the force download parameter" do
40
40
  file = mock(File)
41
41
  file.stub(:puts => true, :close => true)
42
42
  File.stub(:exist? => true, :mtime => Time.now, :new => file)
43
- @translation_file.fetch('fr_FR', true).should == 200
43
+ @translation_file.fetch(true).should == 200
44
44
  end
45
45
  end
46
46
 
47
47
  describe "#upload" do
48
48
  it "should prepare a HTTP request and get a 200 OK" do
49
49
  @translation_file.stub(:file_path => File.join(File.dirname(__FILE__), '..', 'examples', 'en.yml'))
50
- @translation_file.upload('en')
50
+ @translation_file.upload
51
51
  end
52
52
 
53
53
  it "should fail if the file does not exist" do
54
54
  @translation_file.stub(:file_path => File.join('something', 'that', 'does', 'not', 'exist'))
55
- lambda { @translation_file.upload('en') }.should raise_error
56
- end
57
- end
58
-
59
- describe "#file_path_for_locale" do
60
- it "should replace [locale] by the locale passed as a parameter" do
61
- @translation_file.file_path_for_locale('fr').should == "/config/locales/fr.yml"
62
- end
63
-
64
- it "should fail if no parameter is given" do
65
- lambda { @translation_file.file_path_for_locale }.should raise_error
55
+ lambda { @translation_file.upload }.should raise_error
66
56
  end
67
57
  end
68
58
  end
@@ -9,7 +9,7 @@ describe WebTranslateIt do
9
9
 
10
10
  before(:each) do
11
11
  WebTranslateIt::I18n.stub(:locale => 'en')
12
- WebTranslateIt::Configuration.const_set("RAILS_ROOT", File.dirname(__FILE__) + '/examples')
12
+ Rails = OpenStruct.new(:root => Pathname.new(File.dirname(__FILE__) + "/examples"))
13
13
  @configuration = WebTranslateIt::Configuration.new
14
14
  @file = mock(WebTranslateIt::TranslationFile)
15
15
  @file.stub(:fetch => true)
data/version.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
- :minor: 5
4
- :patch: 2
3
+ :minor: 6
4
+ :patch: 0
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.5.2
4
+ version: 1.6.0
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-03-13 00:00:00 +01:00
12
+ date: 2010-03-22 00:00:00 +01:00
13
13
  default_executable: wti
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,16 +32,6 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.2.0
34
34
  version:
35
- - !ruby/object:Gem::Dependency
36
- name: mg
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 0.0.7
44
- version:
45
35
  description: A rack middleware and a handful of rake tasks to sync your translations between webtranslateit.com and your rails applications.
46
36
  email: edouard@atelierconvivialite.com
47
37
  executables:
@@ -77,7 +67,7 @@ has_rdoc: true
77
67
  homepage: https://webtranslateit.com
78
68
  licenses: []
79
69
 
80
- post_install_message:
70
+ post_install_message: " ************************************************************\n\n Thank you for installing web_translate_it\n\n The version 1.6.0 you are upgrading to has some\n important breaking changes. Please be sure to read\n this blog post http://bit.ly/aEox3b\n for useful information about this release.\n\n ************************************************************\n"
81
71
  rdoc_options:
82
72
  - --main
83
73
  - README.md