i18n-tasks 0.2.2 → 0.2.3

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
- ---
2
- SHA1:
3
- metadata.gz: 938b362fb2bb4551507b503b2230e7175eff7a97
4
- data.tar.gz: 378887ed86ebbf0cffc511d4a5b6ad83627d690f
5
- SHA512:
6
- metadata.gz: 182391f6acbb385bf294cf675debfef292153309bec9beacda7b5f8d6e71b178e21d2a111d7bdf31aec843bc1ec9d7fac53fd1a2a59a098132e887c7653f9de0
7
- data.tar.gz: 3f0701378d7ecea4be0f252feae1a59a3ca9f89beeb5f6e14cd0a0f9f8ca6d807bb13ced370425d612c23bfb7c76627eef5509068cf6fc2267e699596cbae2a9
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 10a6c74d023a1a48cd323220d0040aba024291a9
4
+ data.tar.gz: 89d8d7f841d16c33b80b8ad53c69b38b17bec801
5
+ SHA512:
6
+ metadata.gz: 9a40284c2b024046cad115c61b9faa22eac5331b380298d9b45b3c83753534fa6c6682114cd6760a1dcd293be8c8e0be4984f95b7462910ec085f3a12a69d074
7
+ data.tar.gz: bd398e0f3892c70bc27ed94be7a4f6332e396220b2909debb97aecf716280affa5b9d59bd3d356909ef81bf5c0da6bfacc5f086542703614008506e604cafbba
data/.travis.yml CHANGED
@@ -3,7 +3,4 @@ rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
5
  - jruby
6
- - rbx-19mode
7
- matrix:
8
- allow_failures:
9
- - rvm: rbx-19mode
6
+ - rbx
data/Gemfile CHANGED
@@ -3,4 +3,19 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in i18n-tasks.gemspec
4
4
  gemspec
5
5
 
6
- #gem 'byebug'
6
+
7
+
8
+ platform :rbx do
9
+ gem "rubysl-rake", "~> 2.0"
10
+ gem "rubysl-bundler", "~> 2.0"
11
+ gem "rubysl-digest", "~> 2.0"
12
+ gem 'rubysl-delegate', '~> 2.0'
13
+ gem 'rubysl-singleton', '~> 2.0'
14
+ gem 'rubysl-base64', '~> 2.0'
15
+ group :development do
16
+ gem 'racc'
17
+ gem 'rubysl-irb', '~> 2.0'
18
+ end
19
+ end
20
+
21
+ #gem 'byebug'
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # i18n-tasks [![Build Status](https://travis-ci.org/glebm/i18n-tasks.png?branch=master)](https://travis-ci.org/glebm/i18n-tasks) [![Code Climate](https://codeclimate.com/github/glebm/i18n-tasks.png)](https://codeclimate.com/github/glebm/i18n-tasks)
2
2
 
3
3
 
4
- Tasks to manage missing and unused translations in Rails.
4
+ Tasks to manage translations in Rails.
5
5
 
