PGメモ

非エンジニアの記録

symfony1.4 sfFormのエラーメッセージ国際化

sfFormでエラーメッセージを国際化してみる。

今回1点ハマったのは、sfFormをそのまま出力すれば問題なく辞書で設定したものが出るのだが、いかんせん見た目を変えたいとき、$hogeform['name']->getError()などをしたいわけですよ。しかしそう書いただけではまったく翻訳されません。

★そもそもどこでメッセージは翻訳されてるのか。
symfony/lib/i18n/sfMessageFormat.class.php
にあるformatString関数でメッセージを翻訳している。

ここで翻訳に使用するカタログをロードして、foreachで回し検索をかけるのである。
sfFormそのままを出力したものはここを通過しているが、$hogeform['name']->getError()で書いたものは通らない。

★驚愕の事実

<?php echo __($hogeform['name']->getError()); ?>

で翻訳される。
当たり前と言えば当たり前だが、盲点だった。

ラベル、エラーメッセージとヘルプメッセージのようにフォームクラスは
翻訳される必要のある文字列をたくさん含んでいます。
これらすべての文字列は symfony によって自動的に国際化されるので、
XLIFF ファイルで翻訳を提供することだけが必要です。
     \\\
   (⌒\  ∧_∧
    \ ヽヽ( ´_ゝ`)どこが提供すること「だけ」なんだよ!
     (mJ     ⌒\
      ノ ∩兄 / /
     (  | .|∧_∧OKOK。
  /\丿 | (    ) 兄者マテ!ときに落ち着けって!
 (___へ_ノ ゝ__ノ