localeapp 0.0.8 → 0.0.10
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/.gitignore +1 -0
- data/.travis.yml +4 -0
- data/Gemfile.i18n_037 +5 -0
- data/Gemfile.i18n_050 +4 -0
- data/Gemfile.i18n_060 +4 -0
- data/lib/localeapp.rb +10 -1
- data/lib/localeapp/exception_handler.rb +3 -2
- data/lib/localeapp/i18n_shim.rb +5 -0
- data/lib/localeapp/updater.rb +1 -0
- data/lib/localeapp/version.rb +1 -1
- data/localeapp.gemspec +1 -3
- data/spec/localeapp/exception_handler_spec.rb +7 -0
- data/spec/localeapp/updater_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -1
- data/spec/support/i18n/missing_translation.rb +22 -0
- metadata +18 -14
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile.i18n_037
ADDED
data/Gemfile.i18n_050
ADDED
data/Gemfile.i18n_060
ADDED
data/lib/localeapp.rb
CHANGED
@@ -5,15 +5,24 @@ rescue LoadError
|
|
5
5
|
# we're in 2.3 and we need to load rails to get the vendored i18n
|
6
6
|
require 'thread' # for rubygems > 1.6.0 support
|
7
7
|
require 'active_support'
|
8
|
+
# This ugliness so we can load AS in the travis env
|
9
|
+
@loaded_active_support = true
|
8
10
|
end
|
9
11
|
|
10
12
|
begin
|
11
13
|
require 'i18n/core_ext/hash'
|
12
14
|
rescue LoadError
|
15
|
+
# This ugliness so we can load AS in the travis env
|
13
16
|
# Assume that we're in rails 2.3 and AS supplies deep_merge
|
17
|
+
# Load AS if we need to
|
18
|
+
unless @loaded_active_support
|
19
|
+
# we're in 2.3 and we need to load rails to get the vendored i18n
|
20
|
+
require 'thread' # for rubygems > 1.6.0 support
|
21
|
+
require 'active_support'
|
22
|
+
end
|
14
23
|
end
|
15
24
|
|
16
|
-
|
25
|
+
require 'localeapp/i18n_shim'
|
17
26
|
require 'localeapp/version'
|
18
27
|
require 'localeapp/configuration'
|
19
28
|
require 'localeapp/routes'
|
@@ -2,11 +2,12 @@ module Localeapp
|
|
2
2
|
class ExceptionHandler
|
3
3
|
def self.call(exception, locale, key, options)
|
4
4
|
Localeapp.log(exception.message)
|
5
|
-
|
5
|
+
# Which exact exception is set up by our i18n shims
|
6
|
+
if exception.is_a? Localeapp::I18nMissingTranslationException
|
6
7
|
Localeapp.log("Detected missing translation for key(s) #{key.inspect}")
|
7
8
|
|
8
9
|
[*key].each do |key|
|
9
|
-
Localeapp.missing_translations.add(locale, key, options)
|
10
|
+
Localeapp.missing_translations.add(locale, key, options || {})
|
10
11
|
end
|
11
12
|
|
12
13
|
[locale, key].join(', ')
|
data/lib/localeapp/updater.rb
CHANGED
data/lib/localeapp/version.rb
CHANGED
data/localeapp.gemspec
CHANGED
@@ -19,13 +19,11 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
+
s.add_dependency('i18n')
|
22
23
|
s.add_dependency('json')
|
23
24
|
s.add_dependency('rest-client')
|
24
25
|
s.add_dependency('ya2yaml')
|
25
26
|
|
26
|
-
# i18n is a dev dependency as we'll use whichever version is in rails
|
27
|
-
# when the gem runs
|
28
|
-
s.add_development_dependency('i18n', '0.5.0')
|
29
27
|
s.add_development_dependency('rake')
|
30
28
|
s.add_development_dependency('rspec', '2.5.0')
|
31
29
|
s.add_development_dependency('yard', '0.6.7')
|
@@ -18,4 +18,11 @@ describe Localeapp::ExceptionHandler, '#call(exception, locale, key, options)' d
|
|
18
18
|
Localeapp.missing_translations.should_receive(:add).with(:en, 'bar', {})
|
19
19
|
I18n.t(['foo', 'bar'])
|
20
20
|
end
|
21
|
+
|
22
|
+
it "handles missing translation exception" do
|
23
|
+
expect {
|
24
|
+
exception = Localeapp::I18nMissingTranslationException.new(:en, 'foo', {})
|
25
|
+
Localeapp::ExceptionHandler.call(exception, :en, 'foo', {})
|
26
|
+
}.to_not raise_error
|
27
|
+
end
|
21
28
|
end
|
@@ -81,9 +81,9 @@ JA
|
|
81
81
|
it "doesn't create a new yml file if an unknown locale is passed but it has no translations" do
|
82
82
|
do_update({
|
83
83
|
'translations' => {},
|
84
|
-
'
|
84
|
+
'deleted' => ['foo.delete_me'],
|
85
85
|
'locales' => ['ja']
|
86
86
|
})
|
87
87
|
File.exist?(File.join(@yml_dir, 'ja.yml')).should be_false
|
88
88
|
end
|
89
|
-
end
|
89
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -3,12 +3,13 @@ require 'localeapp'
|
|
3
3
|
require 'fakeweb'
|
4
4
|
require 'support/localeapp_integration_data'
|
5
5
|
require 'support/localeapp_synchronization_data'
|
6
|
+
require 'support/i18n/missing_translation'
|
6
7
|
require 'logger'
|
7
8
|
|
8
9
|
def with_configuration(options = {})
|
9
10
|
Localeapp.configuration = nil
|
10
11
|
Localeapp.configure do |configuration|
|
11
|
-
options.each do |option, value|
|
12
|
+
options.each do |option, value|
|
12
13
|
configuration.send("#{option}=", value)
|
13
14
|
end
|
14
15
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module I18n
|
2
|
+
class MissingTranslation
|
3
|
+
attr_reader :locale, :key, :options
|
4
|
+
|
5
|
+
def initialize(locale, key, options = nil)
|
6
|
+
@key, @locale, @options = key, locale, options.dup || {}
|
7
|
+
options.each { |k, v| self.options[k] = v.inspect if v.is_a?(Proc) }
|
8
|
+
end
|
9
|
+
|
10
|
+
def keys
|
11
|
+
@keys ||= I18n.normalize_keys(locale, key, options[:scope]).tap do |keys|
|
12
|
+
keys << 'no key' if keys.size < 2
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def message
|
17
|
+
"translation missing: #{keys.join('.')}"
|
18
|
+
end
|
19
|
+
alias :to_s :message
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: localeapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 10
|
10
|
+
version: 0.0.10
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christopher Dell
|
@@ -16,10 +16,10 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-08-
|
19
|
+
date: 2011-08-25 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
22
|
+
name: i18n
|
23
23
|
prerelease: false
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
type: :runtime
|
34
34
|
version_requirements: *id001
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: json
|
37
37
|
prerelease: false
|
38
38
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
type: :runtime
|
48
48
|
version_requirements: *id002
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: rest-client
|
51
51
|
prerelease: false
|
52
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
@@ -61,20 +61,18 @@ dependencies:
|
|
61
61
|
type: :runtime
|
62
62
|
version_requirements: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: ya2yaml
|
65
65
|
prerelease: false
|
66
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
68
68
|
requirements:
|
69
|
-
- - "
|
69
|
+
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
hash:
|
71
|
+
hash: 3
|
72
72
|
segments:
|
73
73
|
- 0
|
74
|
-
|
75
|
-
|
76
|
-
version: 0.5.0
|
77
|
-
type: :development
|
74
|
+
version: "0"
|
75
|
+
type: :runtime
|
78
76
|
version_requirements: *id004
|
79
77
|
- !ruby/object:Gem::Dependency
|
80
78
|
name: rake
|
@@ -187,6 +185,9 @@ files:
|
|
187
185
|
- .rvmrc
|
188
186
|
- .travis.yml
|
189
187
|
- Gemfile
|
188
|
+
- Gemfile.i18n_037
|
189
|
+
- Gemfile.i18n_050
|
190
|
+
- Gemfile.i18n_060
|
190
191
|
- README.textile
|
191
192
|
- Rakefile
|
192
193
|
- bin/localeapp
|
@@ -205,6 +206,7 @@ files:
|
|
205
206
|
- lib/localeapp/cli/update.rb
|
206
207
|
- lib/localeapp/configuration.rb
|
207
208
|
- lib/localeapp/exception_handler.rb
|
209
|
+
- lib/localeapp/i18n_shim.rb
|
208
210
|
- lib/localeapp/key_checker.rb
|
209
211
|
- lib/localeapp/missing_translations.rb
|
210
212
|
- lib/localeapp/poller.rb
|
@@ -237,6 +239,7 @@ files:
|
|
237
239
|
- spec/localeapp/sender_spec.rb
|
238
240
|
- spec/localeapp/updater_spec.rb
|
239
241
|
- spec/spec_helper.rb
|
242
|
+
- spec/support/i18n/missing_translation.rb
|
240
243
|
- spec/support/localeapp_integration_data.rb
|
241
244
|
- spec/support/localeapp_synchronization_data.rb
|
242
245
|
homepage: http://rubygems.org/gems/localeapp
|
@@ -295,5 +298,6 @@ test_files:
|
|
295
298
|
- spec/localeapp/sender_spec.rb
|
296
299
|
- spec/localeapp/updater_spec.rb
|
297
300
|
- spec/spec_helper.rb
|
301
|
+
- spec/support/i18n/missing_translation.rb
|
298
302
|
- spec/support/localeapp_integration_data.rb
|
299
303
|
- spec/support/localeapp_synchronization_data.rb
|