国际化程序
所谓的国家化程序指的是同一个程序代码可以根据不同的国家实现不同的语言描述,但是程序处理的核心业务是相同的。
1:国际化问题简介
2:Locale类
import java.util.Locale;
public class Test {
public static void main(String[] args) throws Exception {
Locale loc = new Locale("zh", "CN"); // 中文环境
System.out.println(loc);
}
}
//zh_CN
2:Locale类本身默认的方式进行实例化
import java.util.Locale;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
Locale loc = Locale.getDefault() ; // 获取默认环境
System.out.println(loc);
}
}
3:简化开发
import java.util.Locale;
public class Test {
public static void main(String[] args) throws Exception {
Locale loc = Locale.CHINA ;
System.out.println(loc);
}
}
//zh_CN
使用常量的优势在于可以避免一些区域编码信息的繁琐。
4:资源文件
5:读取资源文件:ResourceBundle
import java.util.ResourceBundle;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
ResourceBundle resource = ResourceBundle.getBundle("cn.mldn.message.Messages") ;
String val = resource.getString("info") ;
System.out.println(val);
}
}
6:实现国家化程序
实现国际化程序的实现前期准备已经全部完成了,也就是说依靠资源文件,Local,ResourceBundle类就可以实现国家化的处理操作。
7:通过程序进行指定区域的资源信息加载
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
Locale loc = new Locale("en", "US");
ResourceBundle resource = ResourceBundle.getBundle("cn.mldn.message.Messages", loc);
String val = resource.getString("info");
System.out.println(val);
}
}
8:消息格式化
如果说现在某一位用户登录成功了,那么一般都会显示这样的信息“Xxx,欢迎您的光临!”,也就是说这个时候会显示用户名,那么此时如果这些内容保存在了资源文件里面,则需要通过占位符来进行描述,同时对于读取出来的数据也需要进行格式化的处理。
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.ResourceBundle;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
Locale loc = new Locale("en", "US");
ResourceBundle resource = ResourceBundle.getBundle("cn.mldn.message.Messages", loc);
String val = resource.getString("info");
System.out.println(MessageFormat.format(val, "mldn", new SimpleDateFormat("yyyy-MM-dd").format(new Date())));
}
}
总结: