Railsのi18n入門:config/localesの基本と翻訳キーの書き方【保存版】
生徒
「Railsで日本語と英語を切り替えられるって聞いたんですが、本当に初心者でもできますか?」
先生
「Railsにはi18nという仕組みが最初から用意されていて、設定ファイルを書くだけで多言語対応ができます。」
生徒
「i18nって何ですか?難しそうな名前で不安です…」
先生
「大丈夫です。まずはconfig/localesというフォルダの役割から、ゆっくり見ていきましょう。」
1. Railsとi18nとは?日本語化の全体像
Railsのi18nとは、Internationalizationの略で、アプリを多言語対応しやすくする仕組みです。日本語では「国際化」と呼ばれますが、ここでは画面の文字を日本語や英語に切り替える仕組みと考えると分かりやすいです。Railsでは、このi18n機能が最初から組み込まれており、追加のライブラリを入れなくても使えます。
例えば、同じ画面でも日本の人には日本語、海外の人には英語で表示できるようになります。これを多言語対応やロケール対応と呼びます。ロケールとは「言語や地域の設定」のことです。
2. config/localesディレクトリの役割
Railsプロジェクトには、最初からconfig/localesというフォルダがあります。ここは、翻訳用のファイルを置く専用の場所です。翻訳ファイルは、基本的にYAML(ヤムル)形式で書きます。YAMLとは、設定を人間が読みやすい形で書けるファイル形式です。
例えるなら、config/localesは「翻訳辞書を入れておく本棚」、YAMLファイルは「言語ごとの辞書一冊」です。
3. 日本語ファイルja.ymlの基本構造
日本語用の翻訳ファイルは、一般的にja.ymlという名前で作ります。最初に書くのは、言語コードであるjaです。その下に、翻訳したい文章をキーと値で書いていきます。
ja:
hello: "こんにちは"
この例では、helloという翻訳キーに対して「こんにちは」という日本語を設定しています。キーは自分で自由に決められますが、後から見て意味が分かる名前にするのがポイントです。
4. 翻訳キーとは?キーと文章の関係
翻訳キーとは、文章そのものではなく、文章を呼び出すための名前です。直接「こんにちは」と書かずに、helloというキーを使うことで、言語が変わっても同じキーで表示を切り替えられます。
これは、テレビのリモコンのボタンに似ています。ボタン自体は同じでも、設定次第で違う動きをします。Railsでは、このキーを使って表示する文章を切り替えます。
5. ビューで翻訳を表示する方法
Railsのビュー(画面表示)では、tメソッドを使って翻訳を呼び出します。tはtranslateの略です。
<p><%= t('hello') %></p>
このように書くと、ja.ymlに設定した「こんにちは」が画面に表示されます。ビューに直接日本語を書かないことで、後から英語対応するときも楽になります。
6. 階層構造で翻訳を整理する
翻訳が増えてくると、キーを整理したくなります。YAMLでは、階層構造を使ってまとめることができます。
ja:
users:
title: "ユーザー一覧"
name: "名前"
この場合、ビューでは次のように呼び出します。
<h1><%= t('users.title') %></h1>
フォルダ分けされた引き出しのように考えると理解しやすいです。
7. デフォルトロケールを日本語にする
Railsでは、初期設定が英語になっています。日本語を標準にしたい場合は、設定ファイルでdefault_localeを変更します。
# config/application.rb
config.i18n.default_locale = :ja
これで、特別な指定をしなくても日本語が使われるようになります。
8. i18nを使うメリットと注意点
i18nを使う最大のメリットは、文章の管理が一か所にまとまることです。文章を変更したいときも、ビューを探し回る必要がありません。一方で、キー名が分かりにくいと、どの文章なのか迷ってしまいます。初心者のうちは、短くても意味の分かるキー名を意識しましょう。