2013-04-22 24 views
0

我們有一個遺留應用系統,已經建成15年前,我們仍然使用它。我們的系統只支持英文。但是,現在我們正在開發一個新項目,該項目應該使用現有系統的某些部分,但還需要具有顯示其他語言的功能。什麼是在現有系統上引入資源包(以支持不同語言)的好方法?

對於這個項目的web項目,我們使用Spring MVC,Java 7和MySql。我們從來沒有使用它,但聽說過資源束。我們是否應該定義要在屬性文件中顯示的每個東西(每種語言1個文件),並根據語言在運行時使用此屬性文件。 我們有很多需要在用戶界面上顯示的枚舉。

你推薦我們用什麼來支持非英語的語言?它可以是資源包或任何其他方法。

我感謝您的幫助。

UPDATE我們現在只支持2種語言,包括英語。

回答

1

現有系統,符合資源包。 Resource Bundle,符合現有系統...

所有的笑話,解決方案將取決於您的應用程序。它是基於Web的JSP應用程序,Swing客戶端還是其他?

對於簡單的非網絡應用程序,here是一個使用Spring的ResourceBundleMessageSource的簡單示例。它是一個相當古老的例子,但基本的想法是,你設置了一些MessageSource,然後使用MessageSource來獲取消息。

如果這是一個使用JSP的Web應用程序,那麼您將更改所有JSP以使用Spring JSTL標記spring:message(或非spring fmt:message,但我認爲這會限制您的選項)需要使用國際化字符串。同樣,你需要一些MessageSource設置,Spring會自動尋找你的MessageSource並使用它。它仍然遵循相同的模式:定義MessageSource,向MessageSource詢問消息...它只是使用JSTL標籤來完成繁重的工作。

有幾個可用的MessageSource選項。最簡單的方法就是使用.properties文件作爲上面的例子。我發現這很難維護,所以在我們的應用程序中,我們用我們自己的實現(我們稱之爲JdbcMessageSource)替換了MessageSource,它擴展了AbstractMessageSource。基本上,它使用表來讀取消息並提供這些消息的緩存。

+0

謝謝你的回答。 「如果這是一個使用JSP的Web應用程序,那麼您將更改所有JSP以使用Spring JSTL標記spring:message」...這是不可能的。我們有數百萬用jsp編寫的代碼,沒有人會這樣做。我們只需要新項目的資源包,但依賴於舊系統。 – WowBow 2013-04-23 18:03:12

+0

然後你的新代碼需要使用spring:message JSTL標籤。沒有什麼能夠阻止您將遺留代碼與硬編碼文本分離。 – CodeChimp 2013-04-23 19:49:48

相關問題