1.使用场景:
一份代码,实现不同语言的显示。
代码示例:
1.新建properties资源文件:(key-value)
info_en_US.properties(info前缀,en_US代表外语)
system.name = Employee Manager System
input.username = please input username
input.password = please input password
login.success = Login Success!
login.error = Login error!
info_zh_CN.properties(info前缀,zh_CN代表汉语)
system.name=\u5458\u5DE5\u7BA1\u7406\u7CFB\u7EDF\uFF1A
input.username=\u8BF7\u8F93\u5165\u7528\u6237\u540D\uFF1A
input.password=\u8BF7\u8F93\u5165\u5BC6\u7801\uFF1A
login.success=\u767B\u5F55\u6210\u529F\uFF01
login.error=\u767B\u5F55\u5931\u8D25\uFF01
注意:上面只是一种编码方式,并不是乱码。
I18NDemo.java主函数:
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;
public class I18NDemo {
public static void main(String[] args) {
//创建一个本地语言环境对象,该对象会根据参数设置来自动选择与之相关的语言环境
//参数: 语言,地区
//汉语
Locale locale_CN = new Locale("ch","CN");
//英语
Locale locale_US = new Locale("en","US");
//获取当前系统默认语言环境 也就是汉语
Locale locale_default = Locale.getDefault();
Scanner scanner = new Scanner(System.in);
//用于绑定属性的工具类(参数:属性文件的基本名(就是前缀,比如前缀,info)) //默认获取系统语言
//ResourceBundle r = ResourceBundle.getBundle("com.lemon.info");//默认用汉语
ResourceBundle r = ResourceBundle.getBundle("com.lemon.info",locale_US);//用英语
System.out.println(r.getString("system.name"));
System.out.println(r.getString("input.username"));
String username = scanner.nextLine();
System.out.println(r.getString("input.password"));
String password = scanner.nextLine();
if(username.equals("admin") && password.equals("123456")) {
System.out.println(r.getString("login.success"));
}else {
System.out.println(r.getString("login.error"));
}
}
}
注意包名:

运行结果:

其他语种,可以在浏览器中查看:

2.动态文本格式化
在上面的基础上:


主函数:
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_CN = new Locale("ch","CN");
//英语
Locale locale_US = new Locale("en","US");
//获取当前系统默认语言环境 也就是汉语
Locale locale_default = Locale.getDefault();
Scanner scanner = new Scanner(System.in);
//用于绑定属性的工具类(参数:属性文件的基本名(就是前缀,比如前缀,info)) //默认获取系统语言
ResourceBundle r = ResourceBundle.getBundle("com.lemon.info");
//ResourceBundle r = ResourceBundle.getBundle("com.lemon.info",locale_US);//用英语
System.out.println(r.getString("system.name"));
System.out.println(r.getString("input.username"));
String username = scanner.nextLine();
System.out.println(r.getString("input.password"));
String password = scanner.nextLine();
if(username.equals("admin") && password.equals("123456")) {
System.out.println(r.getString("login.success"));
//动态文本实现
String welcome = r.getString("welcome");
//动态文本格式化
welcome = MessageFormat.format(welcome, username);
System.out.println(welcome);
//可以实现多个
String welcome2 = r.getString("welcome2");
//动态文本格式化
welcome2 = MessageFormat.format(welcome2, username,password);
System.out.println(welcome2);
}else {
System.out.println(r.getString("login.error"));
}
}
}
运行结果:

691



被折叠的 条评论
为什么被折叠?



