i18n-tasks 0.3.0.rc1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79c771676a7ab2418350137799e74f5cfe9a84c9
4
- data.tar.gz: fa7170a9f5aa0f0a557b87499c48a393ebf47a81
3
+ metadata.gz: aa70f1185066cd61c8e5caf67517f50a157e8edd
4
+ data.tar.gz: bf73f9deb48f10a6c7731fe74cb7f4fcd0da1e7c
5
5
  SHA512:
6
- metadata.gz: b9af27eac0d3d7e2c68154a5b21f9b1aa3bd1d29940cceced793c57fe0263346cb20c5e3a9f5faf2ecb0bc8160e561b7b566e40b5634e934782b973c4bfb451d
7
- data.tar.gz: 133cf042e3d976e3e6fc8a670428c2b91743e0abfba53c58bdf5d67e6c8511b61bd97ae5c5ca5d231e81cb5a6db536e01e7ca017d8e8f4343f90d682bad8fb62
6
+ metadata.gz: 452232becc66b4aabbb8e17af2fabe95b2ceb0004e7a461fb73a58bb2b24d323d2222c8b45d44da7d8090ab14ac62bce8cb76de88e46ee811860cab0c3668f89
7
+ data.tar.gz: b4c51a6b8a07fb81ceea48dcbd6ddbf0396d3f7027fd6e5ef5a53ed17cf81ed2b74dbb333bb760594db933a8604c0c9c2e6b49abe55584cad026537998e92e4f
data/CHANGES.md CHANGED
@@ -1,4 +1,4 @@
1
- ## v0.3.0 (unreleased)
1
+ ## v0.3.0
2
2
 
3
3
  * i18n-tasks provides a binary instead of rake tasks now (though the tasks are still there for now).
4
4
 
data/README.md CHANGED
@@ -3,23 +3,23 @@
3
3
 
4
4
  Tasks to manage translations in ruby applications using I18n.
5
5
 
6
- ![i18n-screenshot](https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-tasks.gif "i18n-tasks output screenshot")
6
+ ![i18n-screenshot](https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-tasks.png "i18n-tasks output screenshot")
7
7
 
8
8
  ## Installation
9
9
 
10
10
  1. Add to Gemfile:
11
11
 
12
- ```ruby
13
- gem 'i18n-tasks', '~> 0.3.0'
14
- ```
12
+ ```ruby
13
+ gem 'i18n-tasks', '~> 0.3.0'
14
+ ```
15
15
 
16
16
  2. Create a config file at `config/i18n-tasks.yml`:
17
17
 
18
- ```yaml
19
- # config/i18n-tasks.yml
20
- base_locale: en
21
- locales: [es, fr]
22
- ```
18
+ ```yaml
19
+ # config/i18n-tasks.yml
20
+ base_locale: en
21
+ locales: [es, fr]
22
+ ```
23
23
 
24
24
  ## Usage
25
25
 
@@ -46,39 +46,49 @@ Available commands:
46
46
  See `<command> --help` for more information on a specific command.
47
47
  ```
48
48
 
49
- There are reports for missing and unused translations.
50
- i18n-tasks can add missing keys to the locale data, and it can also fill untranslated values.
49
+ There are reports for `missing` and `unused` translations:
50
+
51
+ ```bash
52
+ i18n-tasks missing
53
+ i18n-tasks unused
54
+ ```
51
55
 
56
+ Add missing values, generated from the key (for base locale) or copied from the base locale (for other locales).
52
57
 
53
- Whenever you can pass locales as arguments, you can use special values `base` and `all`.
54
- Add placeholders for missing keys to the base locale only:
58
+ To add missing values to the base locale only:
55
59
 
56
60
  ```bash
57
- i18n-tasks add-missing[base]
61
+ # locales argument always accepts `base` and `all` as special values
62
+ i18n-tasks add-missing -l base
58
63
  ```
59
64
 
60
- Prefill empty translations using Google Translate ([more below on the API key](#translation-config)).
65
+ Translate missing values with Google Translate ([more below on the API key](#translation-config)).
61
66
 
62
67
  ```bash
