Java 程序国际化

 

国际化(Internationalization,简称 I18n),可以理解为同一套程序在不同语言环境下使用,不同环境使用不同的语言。

 

Java里面提供了 Locale 类:

  Locale对象表示了特定的地理、政治、文化地区,使用 Locale执行语言环境敏感的任务操作。

  有两种方式创建Locale对象:

    (1)构造方法

      Locale(String language)

      Locale(String language,String country)

      (2)静态方法

      getDefault()

 

Java中提供了 ResourceBundle 类:

  国际化的核心在于语言的不同显示上,通常做法是定义不同的属性文件(*.properties),属性文件的内容形式为 key = value

  ResourceBundle是一个对属性文件进行读取的工具类,读取时不用加上文件名的后缀。

  getBoundle(String baseName)

  getBoundle(String baseName,Locale locale)

  getString(String key)

 

文件目录

 

 properties文件示例

 

代码示例

package com.seven.javaSE;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;

public class I18nDemo {
    public static void main(String[] args) {
        
        //定义不同的Locale对象
        Locale locale_CN = new Locale("zh","CN");
        Locale locale_US = new Locale("en","US");
        
        //定义读取properties文件的对象
        ResourceBundle rb = ResourceBundle.getBundle("com.seven.javaSE.info", locale_CN);
        System.out.println(rb.getString("systemName"));
        Scanner sc = new Scanner(System.in);
        
        //根据key获取对应的value
        System.out.println(rb.getString("inputUserName"));
        String username = sc.nextLine();
        System.out.println(rb.getString("inputPassword"));
        String password = sc.nextLine();
        
        if(username.equalsIgnoreCase("seven")&&password.equals("123")) {
            System.err.println(rb.getString("loginSuccess"));
            String welcome = rb.getString("welcome");
            //动态填充字符串
            welcome = MessageFormat.format(welcome, username);
            System.out.println(welcome);
        }
        else {
            System.out.println(rb.getString("loginFail"));
        }
    }
}
            

 

posted @ 2022-05-24 11:55  藤原豆腐渣渣  阅读(420)  评论(0编辑  收藏  举报