2010-09-18 100 views
2

我一直在閱讀其他問題和答案,但我沒有得到如何完成資源綁定的作品。 我認爲它與Joomla使用多語言選項的方式類似。 基本上你有不同的消息你想閱讀不同的語言文件。 因此,我創建System.properties我的src /郎文件夾裏面 裏面我創建使用resourceBundle與外部文件,java

STARTING_MYAPP=Starting my app 

我可能是錯在這裏,但反正我是無法讀取的默認文件。現在,我的腦死亡,我不能做任何事情我讀 某種意義上說,這是我正在做這個

Locale locale = Locale.getDefault(); 
String basename ="System"; 
ResourceBundle resourceBundle = ResourceBundle.getBundle(basename, locale); 
System.out.println(resourceBundle.getString("STARTING_MYAPP")); 
//UserPreferences UserPrefs = new UserPreferences(); 

當我打電話的getBundle(),它有兩個輸入端,基本名稱和語言環境,正確的。我遇到了基名的問題。如果我的文件位於src/lang/System.properties中,我應該如何查找它。 basename =「System」,basename =「Lang/System」,basename =「System.properties」,basename =「myProject.label」。

我嘗試了所有的這一些更多的組合,但不工作,我總是得到這樣的事情在線程「主要」 java.util.MissingResourceException 異常:找不到捆綁爲基數名系統,地方en_US

關於語言環境,我如何將其保留爲默認值,所以我不必使用System_en_US.properties或類似的東西。

回答

4

基本名稱的結構類似於完全限定的類名稱(因爲資源束可以是類),所以如果您的類路徑根是src而資源是文件src/lang/System.properties,那麼基本名稱是lang.System

關於語言環境,我怎麼把它留給 默認的,所以我沒有使用 System_en_US.properties什麼 這樣。

只需使用僅包含基本名稱的getBundle()方法。

+0

謝謝,我知道了 – 2010-09-18 18:16:06

3

這工作正常。

import java.util.Locale; 
import java.util.ResourceBundle; 


public class ResourceBundleTester 
{ 
    public static void main(String[] args) 
    { 
     Locale locale = Locale.getDefault(); 
     String basename ="lang/System"; 
     ResourceBundle resourceBundle = ResourceBundle.getBundle(basename, locale); 
     System.out.println(resourceBundle.getString("STARTING_MYAPP")); 
    } 
} 

在src /郎文件夾我創建了一個名爲System.properties包含文件...

STARTING_MYAPP=Starting my app 

輸出:我的應用程序啓動

This page介紹瞭如何在JDK做出決議ResourceBundle名稱。

+0

是的,它的工作原理,我一定很累這是我的錯。我錯了文件 – 2010-09-18 18:15:34