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

Symfonyで複数言語に対応するルーティングを設定する方法|初心者向け国際化(i18n)完全ガイド

Symfonyで複数言語に対応するルーティングを設定する方法
Symfonyで複数言語に対応するルーティングを設定する方法

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

生徒

「日本語と英語でURLを切り替えるサイトって、どうやって作っているんですか?」

先生

「Symfonyでは、ルーティングに言語情報を持たせることで、簡単に多言語対応ができます」

生徒

「プログラミングをやったことがなくても理解できますか?」

先生

「大丈夫です。URLを日本語用と英語用に分けるイメージから説明していきましょう」

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

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

Symfonyのルーティングとは、「このURLにアクセスされたら、この処理を実行する」という道案内の仕組みです。たとえば、/aboutにアクセスしたら「会社紹介ページ」を表示する、といった対応付けを行います。

パソコン初心者の方は、ルーティングを住所録のように考えてください。住所(URL)を見て、どの家(ページ)に行くかを決めているイメージです。

2. 複数言語対応(国際化・ローカリゼーション)とは?

2. 複数言語対応(国際化・ローカリゼーション)とは?
2. 複数言語対応(国際化・ローカリゼーション)とは?

国際化(i18n)とは、最初から多言語に対応できる仕組みを作ることです。ローカリゼーション(l10n)は、日本語や英語など、実際の言語を当てはめる作業を指します。

Symfonyでは、この国際化とローカリゼーションを組み合わせて、「URLに言語を含める」方法がよく使われます。これにより、検索エンジンにもやさしい多言語サイトを作れます。

3. ロケール(locale)という考え方

3. ロケール(locale)という考え方
3. ロケール(locale)という考え方

ロケールとは、「どの言語・地域向けか」を表す情報です。日本語ならja、英語ならenがよく使われます。

Symfonyの複数言語ルーティングでは、このロケールをURLに含めて、/ja//en/のように切り替えます。

4. URLに言語を含めた基本的なルーティング設定

4. URLに言語を含めた基本的なルーティング設定
4. URLに言語を含めた基本的なルーティング設定

まずは、一番シンプルな例です。URLの先頭に言語コードを入れることで、表示言語を切り替えます。


#[Route('/{_locale}/hello', name: 'hello_page')]
public function hello(): Response
{
    return new Response('こんにちは / Hello');
}

この設定により、/ja/hello/en/helloのどちらでも同じページにアクセスできます。SymfonyがURLからロケールを読み取ってくれます。

5. デフォルト言語を設定する方法

5. デフォルト言語を設定する方法
5. デフォルト言語を設定する方法

毎回言語を指定するのが大変な場合は、デフォルト言語を決めておくと便利です。設定ファイルで、最初に使う言語を指定できます。


framework:
    default_locale: 'ja'

これで、言語指定がない場合でも日本語として扱われます。初心者の方は、「最初に表示する言語を決めている」と覚えてください。

6. 言語ごとにURLを分ける実践例

6. 言語ごとにURLを分ける実践例
6. 言語ごとにURLを分ける実践例

実際のWebサイトでは、トップページも言語別に分けることが多いです。


#[Route('/{_locale}/', name: 'top_page')]
public function index(): Response
{
    return new Response('トップページ');
}

このようにすると、/ja/は日本語トップ、/en/は英語トップとして扱えます。検索エンジンにも「別の言語ページ」として認識されやすくなります。

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

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

対応していない言語が指定されるのを防ぐために、使用できる言語を制限できます。


#[Route(
    '/{_locale}/contact',
    name: 'contact_page',
    requirements: ['_locale' => 'ja|en']
)]
public function contact(): Response
{
    return new Response('お問い合わせ');
}

この設定では、日本語と英語以外のURLはエラーになります。初心者の方は、「使える言語を決めている」と考えると分かりやすいです。

8. 複数言語ルーティングがSEOに強い理由

8. 複数言語ルーティングがSEOに強い理由
8. 複数言語ルーティングがSEOに強い理由

URLに言語を含めると、検索エンジンは「このページは日本語用」「このページは英語用」と判断しやすくなります。その結果、Symfonyで作った多言語サイトが、Google検索でも見つかりやすくなります。

特に、Symfony 多言語対応Symfony ルーティング 国際化Symfony i18nといったキーワードで検索される可能性が高まります。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
New2
Laravel
Laravelでバリデーションを設定する方法(基本ルール編)
New3
Symfony
Symfonyで複数言語に対応するルーティングを設定する方法|初心者向け国際化(i18n)完全ガイド
New4
Laravel
Laravelでコントローラを作成する方法!基本のMVC構造を理解しよう
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelの環境別設定とは?local・productionの違いと.envの管理
No.2
Java&Spring記事人気No2
Laravel
Laravelでビューを表示する方法!Bladeテンプレートの使い方入門
No.3
Java&Spring記事人気No3
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.4
Java&Spring記事人気No4
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.5
Java&Spring記事人気No5
Symfony
Symfonyで言語ファイルを作成・管理する方法を完全解説!初心者でもわかるtranslationsディレクトリ入門
No.6
Java&Spring記事人気No6
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.7
Java&Spring記事人気No7
Symfony
Symfonyのローカリゼーションとは?i18n対応の基本を初心者向けに解説
No.8
Java&Spring記事人気No8
Laravel
LaravelでHello Worldを表示する方法を完全解説!初心者向けにルーティングと画面表示をやさしく説明