i18n-tasksで外部の(gemの)localeファイルを利用する
結論
https://github.com/glebm/i18n-tasks/blob/master/templates/config/i18n-tasks.yml
ここで、externalとなっているところがあって、
# - "<%#= %x[bundle show vagrant].chomp %>/templates/locales/%{locale}.yml"
このように#とその中でもコメント(<%#=)してあるので、以下のようにコメントアウト(<%=)すると動きます。
- "<%= %x[bundle show vagrant].chomp %>/templates/locales/%{locale}.yml"
bundle show vagrantのvagrantや/templatesなどの部分は自分が取り込みたいgemなどの外部のパスに適宜変更してください。また、bundle showは各開発者で異なるgemのパスを柔軟に特定するためにこうなっているだけで、必須ではないです。(大抵は使うことになると思いますが)
以下、まあまあどうでもよい説明
https://github.com/glebm/i18n-tasks
というものがあって、Railsを利用している人は結構使っているかと思います。これを使うと多言語対応のlocaleファイルに対するチェックを行えます。
コード上ではその多言語対応されたワードを利用しようとしているがlocalファイル(ja.ymlなど)には存在しないものはi18n-tasks missingで検査できますし、逆にlocalファイルにはあるけど、コード上では使っていないものはi18n-tasks unusedで検査できます。
自分は今回ActiveAdminを利用しようとして以下のエラーが出るようになってしまいました。
% bundle exec i18n-tasks missing
Missing translations (1) | i18n-tasks v0.9.31
+--------+------------------------+-----------------------------------+
| Locale | Key | Value in other locales or source |
+--------+------------------------+-----------------------------------+
| all | active_admin.dashboard | app/admin/dashboard.rb:2 (1 more) |
+--------+------------------------+-----------------------------------+
で、どう対応したかと言うと結論の通りexternalを使いました。
初めは上手く行かなくて1時間くらい悩みましたが、<%=を間違えて<%と書いていました。これだと評価された値が出力されないので、駄目ですね・・・
というわけでこれで何とかなりました。
ちなみにあくまで、上記はexternalなlocalファイルを取り込む、というだけであって、unusedには対応していません。
This data is not considered unused and is never written to.
https://github.com/glebm/i18n-tasks/blob/master/templates/config/i18n-tasks.yml
って書いてありますね。externalのファイルはunusedを考慮しないし、書き込みもされないと。
特定の物をunusedの検査対象外としたい場合はignore_unusedを使いましょう。