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。 /\丿 | ( ) 兄者マテ!ときに落ち着けって! (___へ_ノ ゝ__ノ