spring of life

技術、ときどき日常のブログ(予定)

javascript の I18n 対応

Rails に含まれてる javascript に日本語が入ってたので多言語化対応してみた

こういう gem があるみたいなので使ってみた!

github.com

  • まずは gem をインストール
# Gemfile

gem 'i18n-js'
  • application.jsを修正
...
//= require i18n
//= require i18n/translations
...
  • app/views/layouts/application.html.erbを修正
<head>
  ...
  <script type="text/javascript">
    I18n.defaultLocale = "<%= I18n.default_locale %>";
    I18n.locale = "<%= I18n.locale %>";
    I18n.fallbacks = true;
  </script>
  ...
</head>
  • bundle exec rake i18n:js:exportを実行して各言語用のファイルを作成
    • config/locales以下の言語ファイルがtranslations.jsにコピーされる
  • あとはjavascript内でI18n.t('hoge')みたいな感じで書けばOK

以下はおまけ〜

  • config/i18n-js.ymlにいろいろ設定が書ける
    • 詳しくは 上のgithubのREADME見た方がいいかな。。。
    • 例えばこんな感じ
export_i18n_js: 'vendor/assets/javascripts' # i18n.js を出力する場所を指定
translations: # translations.js の設定
  - file: 'app/assets/javascripts/i18n/translations.js' # ファイルの出力場所
    only: '*.hoge' # ここに指定したものがtranslations.jsに追加される

この設定で言語ファイルが↓だと、fugatranslations.jsにコピーされない

# config/locales/ja.yml

ja:
  hoge:
    piyo: ほげ
  fuga:
    piyo: ふが