package liu.dh.international;
import java.io.InputStreamReader;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;
/**
* @alt+shift+j:快速生成注释
* @author
*软件的国际化:主要是匹配世界各个地区的语言和风俗环境
*主要使用两个类:public final class Locale;public abstract class ResourceBundle
*Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的 操作,
*它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、
*地区或文化的风俗/传统来格式化该数值。
*构造方法:Locale(String language)根据语言代码构造一个语言环境。
Locale(String language, String country) 根据语言和国家/地区构造一个语言环境。
Locale locale = Locale.CHINA;CHINA是字段field,通过字段获取,
getDefault() 获得此 Java 虚拟机实例的当前默认语言环境值。
ResourceBundle:资源包包含特定于语言环境的对象,资源包包含键/值对.
*主要方法:static ResourceBundle getBundle(String baseName, Locale locale)
* 使用指定的基本名称、语言环境和调用者的类加载器获取资源包
String getString(String key) 从此资源包或它的某个父包中获取给定键的字符串。
*/
public class Demo_International {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
// 示例如下
//键盘录入
System.out.println("请输入用户名");
String username = scanner.nextLine();
System.out.println("请输入密码");
String password = scanner.nextLine();
if ("admin".equals(username)&&"admin".equals(password)) {
System.out.println(username+"登录成功");
}
//真对以上情况如何实现国际化呢,在不输入汉子的情况下
//创建Locale对象
// Locale(String language, String country) 根据语言和国家/地区构造一个语言环境。
Locale locale = Locale.CHINA;
//可以通过查看源码获取:例如美国
Locale locale2 = new Locale("en", "US");
//创建资源文件:格式:info_语言标示符_国家标示符:info_ch_CN.properties;info_en_US.properties;
//在包下创建两个资源文件夹
//创建资源包对象:如果使用locale,将输出中文
ResourceBundle bundle = ResourceBundle.getBundle("liu.dh.international.info", locale2);
//通过文件夹中的建获取值
String user = bundle.getString("username");
String passwords = bundle.getString("password");
String info = bundle.getString("info");
System.out.println(user);
String username1 = scanner.nextLine();
System.out.println(passwords);
String password1 = scanner.nextLine();
//如何动态获取文本:@@@@登陆了:通过占位符{0}完成
//public class MessageFormat
//static String format(String pattern, Object... arguments)
// 创建具有给定模式的 MessageFormat,并用它来格式化给定的参数。
String info1 = MessageFormat.format(bundle.getString("info"), username1);
if ("admin".equals(username1)&&"admin".equals(password1)) {
System.out.println(info1);
}
}
}
|
|