Symfony2で翻訳機能(i18n)を使用する

2014年1月3日

symfony-logo

Symfony2 で翻訳 (i18n) 機能を使う方法を整理しました。翻訳機能を使用すると国際化対応が容易になることはもちろんですが、日本語しか扱わないプロジェクトでもメリットがあります。たとえば、日本語のタイピング量が減ったり、エディタの辞書単語補完機能を翻訳ファイルに適用してコーディング速度を上げたり、システムから出力する日本語メッセージを一元管理したり。

Symfony2 の翻訳機能はとても簡単に利用できるので、積極的に翻訳機能を利用していきましょう。

動作確認環境

  • PHP 5.4
  • Symfony 2.3

目次

  1. locale を日本語にする
  2. fallback locale と default locale を設定
  3. 翻訳の辞書ファイルを作成する
  4. twig で翻訳機能を利用する

locale を日本語にする

parameters.yml の locale を ja に設定します。

parameters:
    ...
    locale: ja
    ...

fallback locale と default locale を設定

app/config/config.yml にて fallback locale と default_locale を定義します。fallback locale は locale が取得できない場合に使用されます。

framework:
    ...
    translator:      { fallback: %locale% }
    ...
    default_locale:  %locale%
    ...

翻訳の辞書ファイルを作成する

日本語の翻訳ファイルは src/Kara/HogeBundle/Resources/translations/messages.ja.yml に作成します。フォーマットは yml が一番見やすいと思います。

hoge: ほげ
message:
    piyo: ぴよ
    huga: ふが

twig で翻訳機能を利用する

twig では trans タグや trans フィルタなどで翻訳できます。状況に応じてお好きなほうでどうぞ。

<p>{% trans %}hoge{% endtrans %}</p>
<p>{% trans %}message.piyo{% endtrans %}</p>
<p>{{ 'message.huga'|trans }}</p>

翻訳結果

<p>ほげ</p>
<p>ぴよ</p>
<p>ふが</p>

-技術ブログ
-