sfFormのメッセージの日本語化を試してみる

via http://d.hatena.ne.jp/brtRiver/20081012/1223826291

早速やってみました。symfony 1.2でやったのですが、デフォルトだとi18nがoffになっているのでそれをはずす必要があるようですが、それ以外は問題なく動作しました。

まずは上記のページの通りにアプリケーションのi18nディレクトリにXMLファイルを配置します。

その次にi18nを有効に。アプリケーションのsettings.ymlのコメントアウトをはずすだけです。

# apps/frontend/config/settings.yml
all:
  .settings:
    i18n:    on

他にも色々書いてあるので適宜修正してください。.settingsの行がコメントアウトしてある場合はそこも外さないと動作しません。

それからFormの設定。僕はDoctrineなのでDoctrineの共通フォームファイルを修正します。

<?php
// lib/form/doctrine/base/BaseFormDoctrine.class.php
abstract class BaseFormDoctrine extends sfAsialFormDoctrine
{
  public function setup()
  {
     $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('form');
  }
}

setupメソッドが最初から記述されてあるのでそこに追加しました。

これでsymfony ccをした後にエラーを表示すると・・・

できました!素晴らしいです。この付近は後でもうちょっと調べてみようと思います。