How to Localize Ruby on Rails Application
はじめに
Ruby on Railsのアプリケーションのローカライズには、Ruby I18nフレームワークと、YAMLファイルで記述されたローカライズ文字列のカタログを用います。本ガイドではRuby on Rails バージョン3以降を使用したアプリケーションの国際化についてご案内します。
ローカライゼーションの基本
ローカライゼーション文字列の追加
Ruby on Rails(以下Rails)では、すでにRuby I18nモジュールが有効になっており、I18n.t
メソッドで各言語の文字列を呼び出すことができます。たとえば、Railsのビュー内で、
<%%= t ‘hello’ %>
を呼び出すと、標準のロケール(en, 英語)では、config/locales/en.yml
内の以下の文字列が呼び出されます。
en:
hello: “Hello world”
日本語のローカライゼーション文字列を追加するには、config/locales/ja.yml
ファイルを作成し、以下のような内容を記述します。
ja:
hello: “こんにちは世界”
英語と日本語にローカライズされたアプリケーションのディレクトリ構成は例えば、以下のようになっています。
ロケールの切り替え
アプリケーション内でロケールの切り替えを行うには、app/controllers/application_controller.rb
のApplicationController内に以下のような記述を追加します。
before_action :set_locale # Rails 4の場合は before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
localeパラメータを追加してアプリケーションのURLにアクセスすると(例: http://localhost:3000?locale=ja
)各言語のローカライゼーション文字列に置き換えられたコンテンツを取得することができるようになります。
標準のロケールを指定するには、config/application.rb
内で以下のように指定を行います。
config.i18n.default_locale = :ja # 標準ロケールを日本語に
アプリケーションのローカライゼーションの例
以下では、実際にRailsアプリケーションに触れながらアプリケーションのローカライゼーションを行っていきます。
railsコマンドで、localized_appプロジェクトを作成します。
$ rails new localized_app
localized_app
フォルダに移動します。
$ cd localized_app/
HomeControllerを作成します。
$ rails g controller home
config/routes.rb
を編集し、以下のようにルートを追加します。
LocalizedApp::Application.routes.draw do
root to: "home#index"
end
また、app/controllers/home_controller.rb
を以下のように編集します。
class HomeController < ApplicationController
def index
end
end
ビューのapp/views/home/index.html.erb
を以下のように編集します。
<h1><%%= t 'hello' %></h1>
<p><%%= t 'messages.greet' %></p>
英語のロケールファイルconfig/locales/en.yml
に以下の内容が含まれていることを確認します。
en:
hello: "Hello world"
messages:
greet: "Greetings from Conyac"
日本語のロケールファイルconfig/locales/ja.yml
を作成し、以下のように編集します。
ja:
hello: "こんにちは世界"
messages:
greet: "Conyacからのご挨拶"
app/controllers/application_controller.rb
のApplicationController内を以下のように編集します。
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
ここで、http://localhost:3000
にアクセスすると、以下のような英語メッセージが表示されます。
また、http://localhost:3000?locale=ja
にアクセスすると、以下のような日本語のメッセージが表示されます。
まとめ
Ruby on Railsは標準で含まれているRuby I18nモジュールと、ユーザーが作成した各言語へのローカライズ用のYAMLファイルで簡単にローカライズを行うことができます。
もし、ご質問やご感想がありましたら、support@conyac.cc宛までよろしくお願いします。ConyacでYAMLファイルをアップロードすれば、選択した言語へ、早く、正確に翻訳を行うことができます。
参考サイト
- Rails internationalization (I18n) API - Ruby on Rails Guides 通貨や時刻、ActiveRecordの属性のローカライズ、URLパスやドメイン別のロケール変更などより詳しい情報については上記のRails Guidesをご参照ください。
Need experienced translators to translate your localization files? Conyac is the perfect solution!
Reliable, Fast, and Affordable.