カテゴリ: Symfony 更新日: 2026/03/15

Symfonyで言語別ルーティングを完全解説!初心者でもわかるロケール付きURL設計

Symfonyで言語別ルーティング(ロケール付きURL)を構成する方法
Symfonyで言語別ルーティング(ロケール付きURL)を構成する方法

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

生徒

「Webサイトを日本語と英語で切り替えたいんですが、URLはどうなるんですか?」

先生

「Symfonyでは、URLの中に言語情報を入れる“ロケール付きURL”で管理できます。」

生徒

「ロケールって何ですか?難しそうです…」

先生

「大丈夫ですよ。言語を表す短い記号だと思えばOKです。順番に見ていきましょう。」

1. Symfonyのルーティングとは?

1. Symfonyのルーティングとは?
1. Symfonyのルーティングとは?

Symfonyのルーティングとは、ブラウザからアクセスされたURLと、プログラムの処理を結びつける仕組みです。たとえば「/about」というURLにアクセスしたら、自己紹介ページを表示する、といった対応表のようなものです。

初心者の方は、ルーティングを住所と目的地を結ぶ地図だと考えると分かりやすいです。住所がURL、目的地がプログラムの処理です。

2. ロケールとは何かをやさしく解説

2. ロケールとは何かをやさしく解説
2. ロケールとは何かをやさしく解説

ロケール(locale)とは、言語や地域を表す情報のことです。日本語なら「ja」、英語なら「en」といった短い文字で表します。

Symfonyでは、このロケールをURLに含めることで、「/ja/page」「/en/page」のように言語別のページを作れます。これを言語別ルーティング多言語対応URLと呼びます。

3. ロケール付きURLの基本構造

3. ロケール付きURLの基本構造
3. ロケール付きURLの基本構造

ロケール付きURLは、とてもシンプルな形をしています。URLの最初に言語コードを入れるだけです。


/ja/
/en/
/fr/

これだけで、「どの言語で表示するか」をSymfonyが判断できます。まるで本の表紙に「日本語版」「英語版」と書いてあるようなイメージです。

4. routes.yamlでロケール付きルーティングを書く

4. routes.yamlでロケール付きルーティングを書く
4. routes.yamlでロケール付きルーティングを書く

Symfonyでは、routes.yamlという設定ファイルにルーティングを書きます。まずは、ロケールをURLに含めた基本形を見てみましょう。


home:
  path: /{_locale}/
  controller: App\Controller\HomeController::index

{_locale}の部分が、言語を受け取る場所です。ここに「ja」や「en」が入ります。

5. 対応する言語を制限する方法

5. 対応する言語を制限する方法
5. 対応する言語を制限する方法

どんな文字でもロケールとして受け取れると困る場合があります。そのときは、使える言語を指定します。


home:
  path: /{_locale}/
  controller: App\Controller\HomeController::index
  requirements:
    _locale: ja|en

これで、日本語と英語だけが有効になります。不要な言語を防ぐ安全装置のような役割です。

6. デフォルト言語を設定する

6. デフォルト言語を設定する
6. デフォルト言語を設定する

「言語が指定されていない場合は日本語にしたい」というケースもよくあります。その場合は、デフォルト値を設定します。


home:
  path: /{_locale}/
  controller: App\Controller\HomeController::index
  defaults:
    _locale: ja

これで「/」にアクセスした場合でも、日本語ページが表示されます。

7. コントローラーでロケールを使う

7. コントローラーでロケールを使う
7. コントローラーでロケールを使う

コントローラーでは、現在のロケールを簡単に取得できます。表示する文章を切り替えるときに使います。


public function index(Request $request)
{
  $locale = $request->getLocale();
  return $this->render('home.html.twig', [
    'locale' => $locale
  ]);
}

これで、今どの言語で表示しているかが分かります。

8. SEOに強い多言語URL設計の考え方

8. SEOに強い多言語URL設計の考え方
8. SEOに強い多言語URL設計の考え方

ロケール付きURLは、SEO対策にも有効です。検索エンジンは「/ja/」と「/en/」を別ページとして認識します。

そのため、Symfony 多言語対応ロケール付きURL言語別ルーティングといったキーワードで検索されやすくなります。

URLで言語が分かる構造は、ユーザーにも検索エンジンにも親切な設計です。

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyでフォームにバリデーションルールを設定する方法を解説!初心者でもわかる入力チェックの基本
New2
Symfony
Symfonyのコントローラで404・403エラーを制御する方法を初心者向けに解説!
New3
Symfony
Symfonyで言語別ルーティングを完全解説!初心者でもわかるロケール付きURL設計
New4
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelでモデルを作成する方法をやさしく解説!php artisan make:model入門
No.2
Java&Spring記事人気No2
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.3
Java&Spring記事人気No3
Symfony
Symfonyでユーザーごとのセッションを管理する方法を完全解説!初心者でも安心
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniter 4でカスタムSparkコマンドを作成!CLIとバッチ処理を完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelで特定のSeederだけ実行する方法!db:seed --class=で必要なデータだけ登録
No.6
Java&Spring記事人気No6
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのリソースコントローラの使い方!CRUDを簡単に実装しよう
No.8
Java&Spring記事人気No8
Laravel
Laravelの認証ミドルウェアauthとguestを徹底解説!初心者でもわかるルート制御ガイド