Symfonyで翻訳文字列を表示する方法を完全解説!trans・transChoiceの使い方を初心者向けにやさしく説明
生徒
「Symfonyで、日本語と英語を切り替えて表示できるって聞いたんですが、本当ですか?」
先生
「できますよ。Symfonyには翻訳機能が用意されていて、決まった書き方をするだけで言語を切り替えられます」
生徒
「プログラミング未経験でも使えますか?」
先生
「大丈夫です。今日はtransとtransChoiceという基本だけを、例え話を交えながら説明します」
1. Symfonyの翻訳機能とは?
Symfonyの翻訳機能とは、画面に表示する文字を言語ごとに切り替える仕組みです。例えば、日本語では「こんにちは」、英語では「Hello」と表示するといったことが簡単にできます。これを国際化やローカリゼーションと呼びます。
難しそうに聞こえますが、実際は「文字の置き換え」をしているだけです。箱にラベルを貼り替えるイメージで考えると分かりやすいでしょう。
2. 翻訳キーと翻訳文字列の考え方
Symfonyでは、直接「こんにちは」と書くのではなく、翻訳キーという合言葉のようなものを使います。例えば「app.greeting」というキーを使い、日本語では「こんにちは」、英語では「Hello」と設定します。
この方法により、プログラムの中身を変えなくても、表示言語だけを自由に切り替えられるようになります。これがSymfony翻訳の基本的な考え方です。
3. transメソッドで翻訳文字列を表示する
transは、Symfonyで最もよく使われる翻訳メソッドです。翻訳キーを指定すると、現在の言語に合った文字を表示してくれます。
use Symfony\Contracts\Translation\TranslatorInterface;
public function index(TranslatorInterface $translator)
{
echo $translator->trans('app.greeting');
}
このコードでは「app.greeting」という翻訳キーを指定しています。日本語設定なら「こんにちは」、英語設定なら「Hello」が表示されます。
こんにちは
4. Twigテンプレートでtransを使う方法
Symfonyでは、画面表示にTwigというテンプレートを使います。Twigでも簡単に翻訳文字列を表示できます。
<p>{{ 'app.greeting'|trans }}</p>
パイプ記号の後にtransを書くことで、「この文字は翻訳してください」という意味になります。HTMLを書いている感覚で使えるので、初心者でも安心です。
5. 変数を含めた翻訳の書き方
翻訳文字列の中に名前や数字を入れたい場合もあります。そんなときはプレースホルダーを使います。
echo $translator->trans('app.welcome', [
'%name%' => '太郎'
]);
翻訳ファイル側では「%name%さん、ようこそ」と書いておくことで、名前部分だけを差し替えられます。
太郎さん、ようこそ
6. transChoiceで数によって文章を変える
transChoiceは、数によって表示内容を変えたいときに使います。例えば「1件の通知」「5件の通知」のような場合です。
echo $translator->transChoice(
'app.notification',
3
);
翻訳ファイルでは「1件|%count%件」のように書いておきます。数に応じて自動で切り替わるため、とても便利です。
7. transChoiceを使うときの注意点
最近のSymfonyではtransChoiceは非推奨となり、transに統合されています。ただし、古いプロジェクトでは今も使われているため、意味を知っておくことは大切です。
「数で文章が変わる翻訳」と覚えておくだけで十分です。今後はtrans一本で対応できるようになっています。
8. 翻訳機能を使うメリット
Symfonyの翻訳機能を使うことで、後から多言語対応を追加しやすくなります。日本語サイトを英語対応にしたい場合でも、翻訳ファイルを追加するだけで対応できます。
最初は難しく感じるかもしれませんが、「キーを使って文字を表示する」という考え方に慣れると、とてもシンプルです。