63
68
  i18n-tasks translate-missing
64
- # this task and the ones below can also accept specific locales:
65
- i18n-tasks translate-missing -l es,de
69
+ # accepts from and locales options:
70
+ i18n-tasks translate-missing -f base -l es,fr
66
71
  ```
67
72
 
68
- Sort the keys and write them to their respective files:
73
+ Sort the keys and write them to their respective files with `normalize`.
74
+ This always happens on `add-missing` and `translate-missing`.
69
75
 
70
76
  ```bash
71
- # always happens on add-missing or translate-missing
72
77
  i18n-tasks normalize
73
78
  ```
74
79
 
75
- Unused report will detect pattern translations and not report them, e.g.:
80
+ See exactly where the keys are used with `find`:
76
81
 
77
- ```ruby
78
- t 'category.' + category.key # all 'category.*' keys are considered used
79
- t "category.#{category.key}.name" # all 'category.*.name' keys are considered used
82
+ ```bash
83
+ # Show all usages of all keys
84
+ i18n-tasks find
85
+ # Filter by a key pattern
86
+ i18n-tasks find 'auth.*'
87
+ i18n-tasks find '{number,currency}.format.*'
80
88
  ```
81
89
 
90
+ ![i18n-screenshot](https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-usages.png "i18n-tasks find output screenshot")
91
+
82
92
  Relative keys (`t '.title'`) and plural keys (key.one/many/other/etc) are fully supported.
83
93
 
84
94
  Scope argument is supported, but only when it is the first keyword argument ([this](/lib/i18n/tasks/scanners/pattern_with_scope_scanner.rb) can be improved):
@@ -90,16 +100,23 @@ t :invalid, scope: [:auth, :password], attempts: 5
90
100
  t :invalid, attempts: 5, scope: [:auth, :password]
91
101
  ```
92
102
 
103
+ Unused report will detect pattern translations and not report them, e.g.:
104
+
105
+ ```ruby
106
+ t 'category.' + category.key # all 'category.*' keys are considered used
107
+ t "category.#{category.key}.name" # all 'category.*.name' keys are considered used
108
+ ```
109
+
93
110
  Translation data storage, key usage search, and other [settings](#configuration) are compatible with Rails by default.
94
111
 
95
112
  ## Configuration
96
113
 
97
114
  Configuration is read from `config/i18n-tasks.yml` or `config/i18n-tasks.yml.erb`.
98
- See current configuration with `i18n-tasks config`.
115
+ Inspect configuration with `i18n-tasks config`.
99
116
 
100
117
  ### Locales
101
118
 
102
- By default, `i18n-tasks` will read `I18n.default_locale` and `I18n.available_locales`.
119
+ By default, i18n-tasks will read `I18n.default_locale` and `I18n.available_locales`.
103
120
  However, i18n-tasks does not load application environment by default,
104
121
  so it is recommended to set locale settings explicitly:
105
122
 
@@ -111,10 +128,12 @@ locales: [es, fr]
111
128
 
112
129
  ### Storage
113
130
 
131
+ The default data adapter supports YAML and JSON files.
132
+
114
133
  ```yaml
115
134
  # i18n data storage
116
135
  data:
117
- # The default file adapter supports YAML and JSON files. You can provide a custom class name here.
136
+ # file_system is the default adapter, you can provide a custom class name here:
118
137
  adapter: file_system
119
138
  # a list of file globs to read from per-locale
120
139
  read:
@@ -130,7 +149,7 @@ data:
130
149
  - 'config/locales/%{locale}.yml' # path is short for ['*', path]
