[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 メーリングリストの案内