2

我們的Web應用程序使用Spring 2.5中。它由幾個模塊組成,每個模塊都可以帶來額外的Spring上下文文件,這些文件會自動加載(到一個應用程序上下文中)。我們希望讓每個模塊提供額外的資源包(對於I18N支持)。多MessageSource實現

Spring支持國際化,通過註冊與配置文件中的名稱爲messageSource一個bean,但這個假設我確切地知道什麼是包含字符串翻譯類或屬性文件的全名。這是一個問題,因爲其他模塊可能會將其自己的屬性文件放在不同的位置。所以我正在尋找一種方法讓每個模塊用自己的資源包來定義它自己的messageSource,我不知道該怎麼做。

有誰知道解決這個問題呢?

謝謝。

回答

0

我已經使用Spring中的消息源對一些i18n支持。在我的情況下,我只需要一個,所以很容易將我需要的一個消息源注入到我創建的服務bean中。

我希望看到的東西像什麼,我會在春節源本身稍後提出。但是我沒有看到任何會聚合異構消息源的東西。如果它們都是屬性文件的資源包的一部分,我相信你可以爲ResourceBundleMessageSource編寫一個包裝器,它可以在bean註冊時動態更新。

但是,如果你想聚集異構MessageSource實現,這是我的建議。創建一個消息源聚合bean,它在加載時向ApplicationContext請求MessageSource.class類型的bean。然後,這個聚合bean可以讓每個源嘗試解析密鑰並格式化消息。取決於您有多少個文件/信息源類別,您可能希望允許聚合實施優先考慮首先嚐試使用哪些類別。如果性能成爲問題,您還可以緩存哪個源解析了哪些密鑰,以便聚合器不必每次猜測。