i18nの漏れをチェックする

# i18nの漏れをチェックする
[glebm/i18n-tasks](https://github.com/glebm/i18n-tasks)
で、i18nの漏れをチェックできるようだ。

```
% bundle exec i18n-tasks
Usage: i18n-tasks [command] [options]
    -v, --version            Print the version
    -h, --help               Show this message

Available commands:

    health                   is everything OK?
    missing                  show missing translations
    translate-missing        translate missing keys with Google Translate
    add-missing              add missing keys to locale data
    find                     show where keys are used in the code
    unused                   show unused translations
    remove-unused            remove unused keys
    eq-base                  show translations equal to base value
    normalize                normalize translation data: sort and move to the right files
    data                     show locale data
    data-merge               merge locale data with trees
    data-write               replace locale data with tree
    data-remove              remove keys present in tree from data
    tree-translate           Google Translate a tree to root locales
    tree-merge               merge trees
    tree-filter              filter tree by key pattern
    tree-rename-key          rename tree node
    tree-subtract            tree A minus the keys in tree B
    tree-set-value           set values of keys, optionally match a pattern
    tree-convert             convert tree between formats
    config                   display i18n-tasks configuration
    gem-path                 show path to the gem
    irb                      start REPL session within i18n-tasks context
    xlsx-report              save missing and unused translations to an Excel file
```

## missing
色々機能はあるけど（Google翻訳を使うとかね）、
`missing`**のみ使用することとした**。

### missingでチェックしてくれるのはどんなこと？

#### missingパターン1<br />`t()`で呼ばれてるけどどこのYAMLににもないよ！

ターミナル出力

|Locale|Key|Value in other locales or source|
|:-----------|:-----------|:-----------|
| all | hoge.foo.bar | ファイル名.rb:行数 |

<br />
####  missingパターン2<br />`ja.yml`にはあるけど`他のYAML`にはないよ！

ターミナル出力

|Locale|Key|Value in other locales or source|
|:-----------|:-----------|:-----------|
| en | hoge.foo.hello | ja こんにちわ |
| zh-CN | hoge.foo.hello | ja こんにちわ |

同じキーでも言語ごとに1行使って表示されるので、扱う言語が多いと縦に長い出力となりやや辛い。

###  missingのまとめ

```
t('キー')
　-> パターン1 どのYAMLにもないよ
　-> パターン2 ja.ymlにはあるけど他のにはないよ
```
**ということで, `t()`で呼ばれてないものに関してはチェックできない**。

## 設定ファイル
[glebm/i18n-tasks](https://github.com/glebm/i18n-tasks)の設定ファイルは`README.md`にある通り、自分で`cp`コマンドで持ってこよう。

とうことで設定ファイルが、`config/i18n-tasks.yml`にできる。

## 設定ファイルの設定
自分が設定を加えた（もしくは変更した）項目は次の通り。
記載した以外のところは`cp`コマンドでもってきたままとした。

```
base_locale: ja
locales: [ja, en]

data:
  router: pattern_router

read from:
  read:
    - 'config/locales/%{locale}.yml'
    - 'config/locales/**/%{locale}.yml'
    - 'vendor/**/devise*/**/%{locale}.yml'
    - 'vendor/**/doorkeeper*/**/%{locale}.yml'
```

vendor配下の各種YAMLの場所も教えてあげないと
**`t()`で呼ばれてるけどどこのYAMLににもないよ！**
ということになってしまうので必須。

## 余談
missingだけ使うとはじめに書いたので、ここらは余談。

### unused
`missing`は**`t()`メソッドにはあるけどYAMLにないよ**のチェックだった。
`unused`はその逆。 **YAMLにはあるけど`t()`メソッドにはないよ** だ。

### add-missing
親切にも`missing`のチェックによって見つかったYAMLにないキーをYAMLに出力してくれる。ただし、自分で規則性をもってYAMLファイルを分割していた場合は、この機能はあってないようなものだろう。