本地化

如果您需要支援其他語言環境,本節包含了您所需的所有資訊。

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