ローカライゼーション
他のロケールをサポートする必要がある場合は、知っておく必要のあるすべてがこのセクションに含まれています。
認証の失敗やアクセスの拒否(認可の失敗)に関連するメッセージを含め、すべての例外メッセージをローカライズできます。開発者またはシステムの開発者に焦点を当てた例外とログメッセージ(不適切な属性、インターフェース契約違反、不適切なコンストラクターの使用、起動時の検証、デバッグレベルのログ記録など)はローカライズされておらず、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" サンプルアプリケーションは、ローカライズされたメッセージを使用するように設定されています。