Java学习总结:40(国际化)
国际化
所谓国际化程序指的是同一套程序代码可以在不同的国家使用,可以根据其应用的国家自动在项目中显示出本国的相应文字信息。
使用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(国际化)相关推荐
- JAVA java学习(40)——————输出杨辉三角形
杨辉三角形由数字进行排列,可以把它看作是一个数字表,其基本特性是两侧数值均为 1,其他位置的数值是其左上方数值与右上角数值之和. 打印杨辉三角形的实现思路是:每一行前面都是空格,而每行空格的个数需要根 ...
- Java学习笔记——实现国际化程序开发 附:不同的国家/地区与语言缩写代码
Locale类 要想实现国家化程序开发:首先需要解决的是不同国家用户的区域和语言编码问题,在java.util包里面提供有一个专门描述区域和语言编码的类,Local类,主要使用两个构造方法进行实例化: ...
- java学习(40):成员实例的定义和访问
定义一个student类 public class student { String name;//输入姓名 int age;//输入年龄 String address;//输入地址 char sex ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- [转]从入门到精通,Java学习路线导航
引言 最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. J ...
- java周志第二周_第二周JAVA学习日志
从这周老师讲的东西中,我了解了许多以前不懂得东西.这周老师布置的作业,对我来说真的有点困难.通过上课的学习和下来翻书,勉强完成了一个登录界面的制作.这周学习的事件处理和swing组建以及swing组建 ...
- java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)
java学习中,字符串使用(比较.构造方法)(java 学习中的小记录)作者:王可利(Star·星星) String的使用 1.在内存中是如何保存字符串. == :比较的是地址(引用数据类型) equ ...
- Java学习系列及数据结构博客全目录
Java学习系列 Java学习系列(一)Java的运行机制.JDK的安装配置及常用命令详解 Java学习系列(二)Java注释.标识符.基本数据类型及其转换易错点详解 Java学习系列(三)Java运 ...
- java多线程阶乘_【java学习记录】11.用多线程实现阶乘的计算过程和结果的读取(thread类ReadThread )...
(源码在上传的压缩包"[java学习记录]11.多线程实现阶乘计算(Thread类和Runnable接口)"中可看到,该压缩包可下载)java * 采用Thread类的子类实现线程 ...
- 2016最新Java学习计划
一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码 第一阶段 Java基础 入门 学习周期: 35天 ...
最新文章
- centos7+samba 安装与调试记录
- Andriod --- JetPack (二):LifeCycle 的诞生
- 漂亮大气注册登录页面模板
- 性能测试之JMeter配置元件【计数器】
- Linux常见目录含义及功能
- Opencv笔记(二十一)——傅里叶变换
- Marathon环境下fastdfs和vsftpd和miniIo文件服务器搭建的方式
- 算法导论习题C.2-7,C.2-8答案
- matlab验证角谷猜想问题,角谷猜想1.5编程基础之循环控制21
- 快递查询单号查询,分享简单好用查询技巧
- Java基础知识英文选择题1——Basic of Java Programs.
- u深度做linux启动盘,u深度启动盘制作
- 设计思维——科学提升创造力的方法
- 如何用空气质量查询API接口进行快速开发
- 建造者模式 java_java的建造者模式可以应用在什么地方
- Java(SpringMVC03)(SSM整合1)
- 邮币卡如何“做局”? 高回报诱惑下的陷阱
- 服务器上文件不能编辑器,UEditor 编辑器常见问题解决
- 心形曲线(java)
- Android 触摸事件(Touch)的传递机制