国际化

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

使用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. HDU2112(Flody算法和Dijstra算法)
  2. 如何扩大控件的触控响应区域
  3. linux为3种人准备了权限,linux的3种特殊权限
  4. SQLServer创建数据库详解
  5. 浪客剑心:位图法Bitmap算法分析
  6. mysql怎么新增_mysql怎么新增用户
  7. 电脑打字手指正确姿势_洞箫的演奏姿势和动作
  8. AndroMDA 4.x架构(2)
  9. SCOM 2012知识分享-16:管理任务窗格
  10. angular 万年历_angularjs日期选择插件
  11. 工作两三年了,整不明白架构图都画啥?
  12. WINVNC分析(一)——源码执行流程
  13. 舒舍 舍友的北漂租房故事
  14. C# 调用微软自带SpeechSDK 实现文字转语音
  15. 强化网络互连设备安全配置脚本
  16. 电子取证和司法鉴定笔记
  17. VMware 如何调整Linux系统窗口大小
  18. 【小沐学Python】Python实现在线英语翻译功能
  19. Java编程语言概述
  20. 【一网打尽】独立重复事件——常见概率分布

热门文章

  1. 分布式存储(ceph)技能图谱(持续更新)
  2. centos设置网络自动启动
  3. 你知道dos和cmd之间的关系以及区别吗?
  4. Luogu 4438 [HNOI/AHOI2018]道路
  5. 【Python3_基础系列_006】Python3-set-集合
  6. 谷歌推出情境感知API
  7. Java 集合框架(二)—— ArrayList
  8. docker容器互联
  9. Table doesn't have a primary key
  10. Vim----ma6174