[Seasar-user:20327] Re: [SAStruts] 多言語対応での入力チェック時にラベル名が命名規則で解決されない。

halt [E-MAIL ADDRESS DELETED]
2010年 11月 10日 (水) 14:50:09 JST


ひがさん
お世話になります。大塚です。
ご確認ありがとうございます。

> 対応策としていいと思うのは、application.propertiesにもlabels.hogeの
> エントリを作っておくことです。
なるほど。
日本語と英語の単純な国際化を例にすると、

・国際化しない場合
 日本語でapplication.propertiesを作り、application_ja.propertiesは作らない。
・国際化する場合
 英語でapplication.propertiesを、日本語でapplication_ja.propertiesを作る。
 ※片方だけメッセージキーが欠落するようなことがないように注意。
・上記対応により、デフォルト・ロケールではなくブラウザの言語設定に従った言語でラベルが表示される。

ということですね。
お忙しい中、ご教示いただきありがとうございました。

2010年11月10日14:12 Yasuo Higa <[E-MAIL ADDRESS DELETED]>:
> ひがです。
>
> 返答が遅れ申し訳ありません。
>>
>> いつもお世話になっております。大塚です。
>> SAStruts 1.0.4-sp8を使用して国際化アプリケーションを開発しております。
>>
>> 件名の通り、不具合らしき挙動を見つけましたので、ご報告いたします。
>>
> 結論から言うと不具合ではなく、想定どおりです。
> SAStrutsはバリデーション用のメッセージを起動時に組み立てます。
> 起動時には、ロケールはen_USなので、リソースは存在せず、
> その場合、SAStrutsはフィールド名をそのまま(リソースは見ない:resource=false)
> arg1に適用します。
>
> この後、ロケールを変えてもリソースは見ないという設定になっているので、
> 変わらないというわけです。
>
> 対応策としていいと思うのは、application.propertiesにもlabels.hogeの
> エントリを作っておくことです。
> これなら、想定どおりに動くと思います。
>
> よろしくお願いします。
>
>> 再現方法
>> ・JVMのデフォルトエンコードをen_USとしておく
>> ・publicなフィールドhogeを持ったActionFormを用意する。
>> ・上記のhogeに@Requiredを指定する。ただし、arg0は指定しない。
>> ・application_ja.propertiesに labels.hoge=ほげ を定義する。
>> ・application.propertiesには labels.hoge= を定義しない。
>> ・ブラウザの言語(AcceptedLanguage)をjaとする。
>> ・上記サンプルにアクセスし、必須項目"ほげ"を未入力でsubmitする。
>>
>> 期待している結果
>> ・命名規約によってブラウザに"ほげは必須入力です"と表示される。
>>
>> 実際の結果
>> ・ブラウザに"hogeは必須入力です"と表示される。
>>
>> 回避方法
>> arg0要素でlabels.hogeを指定する。
>>
>> 以上です。
>> お気づきの点がございましたら、ご指摘いただけると幸いです。
>>
>>
>>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内