カテゴリ: 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
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.2
Java&Spring記事人気No2
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
データベース
データベース正規化とは?初心者でもわかるデータ重複を防ぐSQL設計の基本