131
150
  ```
132
151
 
133
- Key matching syntax:
152
+ #### Key pattern syntax
134
153
 
135
154
  | syntax | description |
136
155
  |:------------:|:----------------------------------------------------------|
@@ -151,17 +170,6 @@ data:
151
170
 
152
171
  ### Usage search
153
172
 
154
- Inspect all the usages with:
155
-
156
- ```bash
157
- i18n-tasks find
158
- # Filter by a key pattern
159
- i18n-tasks find 'auth.*
160
- i18n-tasks find '{number,currency}.format.*'
161
- ```
162
-
163
- ![i18n-screenshot](https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-usages.png "i18n-tasks find output screenshot")
164
-
165
173
 
166
174
  Configure usage search in `config/i18n-tasks.yml`:
167
175
 
@@ -196,7 +204,7 @@ relative_roots:
196
204
  ```
197
205
 
198
206
  It is also possible to use a custom key usage scanner by setting `search.scanner` to a class name.
199
- See [the default pattern scanner](/lib/i18n/tasks/scanners/pattern_scanner.rb) for reference.
207
+ See this basic [pattern scanner](/lib/i18n/tasks/scanners/pattern_scanner.rb) for reference.
200
208
 
201
209
 
202
210
  ### Fine-tuning
Binary file
data/i18n-tasks.gemspec CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |s|
24
24
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
25
25
  s.require_paths = ['lib']
26
26
 
27
- s.add_dependency 'rake'
28
27
  s.add_dependency 'erubis'
29
28
  s.add_dependency 'activesupport'
30
29
  s.add_dependency 'easy_translate', '>= 0.4.0'
@@ -9,8 +9,8 @@ module I18n::Tasks
9
9
 
10
10
  desc 'show missing translations'
11
11
  opts do
12
- on '-l', :locales=, 'Filter by locale', as: Array, delimiter: /[+:,]/, default: 'all'
13
- on '-t', :types, 'Filter by type (types: missing_from_base, eq_base, missing_from_locale)', as: Array, delimiter: /[+:,]/
12
+ on '-l', :locales=, 'Filter by locale', as: Array, delimiter: /[+:,]/, default: 'all', argument: true, optional: false
13
+ on '-t', :types, 'Filter by type (types: missing_from_base, eq_base, missing_from_locale)', as: Array, delimiter: /[+:,]/, argument: true, optional: false
14
14
  end
15
15
  cmd :missing do |opt = {}|
16
16
  opt[:locales] = locales_opt(opt[:locales])
@@ -24,8 +24,8 @@ module I18n::Tasks
24
24
 
25
25
  desc 'translate missing keys with Google Translate'
26
26
  opts do
27
- on '-l', :locales, 'Only specified locales', as: Array, delimiter: /[+:,]/
28
- on '-f', :from, 'Locale to translate from (default: base)', default: 'base'
27
+ on '-l', :locales, 'Only specified locales', as: Array, delimiter: /[+:,]/, default: 'all', argument: true, optional: false
28
+ on '-f', :from, 'Locale to translate from (default: base)', default: 'base', argument: true, optional: false
29
29
  end
30
30
  cmd :translate_missing do |opt = {}|
31
31
  opt[:from] = base_locale if opt[:from].blank? || opt[:from] == 'base'
@@ -35,8 +35,8 @@ module I18n::Tasks
35
35
 
36
36
  desc 'add missing keys to the locales'
37
37
  opts do
38
- on '-p', :placeholder, 'Value for empty keys (default: base value or key.humanize)'
39
- on '-l', :locales, 'Only for specified locales', as: Array, delimiter: /[+:,]/
38
+ on '-p', :placeholder, 'Value for empty keys (default: base value or key.humanize)', argument: true, optional: false
39
+ on '-l', :locales, 'Only for specified locales', as: Array, delimiter: /[+:,]/, default: 'all', argument: true, optional: false
40
40
  end
41
41
  cmd :add_missing do |opt = {}|
42
42
  opt[:locales] = locales_opt(opt[:locale] || opt[:locales])
@@ -63,7 +63,7 @@ module I18n::Tasks
63
63
 
