java学习之路----java类库---程序国际化
来源:互联网 发布:young网络用户名 编辑:程序博客网 时间:2024/06/04 00:24
国际化是开发中比较常见的一种要求
1.国际化实现思路
比如,一个程序要求可以同时实现英语,法语,汉语的显示
思路:
可以根据不同的语言配置不同的资源文件(资源文件有时也称属性文件,其后缀名.properties),所以资源文件是以key--value(键值对)的形式出现,只要找到了key,就找到了value。
想要实现Java程序的国际化,必须通过以下三个类实现
.java.util.Locale;用于表示一个国家的语言类
.java.util.ResourceBundle;用于访问资源文件
.java.txt.MessageFormat;格式化资源文件的占位字位符
具体流程如下:
Locale来指定区域码---->ResourceBundle根据Locale提供的区域码找到相应的资源文件--->如果资源文件中存在动态文本,则用MessageFormat来格式化
2.Locale类
locale的构造方法:
public Locale(String language)//根据语言代码来构造一个语言环境
public Locale(String language,)//根据语言和国家来构造一个语言环境
3.ResourceBundle类
代码:
在写代码之前首先写一个资源文件
Message.properties
public class InterDemo {
public static void main(String[] args) {
ResourceBundle rb=ResourceBundle.getBundle( "Message"); //找到资源
System. out .println("资源" +rb.getString( "info"));
}
}
结果:
资源Hello
4.java国际化程序的实现
第一步:配好属性文件
中文:Message_zh_CN
内容:info= \u4f60\u597d 这里的文字需要转码:你可以用native2ascii.exe来进行转码
英文:Message_en_US
内容:info=Hello
法文:Message_fr_FR
内容: info=Bonjour
public class InterDemo2 {
public static void main(String[] args) {
Locale zhLoc= new Locale("zh" ,"CN" );//表示中国地区
Locale enLoc= new Locale("en" ,"US" );//表示美国地区
Locale frLoc= new Locale("fr" ,"FR" );//表示法国地区
//找到中文的属性文件
ResourceBundle zhrb=ResourceBundle.getBundle( "Message",zhLoc);
//找到英文的属性文件
ResourceBundle enrb=ResourceBundle.getBundle( "Message",enLoc);
//找到法文的属性文件
ResourceBundle frrb=ResourceBundle.getBundle( "Message",frLoc);
System. out .println("中文:" +zhrb.getString( "info"));
System. out .println("英文:" +enrb.getString( "info"));
System. out .println("法文:" +frrb.getString( "info"));
}
}
结果:
中文:你好
英文:Hello
法文:Bonjour
5.处理动态文本
上面的代码都是写死了,如果想要动态的输入一些内容,就要用占位符来表示出动态文本的内容
步骤:
需要改动的地方:
中文:Message_zh_CN
内容:info= \u4f60\u597d{0} 这里的文字需要转码:你可以用native2ascii.exe来进行转码
英文:Message_en_US
内容:info=Hello{0}
法文:Message_fr_FR
内容: info=Bonjour{0}
代码:
public class InterDemo2 {
public static void main(String[] args) {
Locale zhLoc= new Locale("zh" ,"CN" );//表示中国地区
Locale enLoc= new Locale("en" ,"US" );//表示美国地区
Locale frLoc= new Locale("fr" ,"FR" );//表示法国地区
//找到中文的属性文件
ResourceBundle zhrb=ResourceBundle.getBundle( "Message",zhLoc);
//找到英文的属性文件
ResourceBundle enrb=ResourceBundle.getBundle( "Message",enLoc);
//找到法文的属性文件
ResourceBundle frrb=ResourceBundle.getBundle( "Message",frLoc);
System. out .println("中文:" +zhrb.getString( "info"));
System. out .println("英文:" +enrb.getString( "info"));
System. out .println("法文:" +frrb.getString( "info"));
String str1=zhrb.getString( "info" );
String str2=enrb.getString( "info" );
String str3=frrb.getString( "info" );
System. out .println("中文-->" +MessageFormat.format (str1, "中国" ));
System. out .println("英文-->" +MessageFormat.format (str2, "China" ));
System. out .println("法语-->" +MessageFormat.format (str3, "China" ));
}
}
结果:
中文:你好{0}
英文:Hello{0}
法文:Bonjour{0}
中文-->你好中国
英文-->HelloChina
法语-->BonjourChina
如果需要跟多的占位符,则是{1},{2}......
- java学习之路----java类库---程序国际化
- java学习之路----java类库---程序国际化
- Java复习之程序的国际化
- Java程序的国际化
- JAVA 程序实现国际化
- Java程序+Struts国际化
- Java程序国际化
- JAVA国际化程序实现
- Java国际化程序
- java程序国际化
- Java程序的国际化
- Java国际化学习总结
- java web之国际化
- Java基础之国际化
- Java之国际化操作
- 传智播客java web 学习,国际化的web程序开发
- <JAVA学习笔记一>——程序的国际化
- java程序的国际化2
- 算法练习之水题
- ADT查看源码出现no source attachment
- Windows环境下配置Apache 2.2.x + SSL ,实现https方式
- 59,DMS(01)
- Adobe Audition 基本使用
- java学习之路----java类库---程序国际化
- linux export env
- bootcmd(nolock)
- newLISP FOOP 类的方法以及实现
- 特殊符號發音表
- makefile := 用法
- makefile教學
- 1_c++实现简单vector
- 总结linux清理垃圾命令