ローカライゼーション

他のロケールをサポートする必要がある場合は、知っておく必要のあるすべてがこのセクションに含まれています。

認証の失敗やアクセスの拒否(認可の失敗)に関連するメッセージを含め、すべての例外メッセージをローカライズできます。開発者またはシステムの開発者に焦点を当てた例外とログメッセージ(不適切な属性、インターフェース契約違反、不適切なコンストラクターの使用、起動時の検証、デバッグレベルのログ記録など)はローカライズされておらず、Spring Security のコード内で英語でハードコードされています。

spring-security-core-xx.jar に同梱されている org.springframework.security パッケージには、messages.properties ファイルと、いくつかの共通言語のローカライズバージョンが含まれています。Spring Security クラスは Spring の MessageSourceAware インターフェースを実装し、アプリケーションコンテキストの起動時にメッセージリゾルバーが依存性注入されることを想定しているため、これは ApplicationContext によって参照される必要があります。通常、アプリケーションコンテキスト内で Bean を登録して、メッセージを参照するだけです。以下に例を示します。

<bean id="messageSource"
	class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:org/springframework/security/messages"/>
</bean>

messages.properties は、標準のリソースバンドルに従って名前が付けられ、Spring Security メッセージでサポートされるデフォルト言語を表します。このデフォルトファイルは英語です。

messages.properties ファイルをカスタマイズする場合、または他の言語をサポートする場合は、ファイルをコピーし、それに応じて名前を変更し、上記の Bean 定義内に登録する必要があります。このファイル内には多数のメッセージキーがないため、ローカライズは主要なイニシアチブと見なされるべきではありません。このファイルのローカライズを実行する場合は、JIRA タスクをログに記録し、適切な名前のローカライズされたバージョンの messages.properties を添付して、コミュニティと作業を共有することを検討してください。

Spring Security は、適切なメッセージを実際に検索するために、Spring のローカライゼーションサポートに依存しています。これが機能するためには、受信リクエストのロケールが Spring の org.springframework.context.i18n.LocaleContextHolder に保存されていることを確認する必要があります。Spring MVC の DispatcherServlet はアプリケーションに対してこれを自動的に行いますが、Spring Security のフィルターはこの前に呼び出されるため、フィルターが呼び出される前に、正しい Locale を含むように LocaleContextHolder を設定する必要があります。これは、自分でフィルターで行うか ( web.xml の Spring Security フィルターの前に来る必要があります)、または Spring の RequestContextFilter を使用することができます。Spring でローカライズを使用する方法の詳細については、Spring Framework のドキュメントを参照してください。

"contacts" サンプルアプリケーションは、ローカライズされたメッセージを使用するように設定されています。