64
64
  desc 'normalize translation data: sort and move to the right files'
65
65
  opts do
66
- on '-l', :locales=, 'Only for specified locales', as: Array, delimiter: /[+:,]/
66
+ on '-l', :locales=, 'Only for specified locales', as: Array, delimiter: /[+:,]/, default: 'all', argument: true, optional: false
67
67
  end
68
68
  cmd :normalize do |opt = {}|
69
69
  i18n_task.normalize_store! locales_opt(opt[:locales])
@@ -71,7 +71,7 @@ module I18n::Tasks
71
71
 
72
72
  desc 'remove unused keys'
73
73
  opts do
74
- on '-l', :locales=, 'Only for specified locales', as: Array, delimiter: /[+:,]/
74
+ on '-l', :locales=, 'Only for specified locales', as: Array, delimiter: /[+:,]/, default: 'all', argument: true, optional: false
75
75
  end
76
76
  cmd :remove_unused do |opt = {}|
77
77
  locales = locales_opt opt[:locales]
@@ -43,8 +43,6 @@ module I18n::Tasks
43
43
  self.class.cmds.try(:[], name).try(:desc)
44
44
  end
45
45
 
46
- protected
47
-
48
46
  def i18n_task
49
47
  @i18n_task ||= I18n::Tasks::BaseTask.new
50
48
  end
@@ -6,11 +6,11 @@ module I18n::Tasks
6
6
  locales = non_base_locales(opts[:locales])
7
7
  type = opts[:type]
8
8
  unless type
9
- types = opts[:types] || missing_keys_types
9
+ types = opts[:types].presence || missing_keys_types
10
10
  opts = opts.except(:types).merge(locales: locales)
11
11
  return types.map { |t| missing_keys(opts.merge(type: t)) }.reduce(:+)
12
12
  end
13
- if type == :missing_from_base
13
+ if type.to_s == 'missing_from_base'
14
14
  keys_missing_from_base
15
15
  else
16
16
  locales.map { |locale| send("keys_#{type}", locale) }.reduce(:+) || KeyGroup.new([])
@@ -57,6 +57,7 @@ module I18n
57
57
 
58
58
  def unused_keys(keys = task.unused_keys)
59
59
  print_title unused_title(keys)
60
+ keys.sort_by_attr!(key: :asc)
60
61
  if keys.present?
61
62
  print_table headings: [bold(magenta('i18n Key')), bold(cyan("Base value (#{base_locale})"))] do |t|
62
63
  t.rows = keys.map { |k| [magenta(k.key), cyan(k.value)] }
@@ -1,5 +1,5 @@
1
1
  module I18n
2
2
  module Tasks
3
- VERSION = '0.3.0.rc1'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
@@ -1,3 +1,6 @@
1
+ base_locale: en
2
+ locales: [es]
3
+
1
4
  # i18n data storage
2
5
  data:
3
6
  # The default file adapter supports YAML and JSON files. You can provide a class name here.
@@ -1,12 +1,19 @@
1
1
  # coding: utf-8
2
2
  require 'spec_helper'
3
+ require 'i18n/tasks/commands'
3
4
  require 'fileutils'
4
5
 
5
- describe 'rake i18n' do
6
+ describe 'i18n-tasks' do
7
+ def run_cmd(name, *args, &block)
8
+ TestCodebase.in_test_app_dir do
9
+ capture_stdout { ::I18n::Tasks::Commands.new.send(name, *args, &block) }
10
+ end
11
+ end
12
+
6
13
  describe 'missing' do
7
14
  it 'detects missing or identical' do
8
15
  capture_stderr do
