wti_gettext_i18n_rails 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2009-2010 Atelier Convivialité
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,106 @@
1
+ # Web Translate It
2
+
3
+ [Homepage](https://webtranslateit.com) |
4
+ [RDocs](http://yardoc.org/docs/AtelierConvivialite-webtranslateit) |
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) |
7
+ [Example app](http://github.com/AtelierConvivialite/rails_example_app)
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.
10
+
11
+ ![Web Translate It](http://s3.amazonaws.com:80/edouard.baconfile.com/web_translate_it%2Fwti.png)
12
+
13
+ This gem provides your app with:
14
+
15
+ * an executable, `wti`, to upload and download language files from the command line (or in whatever else you want to execute it)
16
+ * a handful of rake task to fetch and upload your translations.
17
+ * a rack middleware to automatically fetch new translations from Web Translate It.
18
+
19
+ ## Installation
20
+
21
+ gem install web_translate_it
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.
25
+
26
+ Run `wti --help` to see the usage:
27
+
28
+ pull Pull target language file(s) from Web Translate It.
29
+ push Push master language file(s) to Web Translate It.
30
+ autoconf Configure your project to sync with Web Translate It.
31
+ stats Fetch and display your project statistics.
32
+
33
+ OPTIONAL PARAMETERS:
34
+ --------------------
35
+ -l --locale The ISO code of a specific locale to pull or push.
36
+ -c --config Path to a translation.yml file. If this option
37
+ is absent, looks for config/translation.yml.
38
+ --all Respectively download or upload all files.
39
+ --force Force wti pull to re-download the language file,
40
+ regardless if local version is current.
41
+ OTHER:
42
+ ------
43
+ -v --version Show version.
44
+ -h --help This page.
45
+
46
+ ## Specific tools for Ruby on Rails
47
+
48
+ This gem includes some rake tasks and a rack middleware to integrate Web Translate It with Ruby on Rails.
49
+
50
+ * Add to your config/environments.rb:
51
+
52
+ `config.gem 'web_translate_it'`
53
+
54
+ * Then, run:
55
+
56
+ `rake gems:install`
57
+
58
+ * Copy/paste your api key from Web Translate It and run:
59
+
60
+ `script/generate webtranslateit --api-key your_key_here`
61
+
62
+ The generator does two things:
63
+
64
+ - It adds a auto-configured `config/translation.yml` file using Web Translate It’s API.
65
+ - It adds `require 'web_translate_it/tasks' rescue LoadError` to your `Rakefile`
66
+
67
+ ### Rake tasks provided
68
+
69
+ There are 3 rake tasks.
70
+
71
+ rake trans:fetch:all
72
+
73
+ Fetch the latest translations for all your files for all languages defined in Web Translate It’s interface, except for the languages set in `ignore_locales`.
74
+
75
+ rake trans:fetch[fr_FR]
76
+
77
+ Fetch the latest translations for all the languages defined in Web Translate It’s interface. It takes the locale name as a parameter
78
+
79
+ rake trans:upload[fr_FR]
80
+
81
+ Upload to Web Translate It your files in a specific locale defined in Web Translate It’s interface.
82
+
83
+ Read more about [Rails integration in the wiki](http://wiki.github.com/AtelierConvivialite/webtranslateit/).
84
+
85
+
86
+ ## Supported Rails Versions
87
+
88
+ The gem currently has been tested against the following versions of Rails:
89
+
90
+ * 2.3.4
91
+ * 2.3.5
92
+
93
+ Please open a discussion on [our support site](http://help.webtranslateit.com) if you're using a version of Rails that is not listed above and the gem is not working properly.
94
+
95
+ # Acknowledgement
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/).
99
+
100
+ # What is Web Translate It anyway?
101
+
102
+ Web Translate It is a web-based translation hub to collaboratively translate software.
103
+
104
+ To learn more about it, please visit our [tour page](https://webtranslateit.com/tour).
105
+
106
+ This gem is released under the MIT License.
data/bin/wti ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'web_translate_it'
4
+ # require 'lib/web_translate_it' # for testing
5
+ WebTranslateIt::CommandLine.run
@@ -0,0 +1,12 @@
1
+ class Locale
2
+ def initialize(app)
3
+ @app = app
4
+ end
5
+
6
+ def call(env)
7
+ req = Rack::Request.new(env)
8
+ I18n.locale = req.params['locale']
9
+ status, headers, response = @app.call(env)
10
+ [status, headers, response.body]
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ # The Project API Token from Web Translate It
2
+ api_key: SECRET
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.
6
+ # 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
@@ -0,0 +1,34 @@
1
+ # Mostly pinched from http://github.com/ryanb/nifty-generators/tree/master
2
+
3
+ Rails::Generator::Commands::Base.class_eval do
4
+ def file_contains?(relative_destination, line)
5
+ File.read(destination_path(relative_destination)).include?(line)
6
+ end
7
+ end
8
+
9
+ Rails::Generator::Commands::Create.class_eval do
10
+ def append_to(file, line)
11
+ logger.insert "#{line} appended to #{file}"
12
+ unless options[:pretend] || file_contains?(file, line)
13
+ File.open(file, "a") do |file|
14
+ file.puts
15
+ file.puts line
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ Rails::Generator::Commands::Destroy.class_eval do
22
+ def append_to(file, line)
23
+ logger.remove "#{line} removed from #{file}"
24
+ unless options[:pretend]
25
+ gsub_file file, "\n#{line}", ''
26
+ end
27
+ end
28
+ end
29
+
30
+ Rails::Generator::Commands::List.class_eval do
31
+ def append_to(file, line)
32
+ logger.insert "#{line} appended to #{file}"
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ # The Project API Token from Web Translate It
2
+ api_key: '<%= api_key %>'
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.
6
+ # 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 -%>
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/lib/insert_commands.rb")
2
+
3
+ class WebtranslateitGenerator < Rails::Generator::Base
4
+ def add_options!(opt)
5
+ opt.on('-k', '--api-key=key', String, "Your Web Translate It API key") {|v| options[:api_key] = v}
6
+ end
7
+
8
+ def manifest
9
+ if !api_key_configured? && !options[:api_key]
10
+ puts "You must pass --api-key or create config/translations.yml"
11
+ exit
12
+ end
13
+ record do |m|
14
+ if options[:api_key]
15
+ project_details = YAML.load WebTranslateIt::Project.fetch_info(options[:api_key])
16
+ m.template 'translation.yml', 'config/translation.yml',
17
+ :assigns => { :api_key => options[:api_key], :project => project_details["project"] }
18
+ m.append_to 'Rakefile', "require 'web_translate_it/tasks' rescue LoadError"
19
+ end
20
+ end
21
+ end
22
+
23
+ def api_key_configured?
24
+ File.exists?('config/translations.yml')
25
+ end
26
+ end
data/history.md ADDED
@@ -0,0 +1,99 @@
1
+ ## Version 1.5.2 /2010-03-13
2
+
3
+ * Only added a man page.
4
+
5
+ ## Version 1.5.1 /2010-03-09
6
+
7
+ * Add `wti stats`, to fetch the project stats from the stats API endpoint.
8
+
9
+ ## Version 1.5.0 /2010-02-19
10
+
11
+ Warning, some deprecations in this version.
12
+
13
+ * Remove `wti fetch` and `wti upload`. It was deprecated in 1.4.7 in favour of `wti pull` and `wti push` respectively.
14
+ * `wti push` now only pushes the master language file. Use `wti push --all` to push all or `wti push -l [locale]` to push a specific locale.
15
+ * `wti pull` now only pulls the target language files. Use `wti pull --all` to pull all or `wti pull -l [locale]` to pull a specific locale.
16
+ * Increase read timeout to 40s — Required for very large projects.
17
+ * Bug fix: `wti autoconf` now create directory if it doesn't exist.
18
+ * Bug fix: `wti autoconf` now ask the user where are the locale files.
19
+
20
+ ## Version 1.4.7 /2010-02-05
21
+
22
+ * Add deprecation warning for `wti --fetch`, `wti -f`. These commands will be deprecated in favour of `wti pull`.
23
+ * Add deprecation warning for `wti --upload`, `wti -u`. These commands will be deprecated in favour of `wti push`.
24
+ * Add -c parameter to specify a configuration file at a custom location.
25
+ * Add -l parameter to specify a specific language file to pull or push (only works with `wti pull` and `wti push`).
26
+ * Add --force parameter to force Web Translate It to send the language files again, regardless if the current
27
+ language file version is current (this makes `wti pull` very much slower).
28
+ * Add `wti autoconf` command to automatically configure your project for Web Translate It.
29
+
30
+ ## Version 1.4.6 /2010-02-04
31
+
32
+ * Add feedback when using the `wti command`.
33
+ * Fix bug where fetch requests were not using the conditional get requests feature.
34
+
35
+ ## Version 1.4.5 /2010-02-02
36
+
37
+ * Improved documentation
38
+ * Web Translate is now an executable: `wti`
39
+
40
+ ## Version 1.4.4 / 2010-02-01
41
+
42
+ * Add generator to automatically configure your project, given a Web Translate It API key.
43
+ * Remove rake trans:config, as configuration is now handled by the generator.
44
+
45
+ ## Version 1.4.3 / 2010-01-09
46
+
47
+ * Remove colour outputs as it increases code complexity and doesn't add any value.
48
+ * Rack middleware now write to the application’s log file instead of just puts-ing
49
+ * Better error messages for misconfigured projects
50
+
51
+ ## Version 1.4.2 / 2010-01-07
52
+
53
+ * Bug fix for `rake trans:config` which was not installing the translation.yml file properly.
54
+
55
+ ## Version 1.4.1 / 2010-01-07
56
+
57
+ * Rename `rake trans:send[fr_Fr]` to `rake trans:upload[fr_FR]`
58
+ * Remove `rake trans:version` task. Instead, version number is displayed in the welcome banner.
59
+ * Code refactoring
60
+ * More tests
61
+
62
+ ## Version 1.4.0 / 2010-01-06
63
+
64
+ * The plugin is now a gem
65
+
66
+ ## Version 1.3.0 / 2010-01-05
67
+
68
+ * Add rack middleware to automatically fetch your translations
69
+ * Remove `autofetch` parameter in configuration file as it is better off to leave it to the user to
70
+ include the rack middleware in each environment file.
71
+ * Add example of rack middleware for setting up I18n.locale
72
+
73
+ ## Version 1.2.1 / 2010-01-04
74
+
75
+ * Add some documentation
76
+ * More feedback on file upload
77
+
78
+ ## Version 1.2 / 2010-01-04
79
+
80
+ * New: Ability to **update** language files via PUT requests. Upload brand new language files is not possible at the moment.
81
+
82
+ ## Version 1.1.1 / 2010-01-04
83
+
84
+ * Fix: locales in exclude list are no longer autofetched when browsing the app in these locales.
85
+
86
+ ## Version 1.1 / 2010-01-04
87
+
88
+ * Support for multi-files projects.
89
+ * Deprecate `rake translation:*` in favour of the shorter form `rake trans`.
90
+ * Add task `rake trans:fetch[en_US]` to fetch files locale by locale.
91
+ * Add task `rake trans:fetch:all` to fetch all the files for all locales defined in Web Translate It’s web interface.
92
+
93
+ ## Version 1.0.0 / 2009-11-02
94
+
95
+ * Better support for exceptions.
96
+
97
+ ## Version 0.9.0 / 2009-10-26
98
+
99
+ * First version, plugin only support download of strings. Strings upload will be available in a later version.
@@ -0,0 +1,22 @@
1
+ module WebTranslateIt
2
+
3
+ # Class to automatically fetch the last translations from Web Translate It
4
+ # for every page requested.
5
+ # This can be used as a rack middleware.
6
+ # Implementation example:
7
+ #
8
+ # # in config/environment.rb:
9
+ # config.middleware.use "WebTranslateIt::AutoFetch"
10
+ #
11
+ class AutoFetch
12
+ def initialize(app)
13
+ @app = app
14
+ end
15
+
16
+ def call(env)
17
+ WebTranslateIt::fetch_translations
18
+ status, headers, response = @app.call(env)
19
+ [status, headers, response.body]
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,167 @@
1
+ # encoding: utf-8
2
+ module WebTranslateIt
3
+ class CommandLine
4
+ require 'fileutils'
5
+
6
+ OPTIONS = <<-OPTION
7
+ pull Pull target language file(s) from Web Translate It.
8
+ push Push master language file(s) to Web Translate It.
9
+ autoconf Configure your project to sync with Web Translate It.
10
+ stats Fetch and display your project statistics.
11
+
12
+ OPTIONAL PARAMETERS:
13
+ --------------------
14
+ -l --locale The ISO code of a specific locale to pull or push.
15
+ -c --config Path to a translation.yml file. If this option
16
+ is absent, looks for config/translation.yml.
17
+ --all Respectively download or upload all files.
18
+ --force Force wti pull to re-download the language file,
19
+ regardless if local version is current.
20
+ OTHER:
21
+ ------
22
+ -v --version Show version.
23
+ -h --help This page.
24
+ OPTION
25
+
26
+ def self.run
27
+ case ARGV[0]
28
+ when 'pull'
29
+ pull
30
+ when 'push'
31
+ push
32
+ when 'autoconf'
33
+ autoconf
34
+ when 'stats'
35
+ stats
36
+ when '-v', '--version'
37
+ show_version
38
+ when '-h', '--help'
39
+ show_options
40
+ else
41
+ puts "Command not found"
42
+ show_options
43
+ end
44
+ end
45
+
46
+ def self.pull
47
+ configuration = fetch_configuration
48
+ locales = fetch_locales_to_pull(configuration)
49
+ configuration.files.each do |file|
50
+ locales.each do |locale|
51
+ puts "Pulling #{file.file_path_for_locale(locale)}…"
52
+ file.fetch(locale, ARGV.index('--force'))
53
+ end
54
+ end
55
+ end
56
+
57
+ def self.push
58
+ configuration = fetch_configuration
59
+ locales = fetch_locales_to_push(configuration)
60
+ configuration.files.each do |file|
61
+ locales.each do |locale|
62
+ puts "Pushing #{file.file_path_for_locale(locale)}…"
63
+ file.upload(locale)
64
+ end
65
+ end
66
+ end
67
+
68
+ def self.autoconf
69
+ puts "We will attempt to configure your project automagically"
70
+ puts "Please enter your project API Key:"
71
+ api_key = STDIN.gets.strip
72
+ if api_key == ""
73
+ puts "You must enter your project API key provided by Web Translate It"
74
+ exit
75
+ end
76
+ puts "Where should we create the configuration file? (Default: `config/translation.yml`)"
77
+ path = STDIN.gets.strip
78
+ path = "config/translation.yml" if path == ""
79
+ FileUtils.mkpath(path.split('/')[0..path.split('/').size-1])
80
+ puts "Where are you language files located? (Default: `config/locales/`)"
81
+ path_to_locale_files = STDIN.gets.strip
82
+ path_to_locale_files = "config/locales/" if path_to_locale_files == ""
83
+ FileUtils.mkpath(path.split('/')[0..path.split('/').size-1])
84
+ File.open(path, 'w'){ |file| file << generate_configuration(api_key, path_to_locale_files) }
85
+ puts "Done! You can now use `wti` to push and pull your language files."
86
+ puts "Check `wti --help` for more information."
87
+ end
88
+
89
+ def self.stats
90
+ configuration = fetch_configuration
91
+ stats = YAML.load(Project.fetch_stats(configuration.api_key))
92
+ stats.each do |locale, values|
93
+ percent_translated = Util.calculate_percentage(values['count_strings_to_proofread'] + values['count_strings_done'] + values['count_strings_to_verify'], values['count_strings'])
94
+ percent_completed = Util.calculate_percentage(values['count_strings_done'], values['count_strings'])
95
+ puts "#{locale}: #{percent_translated}% translated, #{percent_completed}% completed #{values['stale'] ? "Stale" : ""}"
96
+ end
97
+ end
98
+
99
+ def self.show_options
100
+ puts ""
101
+ puts "Web Translate It Help:"
102
+ puts "**********************"
103
+ $stdout.puts OPTIONS
104
+ end
105
+
106
+ def self.show_version
107
+ puts ""
108
+ puts "Web Translate It #{WebTranslateIt::Util.version}"
109
+ end
110
+
111
+ def self.fetch_configuration
112
+ if (index = ARGV.index('-c') || ARGV.index('--config')).nil?
113
+ configuration = WebTranslateIt::Configuration.new('.')
114
+ else
115
+ configuration = WebTranslateIt::Configuration.new('.', ARGV[index+1])
116
+ end
117
+ return configuration
118
+ end
119
+
120
+ def self.fetch_locales_to_pull(configuration)
121
+ if (index = ARGV.index('-l') || ARGV.index('--locale')).nil?
122
+ locales = configuration.target_locales
123
+ else
124
+ locales = [ARGV[index+1]]
125
+ end
126
+ locales.push(configuration.source_locale) if ARGV.index('--all')
127
+ return locales.uniq
128
+ end
129
+
130
+ def self.fetch_locales_to_push(configuration)
131
+ if (index = ARGV.index('-l') || ARGV.index('--locale')).nil?
132
+ locales = [configuration.source_locale]
133
+ else
134
+ locales = [ARGV[index+1]]
135
+ end
136
+ locales.push(configuration.target_locales) if ARGV.index('--all')
137
+ return locales.uniq
138
+ end
139
+
140
+ def self.generate_configuration(api_key, path_to_locale_files)
141
+ project_info = YAML.load WebTranslateIt::Project.fetch_info(api_key)
142
+ project = project_info['project']
143
+ file = <<-FILE
144
+ api_key: #{api_key}
145
+
146
+ # The locales not to sync with Web Translate It.
147
+ # Pass an array of string, or an array of symbols, a string or a symbol.
148
+ # eg. [:en, :fr] or just 'en'
149
+ ignore_locales: '#{project["source_locale"]["code"]}'
150
+
151
+ # A list of files to translate
152
+ # You can name your language files as you want, as long as the locale name match the
153
+ # locale name you set in Web Translate It, and that the different language files names are
154
+ # differenciated by their locale name.
155
+ # For example, if you set to translate a project in en_US in WTI, you should use the locale en_US in your app
156
+ #
157
+ files:
158
+ FILE
159
+ project["project_files"].each do |project_file|
160
+ if project_file["master"]
161
+ file << " #{project_file["id"]}: #{path_to_locale_files}" + project_file["name"].gsub(project["source_locale"]["code"], "[locale]") + "\n"
162
+ end
163
+ end
164
+ return file
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,54 @@
1
+ module WebTranslateIt
2
+
3
+ # Handles the configuration of your project, both via the the configuration file
4
+ # and via the API.
5
+ # Implementation example, assuming you have a valid config/translation.yml file:
6
+ #
7
+ # configuration = WebTranslateIt::Configuration.new
8
+ #
9
+ class Configuration
10
+ require 'yaml'
11
+ require 'fileutils'
12
+ attr_accessor :path, :api_key, :source_locale, :target_locales, :files, :ignore_locales, :logger
13
+
14
+ # Load configuration file from the path.
15
+ def initialize(root_path=RAILS_ROOT, path_to_config="config/translation.yml")
16
+ self.path = root_path
17
+ configuration = YAML.load_file(File.join(root_path, path_to_config))
18
+ self.logger = logger
19
+ self.api_key = configuration['api_key']
20
+ self.files = []
21
+ self.ignore_locales = configuration['ignore_locales'].split.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
26
+ end
27
+
28
+ # Makes an API request to fetch the list of the different locales for a project.
29
+ # Implementation example:
30
+ #
31
+ # configuration = WebTranslateIt::Configuration.new
32
+ # 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']
36
+ self.source_locale = project['source_locale']['code']
37
+ self.target_locales = project['target_locales'].map{|locale| locale['code']}
38
+ end
39
+
40
+ # Convenience method which returns the endpoint for fetching a list of locales for a project.
41
+ def api_url
42
+ "/api/projects/#{api_key}.yaml"
43
+ end
44
+
45
+ # Returns a logger. If RAILS_DEFAULT_LOGGER is defined, use it, else, define a new logger.
46
+ def logger
47
+ if defined?(Rails.logger)
48
+ Rails.logger
49
+ elsif defined?(RAILS_DEFAULT_LOGGER)
50
+ RAILS_DEFAULT_LOGGER
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,38 @@
1
+ module WebTranslateIt
2
+ class Project
3
+
4
+ def self.fetch_info(api_key)
5
+ WebTranslateIt::Util.http_connection do |http|
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
18
+ end
19
+ end
20
+
21
+ def self.fetch_stats(api_key)
22
+ WebTranslateIt::Util.http_connection do |http|
23
+ 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
35
+ end
36
+ end
37
+ end
38
+ end