i18n-tasks 0.6.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +7 -0
- data/README.md +10 -4
- data/i18n-tasks.gemspec +1 -1
- data/lib/i18n/tasks/commands.rb +10 -1
- data/lib/i18n/tasks/commands_base.rb +4 -2
- data/lib/i18n/tasks/data.rb +6 -0
- data/lib/i18n/tasks/data/file_formats.rb +8 -0
- data/lib/i18n/tasks/key_pattern_matching.rb +1 -1
- data/lib/i18n/tasks/used_keys.rb +6 -1
- data/lib/i18n/tasks/version.rb +1 -1
- data/templates/config/i18n-tasks.yml +6 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f361cd15dc7c4dbe60aedba3245481fb4180b91e
|
4
|
+
data.tar.gz: 5c1fa95a09f2cf826c12eb913145f91e2906758a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db244b5be78460bac7f310996b389fd71296a788509700d07ae86b2f4ac68e920b70dc1293febebba07e5b7871a4c4b42c3856ec042fdbd9e64d2a13a1e71624
|
7
|
+
data.tar.gz: 24a7dff3fb48aa9d4b8371143669a491d079bbffc1630a97964607627293b7ae70a9576d4dda4241dbf9b11f8eea44a6f1c7b697cb3c9910f28a77a9dbd54301
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 0.6.2
|
2
|
+
|
3
|
+
* New task to show locale data: `i18n-tasks data`
|
4
|
+
* New output format: `keys`, e.g. `i18n-tasks data -fkeys`
|
5
|
+
* Fix an issue with a top-level dynamic key breaking unused detection [#75](https://github.com/glebm/i18n-tasks/issues/75)
|
6
|
+
* Document [magic comment hints](https://github.com/glebm/i18n-tasks#fine-tuning)
|
7
|
+
|
1
8
|
## 0.6.1
|
2
9
|
|
3
10
|
* Fix Google Translate issue with plural keys and missing billing info error
|
data/README.md
CHANGED
@@ -11,14 +11,14 @@ It can also pre-fill missing keys, including from Google Translate, and it can r
|
|
11
11
|
|
12
12
|
i18n-tasks can be used with any project using [i18n][i18n-gem] (default in Rails), or similar, even if it isn't ruby.
|
13
13
|
|
14
|
-
<img width="
|
14
|
+
<img width="539" height="331" src="https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-tasks.png">
|
15
15
|
|
16
16
|
## Installation
|
17
17
|
|
18
18
|
Add to Gemfile:
|
19
19
|
|
20
20
|
```ruby
|
21
|
-
gem 'i18n-tasks', '~> 0.6.
|
21
|
+
gem 'i18n-tasks', '~> 0.6.2'
|
22
22
|
```
|
23
23
|
|
24
24
|
|
@@ -267,8 +267,14 @@ See this basic [pattern scanner](/lib/i18n/tasks/scanners/pattern_scanner.rb) fo
|
|
267
267
|
|
268
268
|
### Fine-tuning
|
269
269
|
|
270
|
-
|
271
|
-
|
270
|
+
Add hints to static analysis with magic comment hints (lines starting with `(#|/) i18n-tasks-use` by default):
|
271
|
+
|
272
|
+
```ruby
|
273
|
+
# i18n-tasks-use t('activerecord.models.user') # let i18n-tasks know the key is used
|
274
|
+
User.model_name.human
|
275
|
+
```
|
276
|
+
|
277
|
+
You can also explicitly ignore keys appearing in locale files:
|
272
278
|
|
273
279
|
```yaml
|
274
280
|
# config/i18n-tasks.yml
|
data/i18n-tasks.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.version = I18n::Tasks::VERSION
|
9
9
|
s.authors = ['glebm']
|
10
10
|
s.email = ['glex.spb@gmail.com']
|
11
|
-
s.summary = %q{Manage
|
11
|
+
s.summary = %q{Manage localization and translation with the awesome power of static analysis}
|
12
12
|
s.description = %q{
|
13
13
|
i18n-tasks helps you find and manage missing and unused translations.
|
14
14
|
|
data/lib/i18n/tasks/commands.rb
CHANGED
@@ -17,7 +17,7 @@ module I18n::Tasks
|
|
17
17
|
},
|
18
18
|
format: proc {
|
19
19
|
on '-f', :format=,
|
20
|
-
|
20
|
+
"Output format: #{VALID_TREE_FORMATS * ', '}. Default: terminal-table.",
|
21
21
|
{default: 'terminal-table', argument: true, optional: false}
|
22
22
|
}
|
23
23
|
}
|
@@ -61,6 +61,15 @@ module I18n::Tasks
|
|
61
61
|
print_locale_tree i18n.used_tree(key_filter: opt[:filter].presence, source_locations: true), opt, :used_keys
|
62
62
|
end
|
63
63
|
|
64
|
+
desc 'show locale data'
|
65
|
+
opts do
|
66
|
+
instance_exec &OPT[:locale]
|
67
|
+
instance_exec &OPT[:format]
|
68
|
+
end
|
69
|
+
cmd :data do |opt = {}|
|
70
|
+
parse_locales! opt
|
71
|
+
print_locale_tree i18n.data_forest(opt[:locales]), opt
|
72
|
+
end
|
64
73
|
|
65
74
|
desc 'translate missing keys with Google Translate'
|
66
75
|
opts do
|
@@ -27,7 +27,7 @@ module I18n::Tasks
|
|
27
27
|
end
|
28
28
|
|
29
29
|
|
30
|
-
VALID_TREE_FORMATS = %w(terminal-table yaml json inspect)
|
30
|
+
VALID_TREE_FORMATS = %w(terminal-table yaml json keys inspect)
|
31
31
|
|
32
32
|
def print_locale_tree(tree, opt, version = :show_tree)
|
33
33
|
format = opt[:format] || VALID_TREE_FORMATS.first
|
@@ -37,7 +37,9 @@ module I18n::Tasks
|
|
37
37
|
terminal_report.send(version, tree)
|
38
38
|
when 'inspect'
|
39
39
|
puts tree.inspect
|
40
|
-
|
40
|
+
when 'keys'
|
41
|
+
puts tree.key_names(root: true)
|
42
|
+
when *i18n.data.adapter_names.map(&:to_s)
|
41
43
|
puts i18n.data.adapter_dump tree, i18n.data.adapter_by_name(format)
|
42
44
|
end
|
43
45
|
end
|
data/lib/i18n/tasks/data.rb
CHANGED
@@ -17,6 +17,10 @@ module I18n
|
|
17
17
|
self.class.adapter_by_name(path)
|
18
18
|
end
|
19
19
|
|
20
|
+
def adapter_names
|
21
|
+
self.class.adapter_names
|
22
|
+
end
|
23
|
+
|
20
24
|
def adapter_dump(tree, adapter_info)
|
21
25
|
adapter_name, adapter_pattern, adapter = adapter_info
|
22
26
|
adapter_options = (config[adapter_name] || {})[:write]
|
@@ -51,6 +55,10 @@ module I18n
|
|
51
55
|
} or raise CommandError.new("Adapter not found for #{path}. Registered adapters: #{@fn_patterns.inspect}")
|
52
56
|
end
|
53
57
|
|
58
|
+
def adapter_names
|
59
|
+
@fn_patterns.map(&:first)
|
60
|
+
end
|
61
|
+
|
54
62
|
def adapter_by_name(name)
|
55
63
|
name = name.to_s
|
56
64
|
@fn_patterns.detect { |(adapter_name, _pattern, _adapter)|
|
@@ -33,7 +33,7 @@ module I18n::Tasks::KeyPatternMatching
|
|
33
33
|
def key_match_pattern(k)
|
34
34
|
@key_match_pattern ||= {}
|
35
35
|
@key_match_pattern[k] ||= begin
|
36
|
-
"#{k.gsub(KEY_INTERPOLATION_RE, '
|
36
|
+
"#{k.gsub(KEY_INTERPOLATION_RE, ':')}#{':' if k.end_with?('.')}"
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
data/lib/i18n/tasks/used_keys.rb
CHANGED
@@ -44,7 +44,12 @@ module I18n::Tasks
|
|
44
44
|
# keys in the source that end with a ., e.g. t("category.#{cat.i18n_key}") or t("category." + category.key)
|
45
45
|
def expr_key_re
|
46
46
|
@expr_key_re ||= begin
|
47
|
-
patterns = used_key_names.select { |k| key_expression?(k) }.map { |k|
|
47
|
+
patterns = used_key_names.select { |k| key_expression?(k) }.map { |k|
|
48
|
+
pattern = key_match_pattern(k)
|
49
|
+
# disallow patterns with no keys
|
50
|
+
next if pattern =~ /\A(:\.)*:\z/
|
51
|
+
pattern
|
52
|
+
}.compact
|
48
53
|
compile_key_pattern "{#{patterns * ','}}"
|
49
54
|
end
|
50
55
|
end
|
data/lib/i18n/tasks/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# i18n-tasks
|
1
|
+
# i18n-tasks finds and manages missing and unused translations ⚙ https://github.com/glebm/i18n-tasks
|
2
2
|
|
3
3
|
base_locale: en
|
4
4
|
## i18n-tasks detects locales automatically from the existing locale files
|
@@ -60,6 +60,11 @@ search:
|
|
60
60
|
# ignore_lines:
|
61
61
|
# - "^\\s*[#/](?!\\si18n-tasks-use)"
|
62
62
|
|
63
|
+
## Google Translate
|
64
|
+
# translation:
|
65
|
+
# # Get an API key and set billing info at https://code.google.com/apis/console to use Google Translate
|
66
|
+
# api_key: "AbC-dEf5"
|
67
|
+
|
63
68
|
## Consider these keys not missing
|
64
69
|
# ignore_missing:
|
65
70
|
# - pagination.views.*
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n-tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erubis
|
@@ -292,8 +292,7 @@ rubyforge_project:
|
|
292
292
|
rubygems_version: 2.2.2
|
293
293
|
signing_key:
|
294
294
|
specification_version: 4
|
295
|
-
summary: Manage
|
296
|
-
analysis — Edit
|
295
|
+
summary: Manage localization and translation with the awesome power of static analysis
|
297
296
|
test_files:
|
298
297
|
- spec/conservative_router_spec.rb
|
299
298
|
- spec/file_system_data_spec.rb
|