国际化

所谓国际化程序指的是同一套程序代码可以在不同的国家使用,可以根据其应用的国家自动在项目中显示出本国的相应文字信息。

使用Locale类定义语言环境

Locale类的常用方法

No. 方法 类型 描述
1 public Locale(String language,String country) 构造 设置使用的语言以及国家编码
2 public static Locale getDefault() 普通 取得当前语言环境下的Locale类对象

例:输出Locale类对象

package Project.Study.LocaleClass;import java.util.Locale;public class Test1 {public static void main(String[]args){Locale locale=Locale.getDefault();System.out.println(locale);}
}
//结果:
//zh_CN

我们可以看到,输出部分“zh_CN”由两个部分组成,其中“zh”表示现在使用的语言是中文,而“CN”表示现在的国家是中国。

利用ResourceBundle读取文件

资源文件一般都是以“key=value”的形式保存文本信息,这样在进行信息读取时就可以根据指定的key取得对应的value数据,但是资源文件的文件名称是有要求的,必须以“*.properties”作为文件后缀。

ResourceBundle类的常用方法

No. 方法 类型 描述
1 public static final ResourceBundle getBundle(String baseName) 普通 根据当前默认语言环境,取得资源对象
2 public static final ResourceBundle getBundle(String baseName,Locale locale) 普通 根据指定的语言环境,取得资源对象
3 public final String getString(String key) 普通 根据key取得对应的value数据

例:在IDEA中创建一个"*.properties"文件

如图,右键点击

输入所创建文件的名称,点击OK

这样,一个"*.properties"文件就创建完成了

接着就是往文件里面写入信息了

例:读取资源文件

