Java中的國際化

andy888發表於2019-08-15

Java 中的國際化

國際化,就是專案能夠讓所有的國家的語言都能夠支援。 Java 既然作為一個跨平臺的語言就必然要在各種不同的語言環境中使用。 為了解決這個問題 Java 給我們提供了一個工具類 ResourceBundle ,幫助我們實現 Java 的國際化, 核心的思想就是, 對不同的語言提供一個不同的資原始檔。

Java 實現國際化的步驟:

1. 編寫要實現國際化的主程式。

2. 定義資原始檔, 注意資原始檔的定義要符合一定的規範。

規範如下: 如果我們將預設的資原始檔的檔名取名為 message.properties , 那麼相應的其他語言的資原始檔名就是 messa ge_ 語言 程式碼 _ 國家程式碼 .properties 。例如:我們的語言漢語的語言程式碼是 zh , 國家程式碼是 CN , 所以簡體中文的資原始檔名就是: message_zh_CN.properties , 英語的語言程式碼是 en , 美國的國家程式碼是 US , 所以美國英語的資原始檔就是: message_en_US.properties

3. 根據軟體的使用環境取得相應的資原始檔。

4. 在取得的資原始檔中取得 k ey 對應的值。

 

具體程式碼示例如下:

import java.text.MessageFormat;

import java.util.Date;

import java.util.Locale;

import java.util.ResourceBundle;

 

/**

* 演示 Java 的國際化

*

*/

public class ParamFormat {

/**

 * @param args

 */

public static void main(String[] args) {

    

    // 測試預設的資原始檔

    testCustom();

    // 測試美國英語的資原始檔

    testDefault();

}

 

public static void testDefault() {

    // 獲得預設的系統區域

    Locale locale = Locale.getDefault();

    // 獲得資原始檔

    ResourceBundle rb = ResourceBundle.getBundle("message", locale);

    

    // 獲得相應的 key 值        

    String greeting = rb.getString("greeting");

    String userInfo = rb.getString("userinfo");

    String name= "liky";

    int age = 18;

    Date birth = new Date();

    

    // 格式化引數 , 注意是一個 Object 的陣列 , 這意味著可以將任何型別的物件來格式化模板 .

    Object[] params = {name,age,birth};

    

    // 格式化引數 , 返回格式後的字串

    String result = MessageFormat.format(userInfo, params);

    

    System.err.println(greeting + result);    

}

 

public static void testCustom() {

    // 設定定製的語言國家程式碼

    Locale locale = new Locale("en_US");

    // 獲得資原始檔

    ResourceBundle rb = ResourceBundle.getBundle("message", locale);

    // 獲得相應的 key

    

    String greeting = rb.getString("greeting");

    String userInfo = rb.getString("userinfo");

    String name= "liky";

    int age = 18;

    Date birth = new Date();

    

    // 格式化引數 , 注意是一個 Object 的陣列 , 這意味著可以將任何型別的物件來格式化模板 .

    Object[] params = {name,age,birth};

    

    // 格式化引數 , 返回格式後的字串

    String result = MessageFormat.format(userInfo, params);

    

    System.err.println(greeting + result);    

}

}

 

 

預設的資原始檔 message.properties( 這裡使用 native2ascii 將中文轉化成了 ISO-8859-1 編碼 .)

greeting=/u6B22/u8FCE/u60A8/u7684/u5230/u6765,

userinfo=/u59D3/u540D/:{0}, /u5E74/u9F84/:{1}, /u751F/u65E5/:{2}.

 

美國英語的資原始檔 message_en_US.properties

greeting=Welcome my boy,

userinfo=name:{0}, age:{1}, birthday:{2}.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942977/viewspace-2653798/,如需轉載,請註明出處,否則將追究法律責任。

相關文章