Symfonyで言語ファイルを作成・管理する方法を完全解説!初心者でもわかるtranslationsディレクトリ入門
生徒
「Webサイトを日本語と英語で切り替えたいんですが、どうすればいいですか?」
先生
「Symfonyでは、言語ごとの文章をまとめた“言語ファイル”を使って簡単に対応できますよ。」
生徒
「言語ファイルって、どこに作るんですか?」
先生
「translationsディレクトリという決まった場所があります。順番に見ていきましょう。」
1. Symfonyの国際化とローカリゼーションとは?
Symfonyの国際化とは、世界中の人が使えるようにアプリケーションを作る考え方です。ローカリゼーションは、その国や地域に合わせて表示を調整することを指します。たとえば、日本では日本語、海外では英語で同じ画面を表示する、といった仕組みです。Symfonyではこの仕組みを標準機能として提供しており、初心者でも安心して多言語対応に取り組めます。
2. translationsディレクトリの役割
Symfonyで言語ファイルを管理する中心となるのがtranslationsディレクトリです。これは「翻訳用の文章をまとめて置く専用のフォルダ」です。机の引き出しに国ごとの説明書を分けて入れておくイメージをすると分かりやすいでしょう。このディレクトリにファイルを置くだけで、Symfonyが自動的に読み込んでくれます。
3. 言語ファイルの基本的な命名ルール
言語ファイルにはルールがあります。基本形は「ファイル名.言語コード.形式」です。たとえば、日本語ならmessages.ja.yaml、英語ならmessages.en.yamlのようになります。言語コードとは、jaが日本語、enが英語を表す短い記号です。このルールを守ることで、Symfonyが自動的にどの言語かを判断します。
4. YAML形式で言語ファイルを作成してみよう
初心者におすすめなのがYAML形式です。見た目がシンプルで、文章と翻訳を分かりやすく書けます。以下は日本語の言語ファイル例です。
# translations/messages.ja.yaml
hello: こんにちは
welcome: ようこそSymfonyへ
左側が「キー」、右側が「表示したい文章」です。キーは目印のようなもので、コード側からこの名前を指定して使います。
5. 英語用の言語ファイルを追加する
同じキーを使って英語版を作成します。キーが同じなので、Symfonyは自動的に言語を切り替えてくれます。
# translations/messages.en.yaml
hello: Hello
welcome: Welcome to Symfony
このように、文章だけを差し替える仕組みなので、プログラムの中身を大きく変える必要はありません。
6. コントローラーで翻訳を使う方法
次に、PHPコードから翻訳文を呼び出します。Symfonyではtrans()という便利な機能を使います。
$message = $translator->trans('hello');
echo $message;
このコードは「hello」というキーに対応する文章を現在の言語設定に合わせて表示します。日本語設定なら「こんにちは」、英語設定なら「Hello」が表示されます。
7. Twigテンプレートで翻訳を表示する
画面表示にはTwigというテンプレートを使います。Twigでは、さらに簡単な書き方ができます。
{{ 'welcome'|trans }}
この1行だけで、言語に応じた文章が表示されます。HTMLを書く感覚で使えるので、初心者でも迷いにくいです。
8. 言語切り替えの考え方
言語の切り替えは「今どの言語を使うか」をSymfonyに伝えることで行われます。URLや設定によって言語を決めることが多く、Symfonyはその情報をもとに適切な言語ファイルを選びます。利用者はファイルを正しい場所に置くだけでよく、複雑な処理を意識する必要はありません。
9. translationsディレクトリ管理のコツ
文章が増えてきたら、ファイルを用途ごとに分けると管理しやすくなります。たとえば、ログイン画面用、エラーメッセージ用などです。引き出しを用途別に整理する感覚で分けると、後から見直すときも迷いません。Symfonyのtranslationsディレクトリは、この整理整頓を前提に作られています。