ローカライゼーションがうまくいく、奇妙な問題がありますが、私たちのエラーページを除きます。Tomcatがエラーページを処理するとき、ロケールはありませんか?
私はStripesフレームワーク、リソースバンドル、およびJSTLタグを使用してページをローカライズしています。ロケールはStripesフレームワークによって決定されます。ストライプdocumentationによると:
ストライプはrequest.getLocale()とrequest.getLocales(への呼び出しを行うためにHttpServletRequestWrapperクラスを使用しています)のみ選択したロケールを返します。これは、Stripesが正しいロケールを再決定することなく使用するだけでなく、request.getLocalesに依存する他のローカリゼーションツールも、デフォルトで正しいロケールにする必要があることを意味します。これにはJSTLのfmt:*タグも含まれています。
これは、web.xmlに次のように構成された当社のエラーページに指示され、404または500エラーが発生した場合を除き、どこでも素晴らしい作品:
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
私はエラーを直接参照する場合ページ、ローカリゼーションは正常に動作します。私はすでにスペイン語に言語を設定した場合たとえば、このURLを参照し、ページがスペイン語で表示されます。
http://localhost:8080/error.jsp
しかし、私はスペイン語に言語を設定し、その後に参照する場合:
http://localhost:8080/this-page-does-not-exist-create-a-404-error
同じエラーページが表示されますが、英語で表示されます。
なぜですか、どうすれば修正できますか?私は何の結果も得ずに検索しました!
私はrequest.getLocale()を手動でチェックしようとしましたが、en_USに設定されています。
ロケールを設定するコードでは、いくつかのセッション属性 "lang"と "country"も設定します。
回避策として、これらの属性を読み取り、ロケールを再構築できることがわかりましたが、なぜこれが最初に起こっているのかを知りたいと思います。
本当に?誰も考えがありませんか? – JBCP