xxxcaqui.log

ツッコミお待ちしています

Spree2.0のローカライズ(1)

Spreeのデフォルト言語は当然ながら英語なので、日本語化してみます。

なお、前回からの続きでspree_fancyが入っている場合、

Routing Error
No route matches {:controller=>"spree/taxons", :action=>"show", :id=>nil}
Try running rake routes for more information on available routes.

が出るので、spree_fancyが入っていないアプリケーションを作って試してください。

環境

spree_i18nを入れる

Spreeの多言語対応はRails標準のi18nを使って行われており、そのための辞書ファイルがspree_i18nとして開発されています。

というわけで、このgemを入れていきます。*1

まずはGemfileを設定。*2

#Gemfile
gem 'spree_i18n', github: 'spree/spree_i18n', branch: "3-0-stable"

そして、インストール。*3

$ bundle install
$ rails g spree_i18n:install
Would you like to run the migrations now? [Y/n] y

ロケールの設定

コメントアウトされているデフォルトロケールをアンコメントし、さらにデンマーク語(:de)を日本語(:ja)に変更します。

#config/application.rb
module Mystore
  class Application < Rails::Application
    config.i18n.default_locale = :ja
  end
end

これで、サイトの表示が日本語になるはずです。

f:id:xxxcaqui:20130526012000p:plain

通貨の設定

Webの管理画面から設定できます。

f:id:xxxcaqui:20130526015503p:plain

その他

他にもゾーンや都道府県の設定を行う必要があり、これらは通貨と同様にWebの管理画面から設定することができます。

しかし、現在、spree_i18nを有効にすると、管理画面のJavaScriptが有効に動作しなくなるために、ゾーンなどの設定を行うことができません。*4

この問題が解決し次第、続きを書こうと思っています。

*1:未確認ですが、「最低1回はデフォルト言語が英語の状態で管理画面にログインしていないとエラーが出る」という情報があります。その場合は言語を英語に戻してログインした上で再度下記の設定を行なってください。

*2:このエントリ執筆時点では、masterブランチを指定すると依存関係がぶつかったので、3-0-stableを指定しています。

*3:下記のrails g spree_i18n:installは公式マニュアルに書かれていませんでしたが、実行しないと「ActiveRecord::StatementInvalid in Spree/home#index Could not find table 'spree_taxonomy_translations'」といったエラーが出力されます。

*4:ロケールを:enに設定すると出来る。