package Project.Study.LocaleClass;import java.util.ResourceBundle;public class Test2 {public static void main(String[]args){//访问的时候不用加上后缀,因为默认找到的后缀就是“*.properties”ResourceBundle resourceBundle=ResourceBundle.getBundle("Project.Study.LocaleClass.data1");//文件的存放地址System.out.println(resourceBundle.getString("hello"));//根据文件中定义的key取得对应的value数据}
}
//结果:
//Hello World!!!

例:读取数据并且动态设置内容

资源文件

package Project.Study.ResourceBundleClass;import java.text.MessageFormat;
import java.util.ResourceBundle;public class Test1 {public static void main(String[]args){//访问的时候不用加上后缀,因为默认找到的后缀就是“*.properties”ResourceBundle resourceBundle=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.test1_data");System.out.println(MessageFormat.format(resourceBundle.getString("data"),"World","!!!"));//设置两个占位符的内容}
}
//结果:
//Hello World!!!

多资源读取

关于资源文件的读取顺序:
在进行资源文件的定义时可能会出现两类资源:
1.公共资源(没有设置语言与国家编码)
2.具体的语言资源文件(设置了语言与国家编码)
因为存在两类文件,所以在读取的时候会优先读取存在具体语言与国家编码的资源文件,如果读取不到则再读取公共资源。
例:读取资源文件
定义中文资源文件

定义英文(英语——美国)资源文件

package Project.Study.ResourceBundleClass;import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;public class Test2 {public static void main(String[]args){Locale zhLoc=new Locale("zh","CN");//中国——中文Locale enLoc=new Locale("en","US");//英语——美国ResourceBundle zhRB=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.Message",zhLoc);//读取中文资源文件ResourceBundle enRB=ResourceBundle.getBundle("Project.Study.ResourceBundleClass.Message",enLoc);//读取英文资源文件//读取资源内容System.out.println(MessageFormat.format(zhRB.getString("data"),"World","!!!"));System.out.println(MessageFormat.format(enRB.getString("data"),"World","!!!"));}
}
//结果:
//Hello World!!!
//Hi World!!!

注意:如果资源中的占位符不足,则就算输出时设置了相应的数据也不会输出这些数据;反之,如果资源中设置了相应的占位符,但输出时没有设置相应的数据,则会将占位符原封不动地输出,如:

Java学习总结:40(国际化)相关推荐

  1. JAVA java学习(40)——————输出杨辉三角形

    杨辉三角形由数字进行排列,可以把它看作是一个数字表,其基本特性是两侧数值均为 1,其他位置的数值是其左上方数值与右上角数值之和. 打印杨辉三角形的实现思路是:每一行前面都是空格,而每行空格的个数需要根 ...

  2. Java学习笔记——实现国际化程序开发 附:不同的国家/地区与语言缩写代码

    Locale类 要想实现国家化程序开发:首先需要解决的是不同国家用户的区域和语言编码问题,在java.util包里面提供有一个专门描述区域和语言编码的类,Local类,主要使用两个构造方法进行实例化: ...

  3. java学习(40):成员实例的定义和访问

    定义一个student类 public class student { String name;//输入姓名 int age;//输入年龄 String address;//输入地址 char sex ...

  4. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  5. [转]从入门到精通,Java学习路线导航

    引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...

  6. java周志第二周_第二周JAVA学习日志

    从这周老师讲的东西中,我了解了许多以前不懂得东西.这周老师布置的作业,对我来说真的有点困难.通过上课的学习和下来翻书,勉强完成了一个登录界面的制作.这周学习的事件处理和swing组建以及swing组建 ...

  7. java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)

    java学习中,字符串使用(比较.构造方法)(java 学习中的小记录)作者:王可利(Star·星星) String的使用 1.在内存中是如何保存字符串. == :比较的是地址(引用数据类型) equ ...

  8. Java学习系列及数据结构博客全目录

    Java学习系列 Java学习系列(一)Java的运行机制.JDK的安装配置及常用命令详解 Java学习系列(二)Java注释.标识符.基本数据类型及其转换易错点详解 Java学习系列(三)Java运 ...

  9. java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...

    (源码在上传的压缩包"[java学习记录]11.多线程实现阶乘计算(Thread类和Runnable接口)"中可看到,该压缩包可下载)java * 采用Thread类的子类实现线程 ...

  10. 2016最新Java学习计划

    一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 ...

最新文章

  1. centos7+samba 安装与调试记录
  2. Andriod --- JetPack (二):LifeCycle 的诞生
  3. 漂亮大气注册登录页面模板
  4. 性能测试之JMeter配置元件【计数器】
  5. Linux常见目录含义及功能
  6. Opencv笔记(二十一)——傅里叶变换
  7. Marathon环境下fastdfs和vsftpd和miniIo文件服务器搭建的方式
  8. 算法导论习题C.2-7,C.2-8答案
  9. matlab验证角谷猜想问题,角谷猜想1.5编程基础之循环控制21
  10. 快递查询单号查询,分享简单好用查询技巧
  11. Java基础知识英文选择题1——Basic of Java Programs.
  12. u深度做linux启动盘,u深度启动盘制作
  13. 设计思维——科学提升创造力的方法
  14. 如何用空气质量查询API接口进行快速开发
  15. 建造者模式 java_java的建造者模式可以应用在什么地方
  16. Java(SpringMVC03)(SSM整合1)
  17. 邮币卡如何“做局”? 高回报诱惑下的陷阱
  18. 服务器上文件不能编辑器,UEditor 编辑器常见问题解决
  19. 心形曲线(java)
  20. Android 触摸事件(Touch)的传递机制

热门文章

  1. ROS Melodic安装、配置和使用turtlebot2(集成众多源代码直接下载)
  2. ATS缓存中间层介绍
  3. weiss数据结构和算法书的使用说明
  4. MQTT 心跳和keepalive配置
  5. rest-framework之解析器
  6. layui上传图片接口
  7. ThinkPHP5.0中Redis的使用和封装(原创)
  8. [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum
  9. hiho_1139_二分+bfs搜索
  10. IE和火狐都支持的方法(输入用户名和密码后按下 enter 键)