Commit 34f24993

mo khan <mo@mokhan.ca>
2015-02-02 05:07:34
add i18n tasks to deal with translations.
1 parent 43b4f0c
config/i18n-tasks.yml
@@ -0,0 +1,89 @@
+# i18n-tasks finds and manages missing and unused translations https://github.com/glebm/i18n-tasks
+
+base_locale: en
+## i18n-tasks detects locales automatically from the existing locale files
+## uncomment to set locales explicitly
+# locales: [en, es, fr]
+
+## i18n-tasks report locale, default: en, available: en, ru
+# internal_locale: ru
+
+# Read and write locale data
+data:
+  ## by default, translation data are read from the file system, or you can provide a custom data adapter
+  # adapter: I18n::Tasks::Data::FileSystem
+
+  # Locale files to read from
+  read:
+    - config/locales/%{locale}.yml
+    # - config/locales/*.%{locale}.yml
+    # - config/locales/**/*.%{locale}.yml
+
+  # key => file routes, matched top to bottom
+  write:
+    ## E.g., write devise and simple form keys to their respective files
+    # - ['{devise, simple_form}.*', 'config/locales/\1.%{locale}.yml']
+    # Catch-all
+    - config/locales/%{locale}.yml
+    # `i18n-tasks normalize -p` will force move the keys according to these rules
+
+  # YAML / JSON serializer options, passed to load / dump / parse / serialize
+  yaml:
+    write:
+      # do not wrap lines at 80 characters
+      line_width: -1
+  json:
+    write:
+      # pretty print JSON
+      indent: '  '
+      space: ' '
+      object_nl: "\n"
+      array_nl: "\n"
+
+# Find translate calls
+search:
+  ## Default scanner finds t() and I18n.t() calls
+  # scanner: I18n::Tasks::Scanners::PatternWithScopeScanner
+
+  ## Paths to search in, passed to File.find
+  paths:
+    - app/
+
+  ## Root for resolving relative keys (default)
+  # relative_roots:
+  #   - app/views
+
+  ## File.fnmatch patterns to exclude from search (default)
+  # exclude: ["*.jpg", "*.png", "*.gif", "*.svg", "*.ico", "*.eot", "*.ttf", "*.woff", "*.pdf"]
+
+  ## Or, File.fnmatch patterns to include
+  # include: ["*.rb", "*.html.slim"]
+
+## Google Translate
+# translation:
+#   # Get an API key and set billing info at https://code.google.com/apis/console to use Google Translate
+#   api_key: "AbC-dEf5"
+
+## Consider these keys not missing
+# ignore_missing:
+# - 'errors.messages.{accepted,blank,invalid,too_short,too_long}'
+# - '{devise,simple_form}.*'
+
+## Consider these keys used
+# ignore_unused:
+# - 'activerecord.attributes.*'
+# - '{devise,kaminari,will_paginate}.*'
+# - 'simple_form.{yes,no}'
+# - 'simple_form.{placeholders,hints,labels}.*'
+# - 'simple_form.{error_notification,required}.:'
+
+## Exclude these keys from `i18n-tasks eq-base' report
+# ignore_eq_base:
+#   all:
+#     - common.ok
+#   fr,es:
+#     - common.brand
+
+## Exclude these keys from all of the reports
+# ignore:
+#  - kaminari.*
spec/i18n_spec.rb
@@ -0,0 +1,18 @@
+require 'spec_helper'
+require 'i18n/tasks'
+
+describe 'I18n' do
+  let(:i18n) { I18n::Tasks::BaseTask.new }
+  let(:missing_keys) { i18n.missing_keys }
+  let(:unused_keys) { i18n.unused_keys }
+
+  it 'does not have missing keys' do
+    expect(missing_keys).to be_empty,
+      "Missing #{missing_keys.leaves.count} i18n keys, run `i18n-tasks missing' to show them"
+  end
+
+  it 'does not have unused keys' do
+    expect(unused_keys).to be_empty,
+      "#{unused_keys.leaves.count} unused i18n keys, run `i18n-tasks unused' to show them"
+  end
+end
Gemfile
@@ -70,6 +70,7 @@ group :development, :test do
   gem 'spring'
   gem 'byebug'
   gem 'web-console', '~> 2.0'
+  gem 'i18n-tasks'
 end
 
 group :production, :staging do
Gemfile.lock
@@ -130,6 +130,10 @@ GEM
       dotenv (~> 1.0)
     dotenv-rails (1.0.2)
       dotenv (= 1.0.2)
+    easy_translate (0.5.0)
+      json
+      thread
+      thread_safe
     ejs (1.1.1)
     email_validator (1.5.0)
       activemodel
@@ -230,6 +234,7 @@ GEM
     groupdate (2.3.0)
       activesupport (>= 3)
     hashie (2.0.5)
+    highline (1.6.21)
     hike (1.2.3)
     http (0.6.3)
       http_parser.rb (~> 0.6.0)
@@ -240,6 +245,15 @@ GEM
     httpi (2.3.0)
       rack
     i18n (0.7.0)
+    i18n-tasks (0.7.11)
+      activesupport
+      easy_translate (>= 0.5.0)
+      erubis
+      highline
+      i18n
+      slop (~> 3.5)
+      term-ansicolor
+      terminal-table
     inflecto (0.0.2)
     ipaddress (0.8.0)
     jbuilder (2.2.6)
@@ -388,9 +402,14 @@ GEM
       net-ssh (>= 2.8.0)
     teaspoon (0.8.0)
       railties (>= 3.2.5, < 5)
+    term-ansicolor (1.3.0)
+      tins (~> 1.0)
+    terminal-table (1.4.5)
     thor (0.19.1)
+    thread (0.1.4)
     thread_safe (0.3.4)
     tilt (1.4.1)
+    tins (1.3.3)
     turbolinks (2.5.3)
       coffee-rails
     twitter (5.13.0)
@@ -468,6 +487,7 @@ DEPENDENCIES
   gibbon
   github-markdown
   groupdate
+  i18n-tasks
   jbuilder (~> 2.0)
   jquery-rails
   jquery-turbolinks