web_translate_it 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
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