Symfonyのローカリゼーションとは?i18n対応の基本を初心者向けに解説
生徒
「Webサイトを日本語と英語で切り替えて表示したいんですが、Symfonyでできますか?」
先生
「できますよ。Symfonyにはローカリゼーションという仕組みが用意されています。」
生徒
「ローカリゼーションって、難しそうな言葉ですね…」
先生
「言葉は難しく見えますが、考え方はとてもシンプルです。順番に見ていきましょう。」
1. Symfonyのローカリゼーションとは?
Symfonyのローカリゼーションとは、使う人の言語や地域に合わせて、画面の表示内容を切り替える仕組みのことです。例えば、日本の人には日本語、海外の人には英語で表示するといった対応ができます。
このような仕組みはi18n(アイエイティーン)とも呼ばれます。これは「internationalization(国際化)」という英単語の省略で、最初の文字と最後の文字の間に18文字あることから、このように呼ばれています。
Symfonyでは、ローカリゼーション機能が標準で用意されているため、特別な準備をしなくても、多言語対応のWebアプリを作りやすいのが特徴です。
2. なぜローカリゼーションが必要なのか
ローカリゼーションが必要な理由は、とても単純です。言語が違うと、内容が理解できないからです。たとえば、日本語しか書かれていないサイトを、英語しか読めない人が見ても、何が書いてあるかわかりません。
Symfonyでローカリゼーション対応をすると、同じプログラムを使いながら、表示する言葉だけを切り替えることができます。これは、看板の文字を付け替えるイメージに近いです。建物は同じでも、看板の言葉を変えるだけで、違う人に伝えられるようになります。
この仕組みを使うことで、プログラムを何個も作らずに、効率よく多言語対応ができるようになります。
3. ロケールとは何か
Symfonyのローカリゼーションでよく出てくる言葉にロケール(locale)があります。ロケールとは、「どの言語・地域向けか」を表す情報です。
たとえば、日本語ならja、英語ならenというように表します。日本の日本語ならja_JP、アメリカの英語ならen_USといった形です。
Symfonyでは、このロケールをもとにして、「どの言葉を表示するか」を判断します。つまり、ロケールは言葉の切り替えスイッチのような役割を持っています。
4. 翻訳ファイルの基本構造
Symfonyでは、表示する言葉を翻訳ファイルにまとめて管理します。翻訳ファイルとは、「この言葉は日本語ではこう表示する」「英語ではこう表示する」といった対応表のようなものです。
一般的にはtranslationsというフォルダを作り、その中に言語ごとのファイルを置きます。たとえば、日本語用、英語用といった形です。
# translations/messages.ja.yaml
hello: こんにちは
# translations/messages.en.yaml
hello: Hello
このように、同じキー(ここではhello)に対して、言語ごとの言葉を用意します。キーは共通で、表示される文字だけが変わる仕組みです。
5. Symfonyで翻訳を表示する方法
翻訳ファイルを用意したら、次は画面に表示します。Symfonyでは、翻訳機能を使って、キーを指定するだけで自動的に適切な言語が表示されます。
{{ 'hello'|trans }}
このように書くと、ロケールが日本語なら「こんにちは」、英語なら「Hello」と表示されます。プログラム側では、どの言語かを細かく意識しなくてよいのがポイントです。
初心者の方は、「キーを指定すると、裏でSymfonyが翻訳してくれる」と覚えておくと理解しやすいです。
6. ロケールの切り替え方法
ローカリゼーションでは、ロケールを切り替えることで表示言語が変わります。Symfonyでは、URLや設定によってロケールを決めることができます。
# config/routes.yaml
index:
path: /{_locale}/
controller: App\Controller\DefaultController::index
この例では、URLに/ja/や/en/を付けることで、ロケールが切り替わります。URLの一部で言語を指定できるため、利用者にもわかりやすい構成になります。
7. 日付や数値のローカリゼーション
ローカリゼーションは、言葉だけでなく、日付や数字の表示にも関係します。たとえば、日本では「2026年1月」と書きますが、英語では「January 2026」と書くことが多いです。
Symfonyでは、ロケールに応じて、こうした表記の違いにも対応できます。これは、同じ情報でも、見る人にとって自然な形で表示するために重要です。
初心者のうちは、「言葉以外の表示も、地域ごとに変えられる」という点を覚えておくだけで十分です。
8. 初心者がつまずきやすいポイント
Symfonyのローカリゼーションで、初心者がよく困るのは、「なぜ表示が切り替わらないのか」という点です。その多くは、ロケール設定や翻訳ファイル名のミスが原因です。
ファイル名と言語コードが一致しているか、キーの名前が同じかを確認するだけで、解決することが多いです。ローカリゼーションは仕組みがわかれば難しくありません。
まずは、日本語と英語の2つだけで試してみると、Symfonyのi18n対応の流れが自然と理解できるようになります。