カテゴリ: Rails 更新日: 2025/12/16

RailsのI18nと日付・数値フォーマットを完全ガイド!t・l・number_to_delimitedの実践入門

I18nと日付/数値フォーマット:t/l/number_to_delimited の実践
I18nと日付/数値フォーマット:t/l/number_to_delimited の実践

先生と生徒の会話形式で理解しよう

生徒

「Railsで画面の文字を翻訳したり、日付をきれいに表示したりする方法はありますか?アプリによって表示が違うので混乱してしまって…」

先生

「RailsにはI18nという仕組みがあって、翻訳やフォーマットを統一できます。ビューやテンプレートでもよく使うtメソッドやlメソッド、数値フォーマットを整えるヘルパーなどが揃っていますよ。」

生徒

「I18nって聞いたことはあるんですが難しそうです。日付や数字を見やすくするだけでも使えるんですか?」

先生

「もちろんです。まずは身近な例から実際に試しながら学んでみましょう!」

1. I18nとは?Railsで翻訳やフォーマットを管理する仕組み

1. I18nとは?Railsで翻訳やフォーマットを管理する仕組み
1. I18nとは?Railsで翻訳やフォーマットを管理する仕組み

I18n(アイ・エイティーン・エヌ)は「internationalization」の略です。単語が長いため、最初と最後の文字の間に18文字あることからI18nと呼ばれています。RailsではI18nが標準機能として組み込まれており、アプリ全体のテキストを共通のファイルで管理できます。

例えばERB・Haml・Slimなどのテンプレートで使われる画面の見出しやボタンの名前を、YAMLファイルにまとめて管理することができます。また日付や数値のフォーマットなども共通化できるため、アプリの見た目がバラバラにならず、ユーザーにとって読みやすい画面作りができます。

翻訳だけではなく、フォーマットの統一にも使えるのがI18nの大きなメリットです。初心者でも「設定ファイルで文字列を管理する仕組み」と理解すれば十分です。

2. tメソッドで画面文言を翻訳しよう(ERB・Haml・Slim共通)

2. tメソッドで画面文言を翻訳しよう(ERB・Haml・Slim共通)
2. tメソッドで画面文言を翻訳しよう(ERB・Haml・Slim共通)

Railsのビューで最もよく使うI18n機能がtメソッドです。YAMLファイルに定義したキーを呼び出すことで画面に文字を表示します。モデル名やボタン名を変更したい場合、テンプレートではなくYAMLファイルを変更するだけで済むため、とても便利です。


<%= t("users.new.title") %>

YAML側は次のように記述します。


ja:
  users:
    new:
      title: "ユーザー登録画面"

この仕組みにより、ERB・Haml・Slimのいずれを使っていても一定の記述で画面文言を管理できます。大規模なRailsアプリほどI18n管理の便利さが際立つため、初心者のうちに慣れておくと後々の開発が楽になります。

3. lメソッドで日付をフォーマットする方法

3. lメソッドで日付をフォーマットする方法
3. lメソッドで日付をフォーマットする方法

Railsではlメソッドを使うと、日付や時刻を読みやすい形に整えることができます。lは「localize(ローカライズ)」の略で、日付のフォーマットをI18nで管理できるようにするためのヘルパーです。


<%= l @user.created_at %>

例えばI18nで次のように設定すると、lメソッドで統一されたフォーマットが使えるようになります。


ja:
  time:
    formats:
      default: "%Y年%m月%d日 %H:%M"

このように設定すると、年月日や時刻がアプリ全体で統一され、テンプレートに複雑な書き方をしなくて済みます。ビューの読みやすさが向上し、パーシャルやレイアウトでも書き間違いが減るメリットがあります。

4. 数値のフォーマットを整えるnumber_to_delimited

4. 数値のフォーマットを整えるnumber_to_delimited
4. 数値のフォーマットを整えるnumber_to_delimited

