1. 程式人生 > >Java程序國際化學習代碼一

Java程序國際化學習代碼一

rop ati ssa ann auth 輸入 efault 字符串 中文

Java程序國際化初識

1、基本思路

Java程序的國際化的思路是將程序中的標簽、提示等信息放在資源文件中,程序需要支持哪些國家、語言環境,就對應提供相應的資源文件。資源文件是key-value對,每個資源文件中的key是不變的,但value則隨不同國家、語言改變。

2、使用的類

  • java.util.ResourceBundle:用於加載一個國家、語言資源包。
  • java.util.Locale:用於封裝一個特定的國家/區域、語言環境。
  • java.text.MessageFormat:用於格式化帶占位符的字符串。

3、示例代碼(模擬登錄)

代碼
/**
* 程序國際化 
* 1、使用的類:Locale、 ResourceBundle、MessageFormat
* 2、properties屬性文件(或配置文件),內容以鍵值對的方式存放
* 3、ResourceBundl工具類,來綁定屬性文件,並指定Locale對象,來自動選擇使用那個屬性文件,默認將使用與操作系統相同的語言環境
*       getString()方法來從屬性文件中使用key來獲取value 
*       註意:ResourceBundle工具類是只讀的,不能用於向屬性文件中寫入數據
* @author xiaofei
*/
public class I18nDemo {

    public static void main(String[] args) {
        // 創建一個本地語言環境對象,該對象會給根據參數設置來自動選擇與之相關的語言環境
        // 參數:語言,地區,可以從IE瀏覽器中的工具當中查看各個國家/地區對應的代碼
        Locale locale_CN = new Locale("zh", "CN");
        Locale locale_US = new Locale("en", "US");
        // 獲取當前系統默認的語言環境
        Locale locale_default = Locale.getDefault();

        Scanner sc = new Scanner(System.in);
        // 使用配置文件
        String baseName = "i18n.info";// baseName即為屬性文件的前綴名,帶上包名
        // 用於綁定屬性文件的工具類,bundle是大量,包,捆的意思
        ResourceBundle r = ResourceBundle.getBundle(baseName, locale_US);// 指定用英文

        System.out.println(r.getString("system.name"));

        // 接收用戶輸入的用戶名
        System.out.println(r.getString("input.username"));
        String username = sc.nextLine();
        
        // 接收用戶輸入的密碼
        System.out.println(r.getString("input.password"));
        String password = sc.nextLine();

        if ("admin".equals(username) && "123".equals(password)) {
            System.out.println(r.getString("login.success"));

            String welcome = r.getString("welcom");
            // 動態文本格式化,其中welcome,{0}中的{0}叫做占位符
            welcome = MessageFormat.format(welcome, username);
            System.out.println(welcome);
        } else {
            System.out.println(r.getString("login.error"));
        }
    }// main

}
屬性文件

info_zh_CN.properties

system.name=\u5458\u5DE5\u7BA1\u7406\u7CFB\u7EDF
input.username=\u8F93\u5165\u7528\u6237\u540D\uFF1A
input.password=\u8F93\u5165\u5BC6\u7801\uFF1A

login.success=\u767B\u5F55\u6210\u529F\uFF01
login.error=\u767B\u5F55\u5931\u8D25\uFF01

welcom=\u6B22\u8FCE\u4F60\uFF0C{0}\uFF01

info_en_US.properties

system.name=EMP Manage System
input.username=Input Your UserName:
input.password=Input Your Password:

login.success=Login Success!
login.error=Login Fail!

welcom=welcome,{0}!

4、運行結果

英文時

技術分享圖片

中文時

技術分享圖片

Java程序國際化學習代碼一