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

Railsの多言語URL設計を完全ガイド!初心者でもわかるlocale・スラッグ・人間可読URL

多言語URLの設計:localeスコープ・スラッグ・人間可読URLの作り方
多言語URLの設計:localeスコープ・スラッグ・人間可読URLの作り方

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

生徒

「Railsで多言語対応する時、URLの設計ってどうすればいいんですか?」

先生

「それはとても大事な話ですね。Railsではlocaleという仕組みを使って、URLに言語を含める方法がありますよ。」

生徒

「URLに言語を含めるって、どんな感じですか?」

先生

「例えば/ja/products/en/productsのように、日本語と英語で切り替えができるようにするんです。人間が読んでもわかりやすいURLになりますよ!」

1. 多言語URLとは?

1. 多言語URLとは?
1. 多言語URLとは?

多言語URL(たげんごゆーあーるえる)とは、Webサイトを日本語や英語など複数の言語で表示するために、URLに言語コード(例:ja、en)を入れる設計のことです。例えば日本語なら/ja/products、英語なら/en/productsのようにします。

この設計をすることで、ユーザーが見ている言語が一目で分かり、SEO(検索エンジン最適化)にも効果的になります。

2. localeスコープでURLに言語を含める

2. localeスコープでURLに言語を含める
2. localeスコープでURLに言語を含める

Railsではscopeという機能を使って、URLに言語コードを入れることができます。これを「localeスコープ」と呼びます。以下はその実装例です。


Rails.application.routes.draw do
  scope "(:locale)", locale: /ja|en/ do
    resources :products
  end
end

このように書くと、/ja/products/en/productsのようなURLが使えるようになります。

locale(ロケール)とは、「表示する言語や地域設定」のことです。

3. URLにスラッグを使って人間が読めるURLに

3. URLにスラッグを使って人間が読めるURLに
3. URLにスラッグを使って人間が読めるURLに

Railsでは、ID番号だけのURLではなく、スラッグ(slug)を使って/products/ruby-bookのように「人間が読めるURL」にすることもできます。

スラッグとは、記事のタイトルなどから生成した短くて分かりやすい英語の文字列です。

例えば、次のようにURLが変わります。

  • 通常:/products/1
  • スラッグ使用:/products/ruby-book

このようにすることで、SEOに強くなり、検索エンジンからも評価されやすくなります。

4. スラッグを使うためのルーティング設定

4. スラッグを使うためのルーティング設定
4. スラッグを使うためのルーティング設定

スラッグを使う場合、ルーティングでは通常のIDの代わりに:idの部分をスラッグで処理する必要があります。Railsでは特別な設定をしなくても、:idの部分にスラッグを渡せます。


get '/products/:id', to: 'products#show', as: 'product'

ただし、コントローラ側でIDではなくスラッグで検索するようにします。


def show
  @product = Product.find_by(slug: params[:id])
end

5. localeとslugを組み合わせた多言語対応のURL例

5. localeとslugを組み合わせた多言語対応のURL例
5. localeとslugを組み合わせた多言語対応のURL例

多言語対応とスラッグを組み合わせると、以下のような人間が読みやすいURLが作れます。

  • /ja/products/ruby-book(日本語ページ)
  • /en/products/ruby-book(英語ページ)

これにより、ユーザーにも分かりやすく、Googleなどの検索エンジンにも評価されやすくなります。

6. デフォルトの言語設定とリダイレクト制御

6. デフォルトの言語設定とリダイレクト制御
6. デフォルトの言語設定とリダイレクト制御

もしURLに言語コード(locale)がない場合、自動でリダイレクトして指定の言語に移動させたいこともあります。その場合はApplicationControllerでbefore_actionを使って制御します。


before_action :set_locale

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end

I18n(アイ・エイ・チー・エヌ)は、Railsの多言語対応をするための仕組みです。I18n.localeに値を設定することで、表示する言語を切り替えることができます。

7. URLの自動生成にもlocaleを含めるには?

7. URLの自動生成にもlocaleを含めるには?
7. URLの自動生成にもlocaleを含めるには?

Railsでlink_toなどのURL生成時にもlocaleを含めたい場合、default_url_optionsを設定しておくと便利です。


def default_url_options
  { locale: I18n.locale }
end

これにより、Railsが自動で生成するすべてのURLに、今の言語コードが含まれるようになります。

8. 多言語URLとSEOの関係

8. 多言語URLとSEOの関係
8. 多言語URLとSEOの関係

Googleの検索エンジンは、URLの構造を見てページの内容や言語を判断します。そのため、/ja//en/を含めることで、Googleにも「これは日本語ページです」「これは英語ページです」と伝えることができます。

また、スラッグを使ってページの内容がわかるURLにすることで、検索キーワードとマッチしやすくなり、検索結果にも表示されやすくなります。

関連記事:
カテゴリの一覧へ
新着記事
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
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう