小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用資源包完成國際化

 pengyan 2006-12-05

自從1.1版開始,Java中就存在資源包,使用這種資源包可以儲存和訪問在應(yīng)用程序中要使用到的本地特定資源對象。

一個本地特定資源的最簡單例子就是字符串對象。舉例來說,在下面的應(yīng)用程序中,要求輸出不同的消息,而這些消息取決于在命令行中的本地指定。我們用靜態(tài)的方法來創(chuàng)建一個資源包的實例:

java.util.ResourceBundle.getBundle():
ResourceBundle messages = ResourceBundle.getBundle("messages", Locale.ENGLISH);

其中g(shù)etBundle()方法有三個窗體來讓你選擇一個特定的locale和classloader,或者你可選擇默認(rèn)項來選擇默認(rèn)的locale和classloarder。

正如你在前面看到的那段代碼,得到一個資源包的實例并沒有什么實際價值。因為例子代碼locale使用英語表示的,所以在執(zhí)行上面這個方法的時候,ResourceBundle 就會從應(yīng)用程序的classpath中尋找名為“messages_en.properties”的文件。如果沒有找到此文件,那么就會出現(xiàn)java.util.MissingResourceException這樣一個錯誤提示。

在實際的應(yīng)用程序中,你可以根據(jù)用戶設(shè)定或是系統(tǒng)設(shè)定來選擇你的locale。下面是一個根據(jù)啟動時的設(shè)定來選擇locale的例子:

Locale locale = Locale.ENGLISH;
        if ( args.length != 0 ) {
    locale = new Locale(args[0]);
}
ResourceBundle messages = ResourceBundle.getBundle("messages", locale);

在有了資源包的實例后,就可以調(diào)用一種get方式來獲得你想要的本地資源。

ResourceBundle類型定義了獲得字符串、字符串?dāng)?shù)組和獲得對象的方法。在這個例子中,一個字符串形式的“welcome.message”將被觸發(fā):

String message = messages.getString("welcome.message");

當(dāng)調(diào)用getString()函數(shù)的時候,ResourceBundle就從先前得到的工具文件中尋找有關(guān)鍵字名“welcome.message”的字符串對象。如果沒有找到關(guān)鍵字,那么就會出現(xiàn)java.util.MissingResourceException錯誤提示。

其中用到的道具文件就如下面這種形式:

messages_en.properties:
welcome.message=Welcome to fantastic application and thanks for choosing
 Acme, Inc.

messages_de.properties
welcome.message=Heißen Sie willkommen zu phantastischer Anwendung und Dank zum
 Wählen von Gipfel, Inc.

messages_fr.properties:
welcome.message=Bienvenu a l‘a(chǎn)pplication fantastique et remercie pour choisir
 de Point Culminant, Inc.

(請注意,上面的內(nèi)容是我們用自動翻譯工具翻譯成法語和德語的。)

 

除了字符串以外,你還可以對其他對象使用資源包。例如,你可以創(chuàng)建你自己的獨立于道具文件的資源包實例。不管你是需要儲存本地特定字符串還是需要處理其他更復(fù)雜的對象,資源包都能為你提供很好的選擇。

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

public class ResourceBundleTip {
    public static void main(String[] args) {
        Locale locale = Locale.ENGLISH;
        
        if ( args.length != 0 ) {
            locale = new Locale(args[0]);
        }
        
        ResourceBundle messages = ResourceBundle.getBundle("messages", locale);
        String message = messages.getString("welcome.message");
        
        System.out.println(message);    
    }
}


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多