カテゴリ: 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のルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.2
Java&Spring記事人気No2
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
No.3
Java&Spring記事人気No3
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.4
Java&Spring記事人気No4
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.5
Java&Spring記事人気No5
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.6
Java&Spring記事人気No6
CodeIgniter
CodeIgniter(コードイグナイター)入門!どんな開発案件に向いている?利用シーン別解説
No.7
Java&Spring記事人気No7
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelのview()関数の使い方を完全ガイド!初心者でもわかるBladeテンプレート表示と画面作成