[Seasar-user:16667] Re: [Teeda]cooldeploy でラベルの言語切替ができない

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2009年 1月 14日 (水) 10:59:43 JST


海野です。

その後、分かったことをお知らせします。

javax.faces.internal.LabelUtil#getLabelValueメソッドで

    MessageResourceBundle bundle = MessageResourceBundleChainFactory
            .createChain(propertiesName, locale);

と取得しているbundleが、coolでは locale=en の場合でも
内容が日本語になっていたので、さらに追ってみたところ

javax.faces.internal.MessageResourceBundleChainFactory#createSimpleMessageRe
sourceBundleメソッド

    if (HotdeployUtil.isHotdeploy()) {
        return MessageResourceBundleFactory.getNullableBundle(bundleName,
                locale);
    } else {
        return new JavaMessageResourceBundle(bundleName, locale);
    }

でcoolの場合にnewしているJavaMessageResourceBundleが、
locale=en にもかかわらず日本語のラベルが取得されてしまいます。
hotの場合の

        return MessageResourceBundleFactory.getNullableBundle(bundleName,
                locale);

では、localeに応じたMessageResourceBundleが返されます。
ここまで分かりましたが、どうすれば解決するのかが分かっていません。。

宜しくお願い致します。


> 海野です。
> お世話になっております。
>
> Seasar-user:13080 の方式で、
> 英語と日本語の切替ができるようにしています。
>
> しかし、hotdeployでは切替が有効なのですが
> cooldeployでは常に日本語が表示されてしまいます。
> (常に英語なら少しは納得もいくのですが)
>
> Seasar-user:9026
> も読みましたが、cooldeployでのコンポーネント登録時に
> toomany..の例外は発生していません。
>
> またRequestDumpFilterで出力したログを
> hotとcoolで日本語、英語それぞれ見比べたところ
> hotとcoolとも日本語選択時には
>   [request]javax.servlet.jsp.jstl.fmt.locale.request=ja
> と出力され、英語選択時には
>   [request]javax.servlet.jsp.jstl.fmt.locale.request=en
> と出力され、差がありませんでした。
>
> デバッガで追ってみても、HttpServletRequestのラッパーに実装した
> getLocales()は、選択された言語を返しています。
>
> どこを調査すればよいか、教えていただけませんでしょうか。
>
> 環境は次の通りです。
> Seasar2.4.32
> Teeda1.0.13-sp4
>
> 宜しくお願い致します。
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>




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