[ethna-users:0939] Re: ActionFormとgettext
cockok
cockok @ cheki.net
2008年 5月 13日 (火) 11:52:13 JST
cockokです
エラーに関してはActionErrorで処理されるのでそちらに任せました。
ActionErrorにはi18nの処理が入っているので、フォーム定義でエラーメッセージを個別に設定してあげればよしなにやってくれるようです。
フォーム定義
var $form = array(
'name' => array(
'type' => VAR_TYPE_STRING,
'form_type' => FORM_TYPE_TEXT,
'required' => true,
'required_error' => 'name(required)',
),
);
gettext
msgid "name"
msgstr "お名前"
msgid "name(required)"
msgstr "お名前を入力してください"
アクションフォーム周りで国際化必要なのは「name」と各種「_error」なのでここらで対応可能かと思われます。
以上、よろしくお願い致します。
2008/05/12 17:33 Yoshinari Takaoka <takaoka @ beatcraft.com>:
> 高岡です。
>
> cockok さん、情報ありがとうございます。
>
>
> 2008/5/12 cockok <cockok @ cheki.net> wrote:
> > cockokです。
> > ActionFormにそれっぽいメソッドがあったのでやってみました。
> >
> > gettextのmoファイルを下記に配置
> > プロジェクトディレクトリ/locale/ja/LC_MESSAGES/{APPID}.mo
> >
> > {APPID}_ViewClassのgetFormNameメソッドをオーバーライド
> > function getFormName($name, $action, $params)
> > {
> > $af =& $this->_getHelperActionForm($action, $name);
> > if ($af === null) {
> > return $name;
> > }
> > return $af->getName($name);
> > }
> >
> > アクションフォームのフォーム定義(nameプロパティを書くとそちらが優先されるので書かない)
> > var $form = array(
> > 'name' => array(
> > 'type' => VAR_TYPE_STRING,
> > 'form_type' => FORM_TYPE_TEXT,
> > 'required' => true,
> > ),
> > );
> >
> > テンプレート
> > {form_name name="name"}{message name="name"}
> >
> > こんな感じでいけました。
>
> Ethna_ActionForm#getName の存在は知っていました。
> ただ、これは 'name' プロパティに関するものにしか現状は通用しません。
>
> このメソッドを拡張して、max_error 等のエラーメッセージにも拡張できれ
> ば、それはそれでよいのかもしれませんが、それでも array の値がスカラー
> であるのが仕様なので、現状はメッセージカタログの生成が難しいと感じて
> います。
>
> 上記の例では gettext を使っておられますが、ActionForm のフォーム定
> 義について、メッセージカタログの生成はどのような手段をとりましたか? > coccokさん
>
> > ValidateプラグインをUTF-8化してないとダメそうですが。
>
> この点は次のリリースで確実に対応しますので、クリアできると思います。
>
>
>
> どうぞ宜しくお願いします。
>
> --
> Yoshinari Takaoka
> takaoka @ beatcraft.com
> _______________________________________________
> Ethna Users List
> users @ ethna.jp
> http://ethna.jp/mailman/listinfo/users
>
users メーリングリストの案内