i18n-tasks 0.6.3 → 0.7.0
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 +4 -4
- data/.travis.yml +3 -0
- data/Gemfile +2 -1
- data/README.md +80 -78
- data/bin/i18n-tasks +24 -30
- data/config/i18n-tasks.yml +87 -0
- data/config/locales/en.yml +95 -0
- data/i18n-tasks.gemspec +1 -0
- data/lib/i18n/tasks.rb +10 -0
- data/lib/i18n/tasks/base_task.rb +6 -2
- data/lib/i18n/tasks/command/collection.rb +18 -0
- data/lib/i18n/tasks/command/commander.rb +72 -0
- data/lib/i18n/tasks/command/commands/data.rb +73 -0
- data/lib/i18n/tasks/command/commands/eq_base.rb +20 -0
- data/lib/i18n/tasks/command/commands/health.rb +26 -0
- data/lib/i18n/tasks/command/commands/meta.rb +35 -0
- data/lib/i18n/tasks/command/commands/missing.rb +73 -0
- data/lib/i18n/tasks/command/commands/tree.rb +92 -0
- data/lib/i18n/tasks/command/commands/usages.rb +70 -0
- data/lib/i18n/tasks/command/commands/xlsx.rb +27 -0
- data/lib/i18n/tasks/command/dsl.rb +27 -0
- data/lib/i18n/tasks/command/dsl/cmd.rb +19 -0
- data/lib/i18n/tasks/command/dsl/cmd_opt.rb +19 -0
- data/lib/i18n/tasks/command/dsl/enum_opt.rb +26 -0
- data/lib/i18n/tasks/command/options/common.rb +48 -0
- data/lib/i18n/tasks/command/options/enum_opt.rb +44 -0
- data/lib/i18n/tasks/command/options/list_opt.rb +11 -0
- data/lib/i18n/tasks/command/options/locales.rb +47 -0
- data/lib/i18n/tasks/command/options/trees.rb +101 -0
- data/lib/i18n/tasks/command_error.rb +3 -0
- data/lib/i18n/tasks/commands.rb +22 -169
- data/lib/i18n/tasks/configuration.rb +1 -16
- data/lib/i18n/tasks/console_context.rb +1 -1
- data/lib/i18n/tasks/data.rb +13 -8
- data/lib/i18n/tasks/data/file_formats.rb +29 -18
- data/lib/i18n/tasks/data/file_system_base.rb +35 -4
- data/lib/i18n/tasks/data/router/conservative_router.rb +18 -11
- data/lib/i18n/tasks/data/tree/node.rb +5 -15
- data/lib/i18n/tasks/data/tree/nodes.rb +0 -3
- data/lib/i18n/tasks/data/tree/siblings.rb +32 -2
- data/lib/i18n/tasks/data/tree/traversal.rb +117 -96
- data/lib/i18n/tasks/google_translation.rb +25 -25
- data/lib/i18n/tasks/html_keys.rb +10 -0
- data/lib/i18n/tasks/key_pattern_matching.rb +1 -0
- data/lib/i18n/tasks/locale_list.rb +19 -0
- data/lib/i18n/tasks/missing_keys.rb +32 -33
- data/lib/i18n/tasks/plural_keys.rb +1 -1
- data/lib/i18n/tasks/reports/base.rb +4 -9
- data/lib/i18n/tasks/reports/spreadsheet.rb +5 -5
- data/lib/i18n/tasks/reports/terminal.rb +62 -38
- data/lib/i18n/tasks/scanners/base_scanner.rb +5 -4
- data/lib/i18n/tasks/slop_command.rb +27 -0
- data/lib/i18n/tasks/stats.rb +20 -0
- data/lib/i18n/tasks/string_interpolation.rb +14 -0
- data/lib/i18n/tasks/unused_keys.rb +0 -10
- data/lib/i18n/tasks/version.rb +1 -1
- data/spec/commands/data_commands_spec.rb +38 -0
- data/spec/commands/tree_commands_spec.rb +68 -0
- data/spec/fixtures/app/views/index.html.slim +1 -0
- data/spec/google_translate_spec.rb +5 -3
- data/spec/i18n_spec.rb +18 -0
- data/spec/i18n_tasks_spec.rb +8 -8
- data/spec/spec_helper.rb +3 -3
- data/spec/support/test_codebase.rb +4 -1
- data/spec/used_keys_spec.rb +7 -7
- data/templates/config/i18n-tasks.yml +2 -2
- metadata +48 -4
- data/lib/i18n/tasks/commands_base.rb +0 -107
- data/lib/i18n/tasks/fill_tasks.rb +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7b2e4af8b66aed1ff33eba3cb802322ceea57db
|
4
|
+
data.tar.gz: 951337877ce07c613b5765b609dd0c3508742a89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b04b6fbabcd0598b2473162142679e81ef5eec9301c3c9362bc44a81084517fbf8d254c1015b0b5dc5365261730550c1356db3cc7d57e56a78ff3a85be1e471
|
7
|
+
data.tar.gz: 2ecb5edaa048079936459dc1f8d607aafe441abb352e7ee0e8585c1a5e251336d8206cc0e7840a3a95a84de78963baafd181a46f779120322ef5736466bfbb35
|
data/.travis.yml
CHANGED
@@ -8,4 +8,7 @@ rvm:
|
|
8
8
|
env:
|
9
9
|
global:
|
10
10
|
- TRAVIS=1
|
11
|
+
# google translate api key:
|
11
12
|
- secure: Clln+r2rG6adnmVjS0zGMVHs1hOq58UPIqRE73xW3MPLOdozGUyIZ0RrAU2new1h4sqk/5HVwG5NSW7AsUJDGgkNCDx4saJbf/G+oKIity1zNxlHZu5ijZOZGyxYNzGGM4cb2OO6RS6lfzA6TFv2TQtw8DDfKjzG2gpuJOje8sU=
|
13
|
+
# codeclimate repo token:
|
14
|
+
- secure: Qz5xzCujPHN5jGZYiCcsZ73BN5DzJTQwDMuj0kJ+W2nBzGQuQDvADT0rHFsHOhdQ/epZe89pVL8wEbr5GaCZ+iZCt1JfasZpvyvCtwMUkPtjrLxpWwVKlH3u7xqAzyYj7Z8ru0VqHni19d6DPzAaNGyV3gaiI1pR6Y63Ux+msM0=
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,14 @@
|
|
1
|
-
# i18n-tasks [![Build Status][badge-travis]][travis] [![Coverage Status][badge-
|
1
|
+
# i18n-tasks [![Build Status][badge-travis]][travis] [![Coverage Status][badge-coverage]][coverage] [![Code Climate][badge-code-climate]][code-climate] [![Gemnasium][badge-gemnasium]][gemnasium]
|
2
2
|
|
3
3
|
i18n-tasks helps you find and manage missing and unused translations.
|
4
4
|
|
5
|
+
## What?
|
6
|
+
|
7
|
+
i18n-tasks scans calls such as `I18n.t('some.key')` and provides reports on key usage, missing, and unused keys.
|
8
|
+
i18n-tasks can also can pre-fill missing keys, including from Google Translate, and it can remove unused keys as well.
|
9
|
+
|
10
|
+
## Why?
|
11
|
+
|
5
12
|
The default approach to locale data management with gems such as [i18n][i18n-gem] is flawed.
|
6
13
|
If you use a key that does not exist, this will only blow up at runtime. Keys left over from removed code accumulate
|
7
14
|
in the resource files and introduce unnecessary overhead on the translators. Translation files can quickly turn to disarray.
|
@@ -18,16 +25,16 @@ i18n-tasks can be used with any project using [i18n][i18n-gem] (default in Rails
|
|
18
25
|
Add to Gemfile:
|
19
26
|
|
20
27
|
```ruby
|
21
|
-
gem 'i18n-tasks', '~> 0.
|
28
|
+
gem 'i18n-tasks', '~> 0.7.0'
|
22
29
|
```
|
23
30
|
|
24
|
-
Copy default [
|
31
|
+
Copy default [configuration file](#configuration) (optional):
|
25
32
|
|
26
33
|
```console
|
27
34
|
$ cp $(i18n-tasks gem-path)/templates/config/i18n-tasks.yml config/
|
28
35
|
```
|
29
36
|
|
30
|
-
Copy
|
37
|
+
Copy rspec test to test for missing and unused translations as part of the suite (optional):
|
31
38
|
|
32
39
|
```console
|
33
40
|
$ cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/
|
@@ -35,96 +42,97 @@ $ cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/
|
|
35
42
|
|
36
43
|
## Usage
|
37
44
|
|
38
|
-
Run `i18n-tasks` to get the list of tasks with short descriptions.
|
45
|
+
Run `i18n-tasks` to get the list of all the tasks with short descriptions.
|
39
46
|
|
40
|
-
|
41
|
-
$ i18n-tasks
|
42
|
-
Usage: i18n-tasks [command] [options]
|
43
|
-
-v, --version Print the version
|
44
|
-
-h, --help Display this help message.
|
47
|
+
### Check health
|
45
48
|
|
46
|
-
|
49
|
+
`i18n-tasks health` will tell you any keys are missing or not used:
|
47
50
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
translate-missing translate missing keys with Google Translate
|
54
|
-
add-missing add missing keys to the locales
|
55
|
-
normalize normalize translation data: sort and move to the right files
|
56
|
-
remove-unused remove unused keys
|
57
|
-
config display i18n-tasks configuration
|
58
|
-
xlsx-report save missing and unused translations to an Excel file
|
59
|
-
irb REPL session within i18n-tasks context
|
60
|
-
gem-path show path to the gem
|
51
|
+
```console
|
52
|
+
$ i18n-tasks health
|
53
|
+
```
|
54
|
+
|
55
|
+
### Add missing keys
|
61
56
|
|
62
|
-
|
57
|
+
Add missing keys with placeholders (base value or humanized key):
|
58
|
+
|
59
|
+
```console
|
60
|
+
$ i18n-tasks add-missing
|
63
61
|
```
|
64
62
|
|
65
|
-
|
63
|
+
Most tasks also accept arguments:
|
66
64
|
|
67
|
-
```
|
68
|
-
$ i18n-tasks
|
69
|
-
|
70
|
-
|
65
|
+
```console
|
66
|
+
$ i18n-tasks add-missing -v 'TRME %{value}' fr
|
67
|
+
$ i18n-tasks add-missing --help
|
68
|
+
Usage: i18n-tasks add_missing [options] [locale ...]
|
69
|
+
-l, --locales Comma-separated list of locale(s) to process. Default: all. Special: base.
|
71
70
|
-f, --format Output format: terminal-table, yaml, json, keys, inspect. Default: terminal-table.
|
71
|
+
-v, --value Value. Interpolates: %{value}, %{human_key}, %{value_or_human_key}. Default: %{value_or_human_key}
|
72
72
|
-h, --help Display this help message.
|
73
|
-
$ i18n-tasks data -fkeys en es fr
|
74
73
|
```
|
75
74
|
|
76
|
-
|
77
|
-
|
78
|
-
You can add missing values, generated from the key (for base locale) or copied from the base locale (for other locales).
|
79
|
-
To add missing values to the base locale only:
|
75
|
+
`i18n-tasks` also provides low-level composable tasks for fine-grained locale data manipulation. The above is equivalent to:
|
80
76
|
|
81
|
-
```
|
82
|
-
|
83
|
-
i18n-tasks add-missing base
|
84
|
-
# add-missing accepts a placeholder argument, with optional base_value interpolation
|
85
|
-
i18n-tasks add-missing -p 'PLEASE-TRANSLATE %{base_value}' fr
|
77
|
+
```console
|
78
|
+
$ i18n-tasks missing -fyaml fr | i18n-tasks tree-set-value 'TRME %{value}' | i18n-tasks data-merge
|
86
79
|
```
|
87
80
|
|
88
|
-
|
81
|
+
See command help for more information.
|
82
|
+
|
83
|
+
### Google Translate missing keys
|
89
84
|
|
90
85
|
Translate missing values with Google Translate ([more below on the API key](#translation-config)).
|
91
86
|
|
92
|
-
```
|
93
|
-
i18n-tasks translate-missing
|
87
|
+
```console
|
88
|
+
$ i18n-tasks translate-missing
|
94
89
|
# accepts from and locales options:
|
95
|
-
i18n-tasks translate-missing --from base es fr
|
90
|
+
$ i18n-tasks translate-missing --from base es fr
|
96
91
|
```
|
97
92
|
|
98
|
-
|
99
|
-
|
93
|
+
### Find usages
|
94
|
+
|
95
|
+
See where the keys are used with `i18n-tasks find`:
|
100
96
|
|
101
97
|
```bash
|
102
|
-
i18n-tasks
|
98
|
+
$ i18n-tasks find common.help
|
99
|
+
$ i18n-tasks find 'auth.*'
|
100
|
+
$ i18n-tasks find '{number,currency}.format.*'
|
103
101
|
```
|
104
102
|
|
105
|
-
|
103
|
+
<img width="437" height="129" src="https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-usages.png">
|
106
104
|
|
107
|
-
|
105
|
+
### Remove unused keys
|
108
106
|
|
109
107
|
```bash
|
110
|
-
i18n-tasks
|
111
|
-
i18n-tasks
|
112
|
-
i18n-tasks find '{number,currency}.format.*'
|
108
|
+
$ i18n-tasks unused
|
109
|
+
$ i18n-tasks remove-unused
|
113
110
|
```
|
114
111
|
|
115
|
-
|
112
|
+
These tasks will infer dynamic key usage such as `t("category.\#{category.name}")` by default.
|
113
|
+
Pass `-s` or `--strict` to disable this feature.
|
116
114
|
|
117
|
-
|
115
|
+
`i18n-tasks remove-unused` is roughly equivalent to:
|
118
116
|
|
119
117
|
```bash
|
120
|
-
i18n-tasks unused
|
121
|
-
i18n-tasks remove-unused
|
118
|
+
$ i18n-tasks unused -fyaml | i18n-tasks data-remove
|
122
119
|
```
|
123
120
|
|
124
|
-
|
125
|
-
Pass `-s` or `--strict` to disable this feature.
|
121
|
+
### Normalize data
|
126
122
|
|
127
|
-
|
123
|
+
Sort the keys:
|
124
|
+
|
125
|
+
```console
|
126
|
+
$ i18n-tasks normalize
|
127
|
+
```
|
128
|
+
|
129
|
+
Sort the keys, and move them to the respective files as defined by (`config.write`)[#multiple-locale-files]:
|
130
|
+
|
131
|
+
```console
|
132
|
+
$ i18n-tasks normalize -p
|
133
|
+
```
|
134
|
+
|
135
|
+
### Features
|
128
136
|
|
129
137
|
Relative keys (`t '.title'`) and plural keys (`key.{one,many,other,...}`) are fully supported.
|
130
138
|
Scope argument is supported, but only when it is the first keyword argument ([improvements welcome](/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb)):
|
@@ -344,15 +352,6 @@ translation:
|
|
344
352
|
|
345
353
|
`i18n-tasks irb` starts an IRB session in i18n-tasks context. Type `guide` for more information.
|
346
354
|
|
347
|
-
## RSpec integration
|
348
|
-
|
349
|
-
You might want to test for missing and unused translations as part of your test suite.
|
350
|
-
Install the spec file:
|
351
|
-
|
352
|
-
```console
|
353
|
-
$ cp $(i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/
|
354
|
-
```
|
355
|
-
|
356
355
|
### XLSX
|
357
356
|
|
358
357
|
Export missing and unused data to XLSX:
|
@@ -368,23 +367,26 @@ While i18n-tasks does not provide an HTML version of the report, you can add [on
|
|
368
367
|
|
369
368
|
## Add New Tasks
|
370
369
|
|
371
|
-
Tasks that come with the gem are defined in [lib/i18n/tasks/commands
|
370
|
+
Tasks that come with the gem are defined in [lib/i18n/tasks/command/commands](lib/i18n/tasks/command/commands).
|
372
371
|
|
373
|
-
|
372
|
+
Add a custom task like the ones defined by the gem:
|
374
373
|
|
375
374
|
```ruby
|
376
|
-
#
|
377
|
-
|
378
|
-
|
379
|
-
cmd :
|
380
|
-
|
375
|
+
# my_commands.rb
|
376
|
+
class MyCommands
|
377
|
+
include ::I18n::Tasks::Command::Collection
|
378
|
+
cmd :my_command, desc: 'my custom command'
|
379
|
+
def my_command(opts = {})
|
381
380
|
end
|
382
381
|
end
|
383
382
|
```
|
384
383
|
|
385
384
|
```yaml
|
386
385
|
# config/i18n-tasks.yml
|
387
|
-
<%
|
386
|
+
<%
|
387
|
+
require 'my_commands'
|
388
|
+
I18n::Tasks::Commands.send :include, MyCommands
|
389
|
+
%>
|
388
390
|
```
|
389
391
|
|
390
392
|
Run with:
|
@@ -396,8 +398,8 @@ $ i18n-tasks my-task
|
|
396
398
|
[MIT license]: /LICENSE.txt
|
397
399
|
[travis]: https://travis-ci.org/glebm/i18n-tasks
|
398
400
|
[badge-travis]: http://img.shields.io/travis/glebm/i18n-tasks.svg
|
399
|
-
[
|
400
|
-
[badge-
|
401
|
+
[coverage]: https://codeclimate.com/github/glebm/i18n-tasks
|
402
|
+
[badge-coverage]: https://img.shields.io/codeclimate/coverage/github/glebm/i18n-tasks.svg
|
401
403
|
[gemnasium]: https://gemnasium.com/glebm/i18n-tasks
|
402
404
|
[badge-gemnasium]: https://gemnasium.com/glebm/i18n-tasks.svg
|
403
405
|
[code-climate]: https://codeclimate.com/github/glebm/i18n-tasks
|
data/bin/i18n-tasks
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
|
+
# prevent i18n gem warning
|
5
|
+
require 'i18n'
|
6
|
+
i18n_gem_config = I18n.config
|
7
|
+
if i18n_gem_config.respond_to?(:enforce_available_locales=) && i18n_gem_config.enforce_available_locales.nil?
|
8
|
+
i18n_gem_config.enforce_available_locales = true
|
9
|
+
end
|
10
|
+
|
4
11
|
require 'i18n/tasks'
|
5
12
|
require 'i18n/tasks/commands'
|
6
13
|
require 'slop'
|
@@ -14,47 +21,34 @@ err = proc { |message, exit_code|
|
|
14
21
|
exit exit_code
|
15
22
|
}
|
16
23
|
|
17
|
-
command = nil
|
18
24
|
begin
|
25
|
+
ran = false
|
26
|
+
commander = ::I18n::Tasks::Commands
|
27
|
+
slop_adapter = ::I18n::Tasks::SlopCommand
|
19
28
|
args = ARGV.dup
|
20
29
|
args = ['--help'] if args.empty?
|
21
|
-
|
30
|
+
Slop.parse(args, help: true) do
|
22
31
|
on('-v', '--version', 'Print the version') {
|
23
32
|
puts I18n::Tasks::VERSION
|
24
33
|
exit
|
25
34
|
}
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
35
|
+
commander.cmds.each do |name, attr|
|
36
|
+
slop_dsl = slop_adapter.slop_command(name, attr) { |name, opts, args|
|
37
|
+
begin
|
38
|
+
ran = true
|
39
|
+
commander.run_command name, slop_adapter.parse_slop_opts_args(opts, args)
|
40
|
+
rescue Errno::EPIPE
|
41
|
+
# ignore Errno::EPIPE which is throw when pipe breaks, e.g.:
|
42
|
+
# i18n-tasks missing | head
|
43
|
+
exit 1
|
32
44
|
end
|
33
|
-
|
45
|
+
}
|
46
|
+
instance_exec &slop_dsl
|
34
47
|
end
|
35
48
|
end
|
36
49
|
rescue Slop::Error => e
|
37
50
|
err.call(e.message, 64)
|
38
51
|
end
|
39
52
|
|
40
|
-
|
41
|
-
|
42
|
-
meth = command[0]
|
43
|
-
opts = command[1].to_hash.reject { |k, v| v.nil? }
|
44
|
-
args = command[2]
|
45
|
-
begin
|
46
|
-
if opts.empty? && args.empty?
|
47
|
-
cmd.log_verbose "run #{meth.tr('_', '-')} without arguments"
|
48
|
-
cmd.send meth
|
49
|
-
else
|
50
|
-
opts = opts.merge(arguments: args) unless args.empty?
|
51
|
-
cmd.log_verbose "run #{meth.tr('_', '-')} with #{opts.map { |k, v| "#{k}=#{v}" } * ' '}"
|
52
|
-
cmd.send meth, opts
|
53
|
-
end
|
54
|
-
rescue Errno::EPIPE
|
55
|
-
# ignore Errno::EPIPE which is throw when pipe breaks, e.g.:
|
56
|
-
# i18n-tasks missing | head
|
57
|
-
end
|
58
|
-
else
|
59
|
-
err.call("Command unknown: #{ARGV[0]}", 64) if ARGV[0]
|
60
|
-
end
|
53
|
+
|
54
|
+
err.call("Command unknown: #{args[0]}", 64) if !ran && args[0]
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# i18n-tasks works on itself! this is the internal config
|
2
|
+
|
3
|
+
base_locale: en
|
4
|
+
## i18n-tasks detects locales automatically from the existing locale files
|
5
|
+
## uncomment to set locales explicitly
|
6
|
+
# locales: [en, es, fr]
|
7
|
+
|
8
|
+
# Read and write locale data
|
9
|
+
data:
|
10
|
+
## by default, translation data are read from the file system, or you can provide a custom data adapter
|
11
|
+
# adapter: I18n::Tasks::Data::FileSystem
|
12
|
+
|
13
|
+
# Locale files to read from
|
14
|
+
read:
|
15
|
+
- config/locales/%{locale}.yml
|
16
|
+
# - config/locales/*.%{locale}.yml
|
17
|
+
# - config/locales/**/*.%{locale}.yml
|
18
|
+
|
19
|
+
# key => file routes, matched top to bottom
|
20
|
+
write:
|
21
|
+
## E.g., write devise and simple form keys to their respective files
|
22
|
+
# - ['{devise, simple_form}.*', 'config/locales/\1.%{locale.yml}']
|
23
|
+
# Catch-all
|
24
|
+
- config/locales/%{locale}.yml
|
25
|
+
# `i18n-tasks normalize -p` will force move the keys according to these rules
|
26
|
+
|
27
|
+
# YAML / JSON serializer options, passed to load / dump / parse / serialize
|
28
|
+
yaml:
|
29
|
+
write:
|
30
|
+
## do not wrap lines at 80 characters (override default)
|
31
|
+
line_width: 96
|
32
|
+
json:
|
33
|
+
write:
|
34
|
+
# pretty print JSON
|
35
|
+
indent: ' '
|
36
|
+
space: ' '
|
37
|
+
object_nl: "\n"
|
38
|
+
array_nl: "\n"
|
39
|
+
|
40
|
+
# Find translate calls
|
41
|
+
search:
|
42
|
+
## Default scanner finds t() and I18n.t() calls
|
43
|
+
# scanner: I18n::Tasks::Scanners::PatternWithScopeScanner
|
44
|
+
|
45
|
+
## Paths to search in, passed to File.find
|
46
|
+
paths:
|
47
|
+
- lib/
|
48
|
+
|
49
|
+
## Root for resolving relative keys (default)
|
50
|
+
# relative_roots:
|
51
|
+
# - app/views
|
52
|
+
|
53
|
+
## File.fnmatch patterns to exclude from search (default)
|
54
|
+
# exclude: ["*.jpg", "*.png", "*.gif", "*.svg", "*.ico", "*.eot", "*.ttf", "*.woff", "*.pdf"]
|
55
|
+
|
56
|
+
## Or, File.fnmatch patterns to include
|
57
|
+
# include: ["*.rb", "*.html.slim"]
|
58
|
+
|
59
|
+
## Lines starting with # or / are ignored by default
|
60
|
+
# ignore_lines:
|
61
|
+
# - "^\\s*[#/](?!\\si18n-tasks-use)"
|
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
|
+
|
68
|
+
## Consider these keys not missing
|
69
|
+
# ignore_missing:
|
70
|
+
# - pagination.views.*
|
71
|
+
|
72
|
+
## Consider these keys used
|
73
|
+
# ignore_unused:
|
74
|
+
# - 'simple_form.{yes,no}'
|
75
|
+
# - 'simple_form.{placeholders,hints,labels}.*'
|
76
|
+
# - 'simple_form.{error_notification,required}.:'
|
77
|
+
|
78
|
+
## Exclude these keys from `i18n-tasks eq-base' report
|
79
|
+
# ignore_eq_base:
|
80
|
+
# all:
|
81
|
+
# - common.ok
|
82
|
+
# fr,es:
|
83
|
+
# - common.brand
|
84
|
+
|
85
|
+
## Exclude these keys from all of the reports
|
86
|
+
# ignore:
|
87
|
+
# - kaminari.*
|
@@ -0,0 +1,95 @@
|
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
i18n_tasks:
|
4
|
+
common:
|
5
|
+
locale: Locale
|
6
|
+
type: Type
|
7
|
+
key: Key
|
8
|
+
value: Value
|
9
|
+
base_value: Base Value
|
10
|
+
details: Details
|
11
|
+
continue_q: Continue?
|
12
|
+
n_more: "%{count} more"
|
13
|
+
google_translate:
|
14
|
+
errors:
|
15
|
+
no_results: Google Translate returned no results. Make sure billing information is set at
|
16
|
+
https://code.google.com/apis/console.
|
17
|
+
remove_unused:
|
18
|
+
confirm:
|
19
|
+
one: One translations will be removed from %{locales}.
|
20
|
+
other: "%{count} translation will be removed from %{locales}."
|
21
|
+
removed: Removed %{count} keys
|
22
|
+
noop: No unused keys to remove
|
23
|
+
translate_missing:
|
24
|
+
translated: Translated %{count} keys
|
25
|
+
add_missing:
|
26
|
+
added: Added %{count} keys
|
27
|
+
unused:
|
28
|
+
none: Every translation is in use.
|
29
|
+
missing:
|
30
|
+
none: No translations are missing.
|
31
|
+
usages:
|
32
|
+
none: No key usages found.
|
33
|
+
health:
|
34
|
+
no_keys_detected: No keys detected. Check data.read in config/i18n-tasks.yml.
|
35
|
+
data_stats:
|
36
|
+
title: Forest (%{locales})
|
37
|
+
text: has %{key_count} keys across %{locale_count} locales. On average, values are %{value_chars_avg}
|
38
|
+
characters long, keys have %{key_segments_avg} segments, a locale has %{per_locale_avg} keys.
|
39
|
+
text_single_locale: has %{key_count} keys in total. On average, values are %{value_chars_avg}
|
40
|
+
characters long, keys have %{key_segments_avg} segments.
|
41
|
+
cmd:
|
42
|
+
encourage:
|
43
|
+
- Good job!
|
44
|
+
- Well done!
|
45
|
+
- Perfect!
|
46
|
+
desc:
|
47
|
+
normalize: 'normalize translation data: sort and move to the right files'
|
48
|
+
data: show locale data
|
49
|
+
data_merge: merge locale data with trees
|
50
|
+
data_write: replace locale data with tree
|
51
|
+
data_remove: remove keys present in tree from data
|
52
|
+
health: is everything OK?
|
53
|
+
find: show where keys are used in the code
|
54
|
+
unused: show unused translations
|
55
|
+
missing: show missing translations
|
56
|
+
translate_missing: translate missing keys with Google Translate
|
57
|
+
add_missing: add missing keys to locale data
|
58
|
+
remove_unused: remove unused keys
|
59
|
+
eq_base: show translations equal to base value
|
60
|
+
tree_merge: merge trees
|
61
|
+
tree_filter: filter tree by key pattern
|
62
|
+
tree_rename_key: rename tree node
|
63
|
+
tree_subtract: tree A minus the keys in tree B
|
64
|
+
tree_set_value: set values of keys, optionally match a pattern
|
65
|
+
tree_convert: convert tree between formats
|
66
|
+
config: display i18n-tasks configuration
|
67
|
+
gem_path: show path to the gem
|
68
|
+
irb: start REPL session within i18n-tasks context
|
69
|
+
args:
|
70
|
+
default_text: 'Default: %{value}'
|
71
|
+
desc:
|
72
|
+
out_format: 'Output format: %{valid_text}. %{default_text}.'
|
73
|
+
data_format: 'Data format: %{valid_text}. %{default_text}.'
|
74
|
+
keys: List of keys separated by commas (,), spaces, or newlines.
|
75
|
+
locales_filter: 'Comma-separated list of locale(s) to process. Default: all. Special: base.'
|
76
|
+
locale: 'Locale. Default: base'
|
77
|
+
confirm: Confirm automatically
|
78
|
+
nostdin: Do not read from stdin
|
79
|
+
strict: Do not infer dynamic key usage such as `t("category.\#{category.name}")`
|
80
|
+
missing_types: 'Filter by types: %{valid}.'
|
81
|
+
key_pattern: Filter by key pattern (e.g. 'common.*')
|
82
|
+
value: 'Value. Interpolates: %{value}, %{human_key}, %{value_or_human_key}'
|
83
|
+
pattern_router: 'Use pattern router: keys moved per config data.write'
|
84
|
+
enum_opt:
|
85
|
+
desc:
|
86
|
+
default: "%{valid_text}. %{default_text}"
|
87
|
+
invalid_one: "%{invalid} is not one of: %{valid}."
|
88
|
+
invalid_list: "%{invalid} is not in: %{valid}."
|
89
|
+
errors:
|
90
|
+
pass_forest: Pass locale forest
|
91
|
+
invalid_locale: Invalid locale %{invalid}
|
92
|
+
invalid_format: 'Unknown format %{invalid}. Valid: %{valid}.'
|
93
|
+
invalid_missing_type:
|
94
|
+
one: 'Unknown type %{invalid}. Valid: %{valid}.'
|
95
|
+
other: 'Unknown types: %{invalid}. Valid: %{valid}.'
|