2010-10-27 114 views

回答

1

我建議看看ResourceBundles。

這是一個複雜的問題,因爲如果你有一個數據庫,你也想要I18N。

1

這基本上是域的問題。如果你在網上,大多數主要的框架將爲I18N提供一種方式(在春季,這個作品爲with .properties files and taglibs)。

對於桌面應用程序而言,資源注入可能是一個有趣的選項。 Spring應用程序框架更進一步,並允許您從配置文件中完全配置已命名的Swing組件(按鈕,標籤......)。有了這個,你可以設置組件的顏色和邊界,但也可以設置它們的文本。

13

您可以使用ResourceBundle.getBundle(name)根據用戶區域設置返回正確的包並獲取特定的消息。

ResouceBundle類的工作方式是嘗試使用本地化消息加載軟件包(通常是一個.properties文件)。例如,你可以有:

messages_en.properties 
----- 
greeting = "Hello " 

messages_es.properties 
----- 
greeting = "Hola " 

和按如下方式使用它。

... void main(... . { 
    ResourceBundle bundle = ResourceBundle.getBundle("messages", userLocale); 
    System.out.println(bundle.getString("greeting") + " Steve "); 
} 

它將打印

Hello Steve 

如果用戶區域設置爲英語(EN),和

Hola Steve 

如果用戶區域設置是西班牙語(ES)

的方法ResouceBundle.getBundle() ,不僅會加載.properties文件,如果可用的話,它還可能加載一個類,這個類可能會加載消息e來自數據庫。

參見:

ResourceBundle

Internationalization Quick Intro