本地化

如果您需要支援其他區域設定,本節包含您需要了解的一切。

所有異常訊息,包括與認證失敗和訪問被拒絕(授權失敗)相關的訊息,都可以本地化。針對開發人員或系統部署人員的異常和日誌訊息(包括不正確的屬性、介面契約違規、使用不正確的建構函式、啟動時驗證、除錯級別日誌記錄)不進行本地化,而是硬編碼在 Spring Security 程式碼中,使用英語。

spring-security-core-xx.jar 中,您會找到一個 org.springframework.security 包,其中包含一個 messages.properties 檔案以及一些常用語言的本地化版本。您的 ApplicationContext 應該引用它,因為 Spring Security 類實現了 Spring 的 MessageSourceAware 介面,並期望在應用程式上下文啟動時注入訊息解析器。通常,您只需在應用程式上下文中註冊一個 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 的過濾器在此之前被呼叫,因此 LocaleContextHolder 需要在過濾器呼叫之前設定為包含正確的 Locale。您可以在過濾器中自行完成此操作(該過濾器必須在 web.xml 中位於 Spring Security 過濾器之前),或者您可以使用 Spring 的 RequestContextFilter。有關將本地化與 Spring 一起使用的更多詳細資訊,請參閱 Spring Framework 文件。

contacts 示例應用程式已設定為使用本地化訊息。

© . This site is unofficial and not affiliated with VMware.