大きな数値を読みやすくするために、Railsではnumber_to_delimitedが使えます。例えば10000を「10,000」のように桁区切りで表示できます。金額や数量が登場する画面ではとても役立ちます。


<%= number_to_delimited(1000000) %>

1,000,000

数値フォーマットをテンプレート側で整えると、ERB・Haml・Slimどのテンプレートでも共通の見た目を保てます。Railsには他にもnumber_to_currencyなどの便利なヘルパーがあるため、画面の品質を簡単に上げることができます。

5. I18nとパーシャル・レイアウトの相性が良い理由

5. I18nとパーシャル・レイアウトの相性が良い理由
5. I18nとパーシャル・レイアウトの相性が良い理由

Railsのパーシャルやレイアウトを使うと、画面の共通部分を効率的に管理できます。I18nも同様に共通化の仕組みのため、両者は非常に相性が良いです。

例えばヘッダーやフッターにあるメニュー名をtメソッドで管理すれば、テンプレートファイルを触らずに文言だけを変更できます。また日付フォーマットや数値フォーマットもlメソッドとnumber_to_delimitedを使うだけで統一されるため、パーシャル化したビューでも矛盾のない表示が可能になります。

Railsアプリを長く運用するうえで「画面文言とフォーマットの一元管理」は重要なポイントです。I18nを正しく使えると、画面の種類が増えても品質を保ちながら開発を進められます。

6. 実際の例で学ぶ:ユーザープロフィール画面にI18nを適用する

6. 実際の例で学ぶ:ユーザープロフィール画面にI18nを適用する
6. 実際の例で学ぶ:ユーザープロフィール画面にI18nを適用する

最後に、実際の画面をイメージしながらI18nとlメソッド・number_to_delimitedを組み合わせて使う例を見てみましょう。プロフィール画面では登録日の表示やフォロー数など、さまざまな数値や日付が登場します。


<h2><%= t("users.profile.title") %></h2>

<p>登録日:<%= l @user.created_at %></p>
<p>フォロワー数:<%= number_to_delimited(@user.followers_count) %></p>

YAMLは次のように設定します。


ja:
  users:
    profile:
      title: "ユーザープロフィール"

このように、ビューのテンプレートは非常にシンプルになり、パーシャルやレイアウトに分割されていても一貫性を保てます。RailsのI18n機能は初心者でも扱いやすく、画面表示の整理に大きく役立つ機能です。

関連記事:
カテゴリの一覧へ
新着記事
New1
Ruby
“すべてはオブジェクト”を体感!初心者向けRubyのオブジェクト指向入門【irbで学ぶ】
New2
Ruby
Rubyの標準入出力を完全ガイド!puts・print・pの違いとデバッグ活用法
New3
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
New4
Ruby
Rubyの文字エンコーディング入門!UTF-8・マジックコメント・外部/内部エンコーディングを完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
Rubyのreduceとinject入門!合計計算や集計を初心者向けに分かりやすく解説
No.2
Java&Spring記事人気No2
Ruby
Rubyの文字列エンコーディング完全ガイド!Encoding・force_encoding・encodeを初心者向け解説
No.3
Java&Spring記事人気No3
Ruby
Rubyの始め方ガイド:インストールから最初のHello Worldまで(Windows/Mac/Linux)
No.4
Java&Spring記事人気No4
データベース
PostgreSQLのWHERE句を徹底解説!初心者でもわかるSQLデータ抽出の基本
No.5
Java&Spring記事人気No5
Ruby
Rubyのfind/detect/find_indexを徹底解説!目的のデータを素早く探す方法
No.6
Java&Spring記事人気No6
Ruby
Rubyのselect/reject/filterの使い方を完全解説!初心者向けの条件抽出レシピ
No.7
Java&Spring記事人気No7
Ruby
Rubyで比較演算子を完全解説!==・===・<=>・eql? の使い分け
No.8
Java&Spring記事人気No8
データベース
PostgreSQLで順位付け!ROW_NUMBER関数の使い方を初心者向けに徹底解説