9
- expect(TestCodebase.rake_result('i18n:missing')).to be_i18n_keys %w(
16
+ expect(run_cmd :missing).to be_i18n_keys %w(
10
17
  en.used_but_missing.a en.relative.index.missing
11
18
  es.missing_in_es.a es.blank_in_es.a es.same_in_es.a
12
19
  en.hash.pattern_missing.a en.hash.pattern_missing.b
@@ -16,16 +23,16 @@ describe 'rake i18n' do
16
23
  end
17
24
  end
18
25
 
26
+ let(:expected_unused_keys) { %w(unused.a unused.numeric unused.plural) }
19
27
  describe 'unused' do
20
- let(:expected_unused_keys) { %w(unused.a unused.numeric unused.plural) }
21
-
22
28
  it 'detects unused' do
23
29
  capture_stderr do
24
- out = TestCodebase.rake_result('i18n:unused')
25
- expect(out).to be_i18n_keys expected_unused_keys
30
+ expect(run_cmd :unused).to be_i18n_keys expected_unused_keys
26
31
  end
27
32
  end
33
+ end
28
34
 
35
+ describe 'remove_unused' do
29
36
  it 'removes unused' do
30
37
  TestCodebase.in_test_app_dir do
31
38
  t = I18n::Tasks::BaseTask.new
@@ -35,7 +42,7 @@ describe 'rake i18n' do
35
42
  end
36
43
  ENV['CONFIRM'] = '1'
37
44
  capture_stderr {
38
- TestCodebase.rake_result('i18n:remove_unused')
45
+ run_cmd :remove_unused
39
46
  }
40
47
  t.data.reload
41
48
  expected_unused_keys.each do |key|
@@ -50,16 +57,16 @@ describe 'rake i18n' do
50
57
  it 'moves keys to the corresponding files as per data.write' do
51
58
  TestCodebase.in_test_app_dir {
52
59
  expect(File).to_not exist 'config/locales/devise.en.yml'
53
- TestCodebase.rake_result('i18n:normalize')
60
+ run_cmd :normalize
54
61
  expect(YAML.load_file('config/locales/devise.en.yml')['en']['devise']['a']).to eq 'EN_TEXT'
55
62
  }
56
63
  end
57
64
  end
58
65
 
59
- describe 'spreadsheet report' do
66
+ describe 'xlsx_report' do
60
67
  it 'saves' do
61
68
  TestCodebase.in_test_app_dir {
62
- capture_stderr { TestCodebase.rake_result('i18n:spreadsheet_report') }
69
+ capture_stderr { run_cmd :xlsx_report }
63
70
  expect(File).to exist 'tmp/i18n-report.xlsx'
64
71
  FileUtils.cp('tmp/i18n-report.xlsx', '..')
65
72
  }
@@ -68,21 +75,21 @@ describe 'rake i18n' do
68
75
  end
69
76
 
70
77
  describe 'add_missing' do
71
- it 'placeholder' do
78
+ it 'default placeholder' do
72
79
  TestCodebase.in_test_app_dir {
73
80
  expect(YAML.load_file('config/locales/en.yml')['en']['used_but_missing']).to be_nil
74
81
  }
75
- TestCodebase.rake_result('i18n:add_missing:placeholder', 'base')
82
+ run_cmd :add_missing, locales: 'base'
76
83
  TestCodebase.in_test_app_dir {
77
84
  expect(YAML.load_file('config/locales/en.yml')['en']['used_but_missing']['a']).to eq 'A'
78
85
  }
79
86
  end
80
87
 
81
- it 'placeholder[VALUE]' do
88
+ it 'placeholder: value' do
82
89
  TestCodebase.in_test_app_dir {
83
90
  expect(YAML.load_file('config/locales/es.yml')['es']['missing_in_es']).to be_nil
84
91
  }
85
- TestCodebase.rake_result('i18n:add_missing:placeholder', 'all', 'TRME')
92
+ run_cmd :add_missing, locales: 'all', placeholder: 'TRME'
86
93
  TestCodebase.in_test_app_dir {
87
94
  expect(YAML.load_file('config/locales/es.yml')['es']['missing_in_es']['a']).to eq 'TRME'
88
95
  # does not touch existing, but moves to the right file:
@@ -91,18 +98,18 @@ describe 'rake i18n' do
91
98
  end
92
99
  end
93
100
 
94
- describe 'tasks_config' do
101
+ describe 'config' do
95
102
  it 'prints config' do
96
- expect(YAML.load(TestCodebase.rake_result('i18n:tasks_config'))).to(
103
+ expect(YAML.load(run_cmd :config)).to(
97
104
  eq TestCodebase.in_test_app_dir { I18n::Tasks::BaseTask.new.config_for_inspect }
98
105
  )
99
106
  end
100
107
  end
101
108
 
102
- describe 'usages' do
109
+ describe 'find' do
103
110
  it 'prints usages' do
104
111
  capture_stderr do
105
- expect(TestCodebase.rake_result('i18n:usages', 'used.*')).to eq(<<-TXT)
112
+ expect(run_cmd :find, arguments: ['used.*']).to eq(<<-TXT)
106
113
  used.a 2
107
114
  app/views/usages.html.slim:1 p = t 'used.a'
108
115
  app/views/usages.html.slim:2 b = t 'used.a'
data/spec/spec_helper.rb CHANGED
@@ -11,9 +11,6 @@ $: << File.expand_path('../lib', __FILE__)
11
11
  require 'i18n/tasks'
12
12
  require 'rake'
13
13
 
14
- Rake.load_rakefile 'tasks/i18n-tasks.rake'
15
- Rake.load_rakefile 'support/test_codebase_env.rake'
16
-
17
14
  require 'term/ansicolor'
18
15
  Term::ANSIColor::coloring = false
19
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.rc1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebm
@@ -10,20 +10,6 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: erubis
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -212,6 +198,7 @@ files:
212
198
  - README.md
213
199
  - Rakefile
214
200
  - bin/i18n-tasks
201
+ - doc/img/i18n-tasks.png
215
202
  - i18n-tasks.gemspec
216
203
  - lib/i18n/tasks.rb
217
204
  - lib/i18n/tasks/base_task.rb
@@ -235,7 +222,6 @@ files:
235
222
  - lib/i18n/tasks/key_pattern_matching.rb
236
223
  - lib/i18n/tasks/missing_keys.rb
237
224
  - lib/i18n/tasks/plural_keys.rb
238
- - lib/i18n/tasks/railtie.rb
239
225
  - lib/i18n/tasks/relative_keys.rb
240
226
  - lib/i18n/tasks/reports/base.rb
241
227
  - lib/i18n/tasks/reports/spreadsheet.rb
@@ -247,7 +233,6 @@ files:
247
233
  - lib/i18n/tasks/unused_keys.rb
248
234
  - lib/i18n/tasks/used_keys.rb
249
235
  - lib/i18n/tasks/version.rb
250
- - lib/tasks/i18n-tasks.rake
251
236
  - spec/file_system_data_spec.rb
252
237
  - spec/fixtures/app/assets/javascripts/application.js
253
238
  - spec/fixtures/app/controllers/events_controller.rb
@@ -268,7 +253,6 @@ files:
268
253
  - spec/support/i18n_tasks_output_matcher.rb
269
254
  - spec/support/key_pattern_matcher.rb
270
255
  - spec/support/test_codebase.rb
271
- - spec/support/test_codebase_env.rake
272
256
  - spec/used_keys_spec.rb
273
257
  homepage: https://github.com/glebm/i18n-tasks
274
258
  licenses:
@@ -286,9 +270,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
286
270
  version: '0'
287
271
  required_rubygems_version: !ruby/object:Gem::Requirement
288
272
  requirements:
289
- - - '>'
273
+ - - '>='
290
274
  - !ruby/object:Gem::Version
291
- version: 1.3.1
275
+ version: '0'
292
276
  requirements: []
293
277
  rubyforge_project:
294
278
  rubygems_version: 2.0.14
@@ -317,6 +301,5 @@ test_files:
317
301
  - spec/support/i18n_tasks_output_matcher.rb
318
302
  - spec/support/key_pattern_matcher.rb
319
303
  - spec/support/test_codebase.rb
320
- - spec/support/test_codebase_env.rake
321
304
  - spec/used_keys_spec.rb
322
305
  has_rdoc:
@@ -1,12 +0,0 @@
1
- module I18n
2
- module Tasks
3
- class Railtie < ::Rails::Railtie
4
- rake_tasks do
5
- load 'tasks/i18n-tasks.rake'
6
- namespace :i18n do
7
- task :setup => 'environment'
8
- end
9
- end
10
- end
11
- end
12
- end
@@ -1,79 +0,0 @@
1
- require 'i18n/tasks'
2
- require 'i18n/tasks/commands'
3
-
4
- cmd = I18n::Tasks::Commands.new
5
-
6
- namespace :i18n do
7
- task :setup do
8
- end
9
-
10
- desc cmd.desc :missing
11
- task :missing, [:locales] => 'i18n:setup' do |t, args|
12
- cmd.missing locales: args[:locales]
13
- end
14
-
15
- namespace :missing do
16
- desc 'keys present in code but not existing in base locale data'
17
- task :missing_from_base => 'i18n:setup' do
18
- cmd.missing type: :missing_from_base
19
- end
20
-
21
- desc 'keys present but with value same as in base locale'
22
- task :eq_base, [:locales] => 'i18n:setup' do |t, args|
23
- cmd.missing type: :eq_base, locales: args[:locales]
24
- end
25
-
26
- desc 'keys that exist in base locale but are blank in passed locales'
27
- task :missing_from_locale, [:locales] => 'i18n:setup' do |t, args|
28
- cmd.missing type: :missing_from_locale, locales: args[:locales]
29
- end
30
- end
31
-
32
- desc cmd.desc :show_unused
33
- task :unused => 'i18n:setup' do
34
- cmd.unused
35
- end
36
-
37
- desc cmd.desc :remove_unused
38
- task :remove_unused, [:locales] => 'i18n:setup' do |t, args|
39
- cmd.remove_unused
40
- end
41
-
42
- desc cmd.desc :usages
43
- task :usages, [:filter] => 'i18n:setup' do |t, args|
44
- cmd.find filter: args[:filter]
45
- end
46
-
47
- desc cmd.desc :normalize
48
- task :normalize, [:locales] => 'i18n:setup' do |t, args|
49
- cmd.normalize locales: args[:locales]
50
- end
51
-
52
- namespace :add_missing do
53
- desc 'add Google Translated values for untranslated keys to locales (default: all non-base)'
54
- task :translate, [:locales] => 'i18n:setup' do |t, args|
55
- cmd.translate locales: args[:locales]
56
- end
57
-
58
- desc 'copy base locale values for all untranslated keys to locales (default: all non-base)'
59
- task :placeholder, [:locales, :placeholder] => 'i18n:setup' do |t, args|
60
- cmd.add_missing locale: args[:locales], placeholder: args[:placeholder]
61
- end
62
-
63
- desc 'add values for missing and untranslated keys to locales (default: all)'
64
- task :empty_string, [:locales] => 'i18n:setup' do |t, args|
65
- cmd.add_missing locales: args[:locales], placeholder: ''
66
- end
67
- end
68
-
69
- desc cmd.desc(:config)
70
- task :tasks_config => 'i18n:setup' do
71
- cmd.config
72
- end
73
-
74
- desc cmd.desc :save_spreadsheet
75
- task :spreadsheet_report, [:path] => 'i18n:setup' do |t, args|
76
- cmd.xlsx_report path: args[:path]
77
- end
78
- end
79
-
@@ -1,10 +0,0 @@
1
- task :environment do
2
- Thread.exclusive do
3
- I18n.default_locale = 'en'
4
- I18n.available_locales = %w(en es)
5
- end
6
- end
7
-
8
- namespace :i18n do
9
- task :setup => 'environment'
10
- end