国际化程序开发
只是学习笔记,如果有错误,请在评论区指出,谢谢
一、Locale类
1.描述区域和语言
2.代码
package com.yyr.Localetest;
import java.util.Locale;
public class LocaleTest {
public static void main(String[] args) {
Locale loc=Locale.ENGLISH; //设置为英
System.out.println(loc);
}
}
二、ResourceBundle类
1、是一个抽象类,用来进行资源文件的读取
2.如果想进行此类的对象的实例化,可以直接利用该类提供的static方法完成:
- baseName:描述的是资源文件的名称,但是没有后缀.
package com.yyr.ResourceBUndle;
import java.util.ResourceBundle;
//读取资源文件
//ResourceBundle类,抽象类
public class ResourceTest {
public static void main(String[] args) {
ResourceBundle resource=ResourceBundle.getBundle("com.yyr.message.Message");//配置文件的路径
String val=resource.getString("info"); //info是配置文件的内容
System.out.println(val);
}
}
输出
小强
配置文件路径
代码
package com.yyr.ResourceBUndle;
import java.util.ResourceBundle;
import java.util.Locale;
//读取资源文件
//ResourceBundle类,抽象类
public class ResourceTest {
public static void main(String[] args) throws Exception {
ResourceBundle resource=ResourceBundle.getBundle("com.yyr.message.Message");//配置文件的路径
String val=resource.getString("info");
System.out.println(val);
}
}
输出:因为配置文件内我设置的内容为小强
小强
三、国际程序开发
1.配置好中文和英文模式的配置文件
2.设置想要的区域和语言
3.读取资源文件
package com.yyr.ResourceBUndle;
import java.util.Locale;
import java.util.ResourceBundle;
//配合locale实现国际化程序开发
//读取资源文件
//ResourceBundle类,抽象类
public class ResourceBundleLocale {
public static void main(String[] args) throws Exception {
Locale loc=new Locale("en","US");
ResourceBundle resource=ResourceBundle.getBundle("com.yyr.message.Message",loc);//配置文件的路径
String val=resource.getString("info");
System.out.println(val);
}
}
配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TT8PaAx-1625750726986)(C:\Users\杨怡然\Desktop\图片\71.png)]
输出:因为我设置了Locale(“en”,“US”),所以输出的是英文,如果没有更改,会输出默认区域和语言的配置文件的内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qYdciYt-1625750726989)(C:\Users\杨怡然\Desktop\图片\72.png)]
四、格式化文本显示
占位符的描述
范例:修改资源文件,{0}、{1}等都是占位符
中文资源文件:com.yyr.message.Message_zh_CN.properties | info=欢迎{0}的访问!当前日期{1} |
---|---|
英文资源文件:com.yyr.message.Message_en_US.properties | info=Welcome{0},date:{1} |
此时只会将占位符一同打印,需要利用MessageFormat类进行格式化处理
package com.yyr.ResourceBUndle;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;
//格式化文本实现
//资源配置下选择区域和文件对配置文件占位符的一同打印
public class ResourceLocaleFormat {
public static void main(String[] args) throws Exception {
Locale loc=new Locale("en","US");
ResourceBundle resource=ResourceBundle.getBundle("com.yyr.message.Message",loc);//配置文件的路径
String val=resource.getString("info");
System.out.println(MessageFormat.format(val," to 中国",new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
}
}
输出结果
Welcome to 中国,date:2021-07-08