i18n_lookup 0.3.0 → 0.3.1
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.
- checksums.yaml +7 -0
- data/lib/i18n_lookup/railtie.rb +0 -1
- data/lib/tasks/i18n_normalize.rake +7 -1
- metadata +22 -50
- data/lib/tasks/i18n_missing_keys.rake +0 -116
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 63caa389737d1c9baecb897a213c9a9045ceceaa
|
4
|
+
data.tar.gz: ae5e6e2e251541ee640c91dc45cb5ed8e13b9623
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0bc8ff4247e196e2014ab64d3ae4b27ccd589f006ffa47634252a73aa86151874721ca35a56cac5d50d63c8bc36ec78d525d73719578bf6264d83093a8003356
|
7
|
+
data.tar.gz: 5cd6182092135fb2aec90ea3d8f8afa9b941f0590ef550c0ac9b36f46813e563459602e61e02fdf2ff16449c149071e9b095de3cbd511f4bda1aa882383a5c90
|
data/lib/i18n_lookup/railtie.rb
CHANGED
@@ -67,7 +67,13 @@ namespace :i18n do
|
|
67
67
|
|
68
68
|
generated_locale_yaml = {}
|
69
69
|
|
70
|
-
I18n.backend.send(:translations).keys
|
70
|
+
locales = (I18n.available_locales & I18n.backend.send(:translations).keys)
|
71
|
+
if locales.empty?
|
72
|
+
puts 'No locales found'
|
73
|
+
exit 0
|
74
|
+
end
|
75
|
+
|
76
|
+
locales.each do |locale|
|
71
77
|
generated_locale_yaml[locale] = current_i18n_yaml(locale)
|
72
78
|
end
|
73
79
|
|
metadata
CHANGED
@@ -1,132 +1,104 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_lookup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.3.0
|
4
|
+
version: 0.3.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Thomas Metzmacher
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-10-10 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: i18n
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0
|
19
|
+
version: '0'
|
22
20
|
type: :runtime
|
21
|
+
prerelease: false
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
23
|
requirements:
|
26
|
-
- -
|
24
|
+
- - ">="
|
27
25
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0
|
29
|
-
prerelease: false
|
26
|
+
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '2.0'
|
38
34
|
type: :development
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '2.0'
|
45
35
|
prerelease: false
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: pry-debugger
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.2'
|
54
|
-
type: :development
|
55
36
|
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
37
|
requirements:
|
58
|
-
- - ~>
|
38
|
+
- - "~>"
|
59
39
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0
|
61
|
-
prerelease: false
|
40
|
+
version: '2.0'
|
62
41
|
- !ruby/object:Gem::Dependency
|
63
42
|
name: awesome_print
|
64
43
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
44
|
requirements:
|
67
|
-
- - ~>
|
45
|
+
- - "~>"
|
68
46
|
- !ruby/object:Gem::Version
|
69
47
|
version: '1.2'
|
70
48
|
type: :development
|
49
|
+
prerelease: false
|
71
50
|
version_requirements: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
51
|
requirements:
|
74
|
-
- - ~>
|
52
|
+
- - "~>"
|
75
53
|
- !ruby/object:Gem::Version
|
76
54
|
version: '1.2'
|
77
|
-
prerelease: false
|
78
55
|
- !ruby/object:Gem::Dependency
|
79
56
|
name: activemodel
|
80
57
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
58
|
requirements:
|
83
|
-
- - ~>
|
59
|
+
- - "~>"
|
84
60
|
- !ruby/object:Gem::Version
|
85
61
|
version: 4.0.2
|
86
62
|
type: :development
|
63
|
+
prerelease: false
|
87
64
|
version_requirements: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
65
|
requirements:
|
90
|
-
- - ~>
|
66
|
+
- - "~>"
|
91
67
|
- !ruby/object:Gem::Version
|
92
68
|
version: 4.0.2
|
93
|
-
prerelease: false
|
94
69
|
description: A toolset for I18n handling
|
95
70
|
email: kontakt@thomet.de
|
96
71
|
executables: []
|
97
72
|
extensions: []
|
98
73
|
extra_rdoc_files: []
|
99
74
|
files:
|
100
|
-
- lib/i18n_lookup/railtie.rb
|
101
75
|
- lib/i18n_lookup.rb
|
102
|
-
- lib/
|
76
|
+
- lib/i18n_lookup/railtie.rb
|
103
77
|
- lib/tasks/i18n_normalize.rake
|
104
78
|
- spec/i18n_lookup_spec.rb
|
105
79
|
homepage: http://www.thomet.de/
|
106
80
|
licenses:
|
107
81
|
- MIT
|
82
|
+
metadata: {}
|
108
83
|
post_install_message:
|
109
84
|
rdoc_options: []
|
110
85
|
require_paths:
|
111
86
|
- lib
|
112
87
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
88
|
requirements:
|
115
|
-
- -
|
89
|
+
- - ">="
|
116
90
|
- !ruby/object:Gem::Version
|
117
91
|
version: '0'
|
118
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
93
|
requirements:
|
121
|
-
- -
|
94
|
+
- - ">="
|
122
95
|
- !ruby/object:Gem::Version
|
123
96
|
version: '0'
|
124
97
|
requirements: []
|
125
98
|
rubyforge_project:
|
126
|
-
rubygems_version:
|
99
|
+
rubygems_version: 2.6.4
|
127
100
|
signing_key:
|
128
|
-
specification_version:
|
101
|
+
specification_version: 4
|
129
102
|
summary: I18n Lookup
|
130
103
|
test_files:
|
131
104
|
- spec/i18n_lookup_spec.rb
|
132
|
-
has_rdoc:
|
@@ -1,116 +0,0 @@
|
|
1
|
-
namespace :i18n do
|
2
|
-
desc "Find and list translation keys that do not exist in all locales"
|
3
|
-
task :missing_keys => :environment do
|
4
|
-
finder = MissingKeysFinder.new(I18n.backend)
|
5
|
-
finder.find_missing_keys
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
|
10
|
-
class MissingKeysFinder
|
11
|
-
|
12
|
-
def initialize(backend)
|
13
|
-
@backend = backend
|
14
|
-
self.load_config
|
15
|
-
self.load_translations
|
16
|
-
end
|
17
|
-
|
18
|
-
# Returns an array with all keys from all locales
|
19
|
-
def all_keys
|
20
|
-
I18n.backend.send(:translations).collect do |check_locale, translations|
|
21
|
-
collect_keys([], translations).sort
|
22
|
-
end.flatten.uniq
|
23
|
-
end
|
24
|
-
|
25
|
-
def find_missing_keys
|
26
|
-
output_available_locales
|
27
|
-
output_unique_key_stats(all_keys)
|
28
|
-
|
29
|
-
missing_keys = {}
|
30
|
-
all_keys.each do |key|
|
31
|
-
|
32
|
-
I18n.available_locales.each do |locale|
|
33
|
-
|
34
|
-
skip = false
|
35
|
-
ls = locale.to_s
|
36
|
-
if !@yaml[ls].nil?
|
37
|
-
@yaml[ls].each do |re|
|
38
|
-
if key.match(re)
|
39
|
-
skip = true
|
40
|
-
break
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
if !key_exists?(key, locale) && skip == false
|
46
|
-
if missing_keys[key]
|
47
|
-
missing_keys[key] << locale
|
48
|
-
else
|
49
|
-
missing_keys[key] = [locale]
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
output_missing_keys(missing_keys)
|
56
|
-
return missing_keys
|
57
|
-
end
|
58
|
-
|
59
|
-
def output_available_locales
|
60
|
-
puts "#{I18n.available_locales.size} #{I18n.available_locales.size == 1 ? 'locale' : 'locales'} available: #{I18n.available_locales.join(', ')}"
|
61
|
-
end
|
62
|
-
|
63
|
-
def output_missing_keys(missing_keys)
|
64
|
-
puts "#{missing_keys.size} #{missing_keys.size == 1 ? 'key is missing' : 'keys are missing'} from one or more locales:"
|
65
|
-
missing_keys.keys.sort.each do |key|
|
66
|
-
puts %|'\e[1;33m#{key}\e[0;0m': Missing from #{missing_keys[key].collect(&:inspect).join(', ')}; Value: '\e[1;34m#{I18n.t(key, :locale => :en)}\e[0;0m'|
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def output_unique_key_stats(keys)
|
71
|
-
number_of_keys = keys.size
|
72
|
-
puts "#{number_of_keys} #{number_of_keys == 1 ? 'unique key' : 'unique keys'} found."
|
73
|
-
end
|
74
|
-
|
75
|
-
def collect_keys(scope, translations)
|
76
|
-
full_keys = []
|
77
|
-
translations.to_a.each do |key, translations|
|
78
|
-
next if translations.nil?
|
79
|
-
|
80
|
-
new_scope = scope.dup << key
|
81
|
-
if translations.is_a?(Hash)
|
82
|
-
full_keys += collect_keys(new_scope, translations)
|
83
|
-
else
|
84
|
-
full_keys << new_scope.join('.')
|
85
|
-
end
|
86
|
-
end
|
87
|
-
return full_keys
|
88
|
-
end
|
89
|
-
|
90
|
-
# Returns true if key exists in the given locale
|
91
|
-
def key_exists?(key, locale)
|
92
|
-
I18n.locale = locale
|
93
|
-
I18n.translate(key, :raise => true)
|
94
|
-
return true
|
95
|
-
rescue I18n::MissingInterpolationArgument
|
96
|
-
return true
|
97
|
-
rescue I18n::MissingTranslationData
|
98
|
-
return false
|
99
|
-
end
|
100
|
-
|
101
|
-
def load_translations
|
102
|
-
# Make sure we’ve loaded the translations
|
103
|
-
I18n.backend.send(:init_translations)
|
104
|
-
end
|
105
|
-
|
106
|
-
def load_config
|
107
|
-
@yaml = {}
|
108
|
-
begin
|
109
|
-
@yaml = YAML.load_file(File.join(Rails.root, 'config', 'ignore_missing_keys.yml'))
|
110
|
-
rescue => e
|
111
|
-
STDERR.puts "No ignore_missing_keys.yml config file."
|
112
|
-
end
|
113
|
-
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|