6

私は春を通して国際化を実装しようとしています.以下は私が行った構成です

`<bean id="messageSource"
      class="org.springframework.context.support.ResourceBundleMessageSource">
      <property name="basenames" value="messages">
    </property>
</bean> 

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />`

これで、message_en.properties、message_fr.properties、message_sp.properties の 3 つのプロパティ ファイルが作成されました。JSTLタグを使用してjspで使用します。私の質問は、正しいプロパティ ファイルを取得できるようにロケール値を渡すにはどうすればよいですか? 1 つの方法は、リクエスト URL を渡すことですが、アプリケーションが大きすぎて、このリクエスト パラメータをすべての URL に含めることができません。ロケール値を設定できる他の方法はありますか? DB に格納されているロケール値を取得して設定する必要があります。最善のアプローチでこれを達成するにはどうすればよいですか?

以下を使用してロケールを変更できます RequestContextUtils.getLocaleResolver(request).setLocale(request, response, Locale.FRANCE);

ただし、これには、各リクエストで実行するフィルターを記述し、DB でクエリを実行して値を取得する必要があります。そうするためのより良いアプローチはありますか?

4

1 に答える 1

3

おそらく今までに解決策を見つけたと思いますが、質問に出くわした将来の人々のために、おそらく LocaleResolver を取り除く必要がありますか?

ムキョンによると:

「localeResolver」を登録しない場合、デフォルトの AcceptHeaderLocaleResolver が使用され、HTTP リクエストの accept-language ヘッダーをチェックしてロケールを解決します。

ユーザーのブラウザーが、好みの言語を自動的に認識できるようにすることは非常に理にかなっています。好みの言語を変更することで、Chrome で簡単にテストできます (おそらく他のブラウザーも同様です)。

(ちなみに、Mkyong のチュートリアルは非常に便利で、実行する価値があります)

于 2013-07-30T14:02:30.510 に答える