6
6
  ![i18n-screenshot](https://raw.github.com/glebm/i18n-tasks/master/doc/img/i18n-tasks.gif "i18n-tasks output screenshot")
7
7
 
@@ -11,11 +11,15 @@ Use `rake -T i18n` to get the list of tasks with descriptions. These are [the ta
11
11
 
12
12
  There are reports for missing and unused translations:
13
13
  ```bash
14
- rake i18n:missing
14
+ rake i18n:missing
15
15
  rake i18n:unused
16
+ # or save both to an xlsx file:
17
+ rake i18n:spreadsheet_report
16
18
  ```
17
19
 
18
- To add the keys that are not in the base locale data but detected in the source do:
20
+ i18n-tasks can add missing keys to the locale data, and it can also fill untranslated values.
21
+
22
+ To add the keys that are not in the base locale but detected in the source do:
19
23
  ```bash
20
24
  # add missing keys to the base locale data (I18n.default_locale)
21
25
  # values set to key.humanize
@@ -24,6 +28,11 @@ rake i18n:add_missing
24
28
  rake i18n:add_missing[OhNoesMissing]
25
29
  ```
26
30
 
31
+ Add blank yaml keys - `key: ''` for all missing and untranslated keys:
32
+ ```bash
33
+ rake i18n:fill:blanks
34
+ ```
35
+
27
36
  Prefill empty translations using Google Translate:
28
37
  ```bash
29
38
  rake i18n:fill:google_translate
@@ -34,10 +43,6 @@ Prefill using values from the base locale - `I8n.default_locale`:
34
43
  ```bash
35
44
  rake i18n:fill:base_value
36
45
  ```
37
- Add just blank yaml keys - `key: ''` for all missing and untranslated keys:
38
- ```bash
39
- rake i18n:fill:blanks
40
- ```
41
46
 
42
47
  i18n-tasks sorts the keys and writes them to their respective files:
43
48
  ```bash
@@ -63,7 +68,7 @@ For more examples see [the tests](/spec/i18n_tasks_spec.rb).
63
68
  Simply add to Gemfile:
64
69
 
65
70
  ```ruby
66
- gem 'i18n-tasks', '~> 0.2.2'
71
+ gem 'i18n-tasks', '~> 0.2.3'
67
72
  ```
68
73
 
69
74
  ## Configuration
@@ -77,18 +82,18 @@ Configuration is read from `config/i18n-tasks.yml`.
77
82
  data:
78
83
  # The default YAML adapter supports reading from and writing to YAML files
79
84
  adapter: yaml
80
- # yaml adapter read option is a list of glob patterns of files to read from per-locale
85
+ # a list of file globs to read from per-locale
81
86
  read:
82
87
  # this one is default:
83
88
  - 'config/locales/%{locale}.yml'
84
- # this one would add some more files:
89
+ # add this one to also read from namespaced files, e.g. simple_form.en.yml:
85
90
  - 'config/locales/*.%{locale}.yml'
86
- # yaml adapter write option a list of key pattern => output filename "routes" per-locale
91
+ # a list of {key pattern => file} routes, matched top to bottom
87
92
  write:
88
- # keys matched top to bottom
93
+ # this would save all devise keys in it's own file (per locale):
89
94
  - ['devise.*', 'config/locales/devise.%{locale}.yml']
90
- # default catch-all (same as ['*', 'config/locales/%{locale}.yml'])
91
- - 'config/locales/%{locale}.yml'
95
+ # this is the default catch-all:
96
+ - 'config/locales/%{locale}.yml' # path is short for ['*', path]
92
97
  ```
93
98
 
94
99
  ### Translation
data/i18n-tasks.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'easy_translate'
27
27
  spec.add_dependency 'term-ansicolor'
28
28
  spec.add_dependency 'terminal-table'
29
+ spec.add_development_dependency 'axlsx', '~> 2.0'
29
30
  spec.add_development_dependency 'bundler', '~> 1.3'
30
31
  spec.add_development_dependency 'rake'
31
32
  spec.add_development_dependency 'rspec-rails'
@@ -7,6 +7,10 @@ module I18n::Tasks::GoogleTranslation
7
7
  if (key = translation_config[:api_key]).present?
8
8
  opts[:key] ||= key
9
9
  end
10
+ if opts[:key].blank?
11
+ $stderr.puts(Term::ANSIColor.red Term::ANSIColor.yellow 'You may need to provide Google API key as GOOGLE_TRANSLATE_API_KEY or in config/i18n-tasks.yml.
12
+ You can obtain the key at https://code.google.com/apis/console.')
13
+ end
10
14
  EasyTranslate.translate strings, opts
11
15
  end
12
16
  end
@@ -1,12 +1,12 @@
1
1
  module I18n::Tasks::IgnoreKeys
2
2
  # whether to ignore the key
3
3
  # will also apply global ignore rules
4
- # @param [:missing, :eq_base, :blank, :unused] ignore_type
4
+ # @param [:missing, :unused, :eq_base] ignore_type
5
5
  def ignore_key?(key, ignore_type, locale = nil)
6
6
  key =~ ignore_pattern(ignore_type, locale)
7
7
  end
8
8
 
9
- # @param type [:missing, :eq_base, :unused] type
9
+ # @param type [:missing, :unused, :eq_base] type
10
10
  # @param locale [String] only when type is :eq_base
11
11
  # @return [Regexp] a regexp that matches all the keys ignored for the type (and locale)
12
12
  def ignore_pattern(type, locale = nil)
@@ -22,4 +22,4 @@ module I18n::Tasks::IgnoreKeys
22
22
  compile_patterns_re patterns
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ module I18n::Tasks::Reports
3
+ class Base
4
+
5
+ def initialize
6
+ @task = I18n::Tasks::BaseTask.new
7
+ end
8
+
9
+ attr_reader :task
10
+
11
+ MISSING_TYPES = {
12
+ none: {glyph: '✗', summary: 'key missing'},
13
+ blank: {glyph: '∅', summary: 'translation blank'},
14
+ eq_base: {glyph: '=', summary: 'value same as base value'}
15
+ }
16
+
17
+ def missing_types
18
+ MISSING_TYPES
19
+ end
20
+
21
+ def missing_title(recs)
22
+ "Missing translations (#{recs.length})"
23
+ end
24
+
25
+ def unused_title(recs)
26
+ "Unused keys (#{recs.length})"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,54 @@
1
+ require 'i18n/tasks/reports/base'
2
+ require 'fileutils'
3
+
4
+ module I18n::Tasks::Reports
5
+ class Spreadsheet < Base
6
+
7
+ def save_report(path = 'tmp/i18n-report.xlsx')
8
+ p = Axlsx::Package.new
9
+ add_missing_sheet p.workbook
10
+ add_unused_sheet p.workbook
11
+ p.use_shared_strings = true
12
+ FileUtils.mkpath(File.dirname(path))
13
+ p.serialize(path)
14
+ $stderr.puts Term::ANSIColor.green "Saved to #{path}"
15
+ end
16
+
17
+ private
18
+
19
+ def add_missing_sheet(wb)
20
+ recs = task.untranslated_keys
21
+ wb.styles do |s|
22
+ type_cell = s.add_style :alignment => {:horizontal => :center}
23
+ locale_cell = s.add_style :alignment => {:horizontal => :center}
24
+ regular_style = s.add_style
25
+ wb.add_worksheet(name: missing_title(recs)) { |sheet|
26
+ sheet.page_setup.fit_to :width => 1
27
+ sheet.add_row ['Type', 'Locale', 'Key', 'Base Value']
28
+ style_header sheet
29
+ recs.each do |rec|
30
+ sheet.add_row [missing_types[rec[:type]][:summary], rec[:locale], rec[:key], rec[:base_value]],
31
+ styles: [type_cell, locale_cell, regular_style, regular_style]
32
+ end
33
+ }
34
+ end
35
+ end
36
+
37
+ def add_unused_sheet(wb)
38
+ recs = task.unused_keys
39
+ wb.add_worksheet name: unused_title(recs) do |sheet|
40
+ sheet.add_row ['Key', 'Base Value']
41
+ style_header sheet
42
+ recs.each do |rec|
43
+ sheet.add_row rec
44
+ end
45
+ end
46
+ end
47
+
48
+ private
49
+ def style_header(sheet)
50
+ border_bottom = sheet.workbook.styles.add_style(border: {style: :thin, color: '000000', edges: [:bottom]})
51
+ sheet.rows.first.style = border_bottom
52
+ end
53
+ end
54
+ end
@@ -1,34 +1,23 @@
1
1
  # coding: utf-8
2
+ require 'i18n/tasks/reports/base'
2
3
  require 'terminal-table'
3
4
  module I18n
4
5
  module Tasks
5
6
  module Reports
6
- class Terminal
7
+ class Terminal < Base
7
8
  include Term::ANSIColor
8
9
 
9
- def initialize
10
- @task = I18n::Tasks::BaseTask.new
11
- end
12
-
13
- attr_reader :task
14
-
15
10
  def missing_translations
16
11
  recs = task.untranslated_keys
17
- print_title "Missing keys and translations (#{recs.length})"
12
+ print_title missing_title(recs)
18
13
  if recs.present?
19
- type_sym = {
20
- :none => red(''),
21
- :blank => yellow('∅'),
22
- :eq_base => bold(blue('='))
23
- }
24
- type_desc = {
25
- :none => 'key missing',
26
- :blank => 'translation blank',
27
- :eq_base => 'value same as base value'
28
- }
29
- $stderr.puts "#{bold 'Types:'} #{type_desc.keys.map { |k| "#{type_sym[k]} #{type_desc[k]}" } * ', '}"
14
+
15
+ $stderr.puts "#{bold 'Types:'} #{missing_types.values.map { |t| "#{t[:glyph]} #{t[:summary]}" } * ', '}"
16
+
30
17
  print_table headings: [magenta(bold('Locale')), bold('Type'), magenta('i18n Key'), bold(cyan "Base value (#{base_locale})")] do |t|
31
18
  t.rows = recs.map { |rec|
19
+ glyph = missing_types[rec[:type]][:glyph]
20
+ glyph = {none: red(glyph), blank: yellow(glyph), eq_base: bold(blue(glyph))}[rec[:type]]
32
21
  if rec[:type] == :none
33
22
  locale = magenta bold rec[:locale]
34
23
  base_value = ''
@@ -36,8 +25,8 @@ module I18n
36
25
  locale = magenta rec[:locale]
37
26
  base_value = cyan rec[:base_value].try(:strip) || ''
38
27
  end
39
- [{:value => locale, :alignment => :center },
40
- {:value => type_sym[rec[:type]], :alignment => :center },
28
+ [{value: locale, alignment: :center},
29
+ {value: glyph, alignment: :center},
41
30
  magenta(rec[:key]),
42
31
  base_value]
43
32
  }
@@ -49,7 +38,7 @@ module I18n
49
38
 
50
39
  def unused_translations
51
40
  unused = task.unused_keys
52
- print_title "Unused i18n keys (#{unused.length})"
41
+ print_title unused_title(unused)
53
42
  if unused.present?
54
43
  print_table headings: [bold(magenta('i18n Key')), cyan("Base value (#{base_locale})")] do |t|
55
44
  t.rows = unused.map { |x| [magenta(x[0]), cyan(x[1])] }
@@ -61,8 +50,6 @@ module I18n
61
50
 
62
51
  private
63
52
 
64
- extend Term::ANSIColor
65
-
66
53
  def print_title(title)
67
54
  $stderr.puts "#{bold cyan title.strip} #{dark "|"} #{bold "i18n-tasks v#{I18n::Tasks::VERSION}"}"
68
55
  end
@@ -1,5 +1,5 @@
1
1
  module I18n
2
2
  module Tasks
3
- VERSION = '0.2.2'
3
+ VERSION = '0.2.3'
4
4
  end
5
5
  end
@@ -2,16 +2,30 @@ require 'set'
2
2
  require 'i18n/tasks/base_task'
3
3
  require 'i18n/tasks/reports/terminal'
4
4
  require 'active_support/core_ext/module/delegation'
5
+ require 'i18n/tasks/reports/spreadsheet'
5
6
 
6
7
  namespace :i18n do
7
8
  desc 'show missing translations'
8
9
  task :missing => 'i18n:setup' do
9
- report.missing_translations
10
+ i18n_report.missing_translations
10
11
  end
11
12
 
12
13
  desc 'show unused translations'
13
14
  task :unused => 'i18n:setup' do
14
- report.unused_translations
15
+ i18n_report.unused_translations
16
+ end
17
+
18
+ desc 'save missing and unused translations to an Excel file'
19
+ task :spreadsheet_report, [:path] => 'i18n:setup' do |t, args|
20
+ begin
21
+ require 'axlsx'
22
+ rescue LoadError
23
+ message = %Q(To use i18n:spreadsheet_report please add axlsx gem to Gemfile:\ngem 'axlsx', '~> 2.0')
24
+ STDERR.puts Term::ANSIColor.red Term::ANSIColor.bold message
25
+ exit 1
26
+ end
27
+ args.with_defaults path: 'tmp/i18n-report.xlsx'
28
+ i18n_spreadsheet_report.save_report(args[:path])
15
29
  end
16
30
 
17
31
  desc 'normalize translation data: sort and move to the right files'
@@ -19,7 +33,7 @@ namespace :i18n do
19
33
  i18n_tasks.normalize_store! args[:locales]
20
34
  end
21
35
 
22
- desc 'add <key: placeholder || key.humanize> to the base locale'
36
+ desc 'add placeholder for missing values to the base locale (default: key.humanize)'
23
37
  task :add_missing, [:placeholder] => 'i18n:setup' do |t, args|
24
38
  i18n_tasks.add_missing! base_locale, args[:placeholder]
25
39
  end
@@ -27,19 +41,19 @@ namespace :i18n do
27
41
  desc 'fill translations with values'
28
42
  namespace :fill do
29
43
 
30
- desc 'add <key: ""> to each locale'
44
+ desc 'add "" values for missing and untranslated keys to locales (default: all)'
31
45
  task :blanks, [:locales] => 'i18n:setup' do |t, args|
32
- i18n_tasks.fill_with_blanks! parse_locales args[:locales]
46
+ i18n_tasks.fill_with_blanks! i18n_parse_locales args[:locales]
33
47
  end
34
48
 
35
- desc 'add <key: Google Translated value> to each non-base locale, uses env GOOGLE_TRANSLATE_API_KEY'
49
+ desc 'add Google Translated values for untranslated keys to locales (default: all non-base)'
36
50
  task :google_translate, [:locales] => 'i18n:setup' do |t, args|
37
- i18n_tasks.fill_with_google_translate! parse_locales args[:locales]
51
+ i18n_tasks.fill_with_google_translate! i18n_parse_locales args[:locales]
38
52
  end
39
53
 
40
- desc 'add <key: base value> to each non-base locale'
54
+ desc 'copy base locale values for all untranslated keys to locales (default: all non-base)'
41
55
  task :base_value, [:locales] => 'i18n:setup' do |t, args|
42
- i18n_tasks.fill_with_base_values! parse_locales args[:locales]
56
+ i18n_tasks.fill_with_base_values! i18n_parse_locales args[:locales]
43
57
  end
44
58
  end
45
59
 
@@ -50,7 +64,7 @@ See README.md https://github.com/glebm/i18n-tasks"
50
64
  end
51
65
  end
52
66
 
53
- module I18n::Tasks::RakeHelpers
67
+ module ::I18n::Tasks::RakeHelpers
54
68
  include Term::ANSIColor
55
69
 
56
70
  delegate :base_locale, to: :i18n_tasks
@@ -59,14 +73,18 @@ See README.md https://github.com/glebm/i18n-tasks"
59
73
  @i18n_tasks ||= I18n::Tasks::BaseTask.new
60
74
  end
61
75
 
62
- def report
63
- @report ||= I18n::Tasks::Reports::Terminal.new
76
+ def i18n_report
77
+ @i18n_report ||= I18n::Tasks::Reports::Terminal.new
78
+ end
79
+
80
+ def i18n_spreadsheet_report
81
+ @i18n_spreadsheet_report ||= I18n::Tasks::Reports::Spreadsheet.new
64
82
  end
65
83
 
66
- def parse_locales(arg = nil)
84
+ def i18n_parse_locales(arg = nil)
67
85
  arg.try(:strip).try(:split, /\s*\+\s*/).try(:compact)
68
86
  end
69
87
  end
70
- include I18n::Tasks::RakeHelpers
88
+ include ::I18n::Tasks::RakeHelpers
71
89
  end
72
90
 
@@ -10,7 +10,7 @@ describe 'rake i18n' do
10
10
  es.missing_in_es.a es.blank_in_es.a es.same_in_es.a
11
11
  en.missing_symbol_key en.missing_symbol.key_two en.missing_symbol.key_three
12
12
  )
13
- end.should =~ /Missing keys and translations \(8\)/
13
+ end
14
14
  end
15
15
  end
16
16
 
@@ -19,7 +19,7 @@ describe 'rake i18n' do
19
19
  TestCodebase.capture_stderr do
20
20
  out = TestCodebase.rake_result('i18n:unused')
21
21
  out.should be_i18n_keys %w(unused.a unused.numeric unused.plural)
22
- end.should =~ /Unused i18n keys \(3\)/
22
+ end
23
23
  end
24
24
  end
25
25
 
@@ -33,6 +33,16 @@ describe 'rake i18n' do
33
33
  end
34
34
  end
35
35
 
36
+ describe 'spreadsheet report' do
37
+ it 'saves' do
38
+ TestCodebase.in_test_app_dir {
39
+ TestCodebase.rake_result('i18n:spreadsheet_report')
40
+ File.should exist 'tmp/i18n-report.xlsx'
41
+ }
42
+ end
43
+
44
+ end
45
+
36
46
  describe 'fill:' do
37
47
  it 'add missing' do
38
48
  TestCodebase.in_test_app_dir { YAML.load_file('config/locales/en.yml')['en']['used_but_missing'].should be_nil }
metadata CHANGED
@@ -1,151 +1,113 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: i18n-tasks
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - glebm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-24 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2013-11-28 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
14
15
  name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
16
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: activesupport
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - &id002
20
+ - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
34
23
  type: :runtime
24
+ version_requirements: *id001
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
35
27
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: easy_translate
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
28
+ requirement: &id003 !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - *id002
48
31
  type: :runtime
32
+ version_requirements: *id003
33
+ - !ruby/object:Gem::Dependency
34
+ name: easy_translate
49
35
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: term-ansicolor
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
36
+ requirement: &id004 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - *id002
62
39
  type: :runtime
40
+ version_requirements: *id004
41
+ - !ruby/object:Gem::Dependency
42
+ name: term-ansicolor
63
43
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
44
+ requirement: &id005 !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - *id002
47
+ type: :runtime
48
+ version_requirements: *id005
49
+ - !ruby/object:Gem::Dependency
70
50
  name: terminal-table
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
51
+ prerelease: false
52
+ requirement: &id006 !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - *id002
76
55
  type: :runtime
56
+ version_requirements: *id006
57
+ - !ruby/object:Gem::Dependency
58
+ name: axlsx
77
59
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: bundler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
60
+ requirement: &id007 !ruby/object:Gem::Requirement
61
+ requirements:
87
62
  - - ~>
88
- - !ruby/object:Gem::Version
89
- version: '1.3'
63
+ - !ruby/object:Gem::Version
64
+ version: "2.0"
90
65
  type: :development
66
+ version_requirements: *id007
67
+ - !ruby/object:Gem::Dependency
68
+ name: bundler
91
69
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
70
+ requirement: &id008 !ruby/object:Gem::Requirement
71
+ requirements:
94
72
  - - ~>
95
- - !ruby/object:Gem::Version
96
- version: '1.3'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
73
+ - !ruby/object:Gem::Version
74
+ version: "1.3"
104
75
  type: :development
76
+ version_requirements: *id008
77
+ - !ruby/object:Gem::Dependency
78
+ name: rake
105
79
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec-rails
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
80
+ requirement: &id009 !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - *id002
118
83
  type: :development
84
+ version_requirements: *id009
85
+ - !ruby/object:Gem::Dependency
86
+ name: rspec-rails
119
87
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: yard
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
88
+ requirement: &id010 !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - *id002
132
91
  type: :development
92
+ version_requirements: *id010
93
+ - !ruby/object:Gem::Dependency
94
+ name: yard
133
95
  prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - '>='
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- description: |2
140
-
141
- rake tasks to find unused and missing translations, normalize locale files,
142
- and prefill missing keys. Supports relative and plural keys and Google Translate.
143
- email:
96
+ requirement: &id011 !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - *id002
99
+ type: :development
100
+ version_requirements: *id011
101
+ description: "\n rake tasks to find unused and missing translations, normalize locale files,\n and prefill missing keys. Supports relative and plural keys and Google Translate.\n"
102
+ email:
144
103
  - glex.spb@gmail.com
145
104
  executables: []
105
+
146
106
  extensions: []
107
+
147
108
  extra_rdoc_files: []
148
- files:
109
+
110
+ files:
149
111
  - .gitignore
150
112
  - .travis.yml
151
113
  - CHANGES.md
@@ -168,6 +130,8 @@ files:
168
130
  - lib/i18n/tasks/plural_keys.rb
169
131
  - lib/i18n/tasks/railtie.rb
170
132
  - lib/i18n/tasks/relative_keys.rb
133
+ - lib/i18n/tasks/reports/base.rb
134
+ - lib/i18n/tasks/reports/spreadsheet.rb
171
135
  - lib/i18n/tasks/reports/terminal.rb
172
136
  - lib/i18n/tasks/source_keys.rb
173
137
  - lib/i18n/tasks/translation_data.rb
@@ -189,30 +153,29 @@ files:
189
153
  - spec/support/test_codebase.rb
190
154
  - spec/support/test_codebase_env.rake
191
155
  homepage: https://github.com/glebm/i18n-tasks
192
- licenses:
156
+ licenses:
193
157
  - MIT
194
158
  metadata: {}
159
+
195
160
  post_install_message:
196
161
  rdoc_options: []
197
- require_paths:
162
+
163
+ require_paths:
198
164
  - lib
199
- required_ruby_version: !ruby/object:Gem::Requirement
200
- requirements:
201
- - - '>='
202
- - !ruby/object:Gem::Version
203
- version: '0'
204
- required_rubygems_version: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - '>='
207
- - !ruby/object:Gem::Version
208
- version: '0'
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - *id002
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - *id002
209
171
  requirements: []
172
+
210
173
  rubyforge_project:
211
174
  rubygems_version: 2.1.10
212
175
  signing_key:
213
176
  specification_version: 4
214
177
  summary: Tasks to manage missing and unused translations in Rails.
215
- test_files:
178
+ test_files:
216
179
  - spec/fixtures/app/assets/javascripts/application.js
217
180
  - spec/fixtures/app/controllers/events_controller.rb
218
181
  - spec/fixtures/app/views/index.html.slim