ローカライゼーション
他のロケールをサポートする必要がある場合、このセクションには知っておく必要のあるすべてが含まれています。
認証の失敗やアクセスの拒否(認可の失敗)に関連するメッセージを含む、すべての例外メッセージをローカライズできます。開発者またはシステムデプロイヤに焦点を当てた例外とロギングメッセージ(不正な属性、インターフェース契約違反、不正なコンストラクターの使用、起動時の検証、デバッグレベルのロギングを含む)はローカライズされず、代わりに Spring Security のコード内に英語でハードコードされます。
spring-security-core-xx.jar
には、messages.properties
ファイルといくつかの一般的な言語のローカライズされたバージョンが含まれている org.springframework.security
パッケージがあります。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
サンプルアプリケーションは、ローカライズされたメッセージを使用するように設定されています。