0

i18n Struts アプリケーションでリソース バンドルを使用しています。ほとんどのページでは、リソース バンドルが適切な言語を選択します (言語は i18n struts インターセプターを介して設定されます)。また、あるページでは、リソース バンドルが適切な言語を選択していません。理由がわかりません。そのため、ResourceBundle のロケールがどこから来たのか疑問に思っていました。

フレーム内でアクションを呼び出すと、リソース バンドルに問題が発生する可能性はありますか?

わかりましたので、Strutsアクションには次のものがあります:

ResourceBundle resourceBundleProcess = null;
        try {
            resourceBundleProcess = ResourceBundle
                    .getBundle(BpmUiConstantes.BPMUI_PROCESS_CONF_FOLDER + "/"
                            + caseType);
            LOG.info("Locale used by bundle : " + resourceBundleProcess.getLocale()) ;
        }

URL を介して、たとえば request_locale=en を指定して、ロケールを「en」に設定しました。i18n struts インターセプターは、ロケールを取得して使用することになっています。ただし、ResourceBundles に影響するかどうかはわかりません。私の他のページではテキストが適切な言語で表示されているので、そうだと思いました。しかし、ここでは何らかの理由で LOG が "fr" と表示されます (ブラウザも英語です)。

4

1 に答える 1

0

ResourceBundle.getBundle()、引数としてロケールを渡さない場合は、APIドキュメントに示されているように、JVMのデフォルトロケールを使用します。

Strutsがそれに影響を与える方法はありません。

Struts i18nインターセプターによって設定されたロケールを使用する場合は、ドキュメントで説明されているようにStruts APIを使用してテキストを取得するか、ActionSupportのgetLocale()メソッドを使用してセッションからロケールを取得してに渡しますResourceBundle.getBundle()

于 2012-07-10T15:38:22.447 に答える