社区
Java SE
帖子详情
java对多语种的支持!欢迎大家发言!!!
虎叔
2000-11-30 01:15:00
现在要开发的软件是否可以支持多语种?
比如英语和中文简体,繁体等等!
在windows下的开发工具是提供了这种支持!不知道java是否提供了支持?
...全文
140
3
打赏
收藏
java对多语种的支持!欢迎大家发言!!!
现在要开发的软件是否可以支持多语种? 比如英语和中文简体,繁体等等! 在windows下的开发工具是提供了这种支持!不知道java是否提供了支持?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
青润
2000-11-30
打赏
举报
回复
robber兄:
我还想听听别人的看法呢,你怎么就把分数都送给我了。何况这,这又不是我写的。实在是惭愧呀。
虎叔
2000-11-30
打赏
举报
回复
爽!qingrun谢谢你!
青润
2000-11-30
打赏
举报
回复
老兄,给你一篇文章,应该会有用的:
计算机世界1999年第17期
Java的i18n问题
广州市东山区国税局 苏志成
Java 的i18n 问题,即Java 的Internationalization 问题, 指的是如何使应用程序能够同时支持多种语言的问题。对我国这样的非英语国家而汉字又有多种编码方式的情况下具有现实意义。本文将对用java 编制i18n 程序的方法作一介绍。
一、实现目标
作为i18n 程序,不单是能够识别不同编码这么简单。它应能解决如下问题:
*能识别不同的编码方式,如GB 码、BIG5 码等;
*与编码有关的元素,如状态行、消息、按钮的caption 等应在程序之外存储。使新增一种语言时不用修改程序;
*根据不同的语言习惯动态调整与语言相关的元素,如数字、金额、日期等的显示。
二、解决方法
1.不同地区码的识别
Java 中用Locale 类识别不同的地区码。创建Locale 类的实例时指定了语言代码和地区代码。创建GB 中文和BIG5 中文资源的Locale 类实例的语句分别如下:zhLocale=new Locale("zh","CN");twLocale=new Locale("tw","TW")。此构造函数第一个参数是ISO -639 中定义的语言代码(http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt);第二个参数为ISO -3166 中定义的国家代码(http://www.chemie. fu -berlin.de/diverse/doc/ISO 3166.html)。当用户选定了适用的语言后,应将此Locale 设为默认值:Locale.setDefault(new Locale("zh","CN")).
2. 与语言相关的资源单独存放
Java 提供了两种方法存放与语言相关的资源。一种是用文本文件;另一种是用ListResourceBundle 资源类。下面分别阐述两者的不同之处。
*文本文件
使用文本文件存放资源的好处是简单易用。可以用任何文本编辑器编写此文件,而且当修改资源时无须重新编译程序。其格式是' 键= 值' 的列表。例子如下:
#The list in WebTaxResource_zh_CN.properties
button1= 税金
button2= 税率
status1= 初始化中
其中以' #' 开头的行为注释行。对应每一种语言写一个这样的资源文件,但所有的资源文件都必须包含相同的键。
*ListResourceBundle 资源类
虽然用文本文件存储资源非常容易,但它只能存储字符对象。而对于数字、自定义对象等它就无能为力了。因此Java 提供了ListResourceBundle 类。其缺点是每次对资源的修改都必须重新编译程序。此类的结构如下:
//file WebTaxResource_zh_CN.java
import java.util. *;
public class WebTaxResource_zh_CN extends
ListResourceBundle {
static final Object[][] contents = {
{"frametitle"," 工资、薪金所得适用"},
{"label_qizhengdian"," 起征点:"},
{"label_shuikuan"," 税款:"},
{"label_shourue"," 收入额:"},
{"checkbox_qiushouru"," 求收入"},
{"checkbox_qiushuie"," 求税额"},
{"lable1"," 简易税金计算器"},
{"button1"," 工资、薪金个人所得税计算"},
{"button_caculate"," 计算"},
};
public Object[][] getContents() {
return contents;
}
}
其中两维的Object 数组存放的是键-值对。每对中的第一个元素是键。在各个资源类中所有键的数量和标识都必须完全一致。
3. 资源的获取
不同语言的资源存放的文件名都不相同,那如何从正确的文件取得我们需要的资源呢?留意到前面例子中properties 文件名和ListResourceBundle 类名中下划线后的部分吗?没错,它们就是在创建Locale 实例时指定的语言代码和地区代码!剩下的问题就是要解决下划线前面的基本类名部分了。它是由一个ResourceBundle 类的实例来指定的:
ResourceBundle
bundle=ResourceBundle.getBundle("WebTax
Resource",currentLocale);
getBundle 的第一个参数指定了资源文件和资源类的基本类名;第二个参数是你所创建的Locale 的实例,指定了当前程序所有资源默认的语言代码和地区代码。
可见,资源文件名或类名是由" 基本类名_ 语言代码_ 地区代码" 组成的。Java 将先查找有无此名称的类,若没有则查找具有此名称的properties 文件。
匹配了正确的资源文件名或类名后,要获取某键对应的值就变得相当容易。例如,要创建标识为" 计算器" 的标签,只要调用以下语句:
label1=new Label(bundle.getString("label_ jisuanqi"), Label.CENTER);
getString 方法的参数是资源文件中的键名。除了getString 外,ResourceBundle 类还提供了其他方法获取不同的对象,如getStringArray、getObject 等(因为在ListResourceBundle 的实例中允许存在非字符对象)。
4. 转换非Unicode 资源
在Java 内部字符是用Unicode 字符表示的。Unicode 是一种16bit 的编码,支持大多数地区的语言。具体标准可到http://www.unicode.org/index.html 查询。因此,无论是用文本文件还是用资源类的方式存储资源,都应该将非Unicode 字符转换为Unicode 字符。Java 为我们提供了转换的工具-Native2ascii。将含有GB 编码的汉字的WebTaxResource_zh.CN.properties 文件转换为只含Unicode 字符的例子如下:
native2ascii -encoding GB2321 WebTaxRe
source_zh_CN.properties
.\output\WebTaxResource_zh_CN.properties
到此为止,一个支持i18n 的程序就已初步完成了。
三、其他相关问题
正如实现目标中所讲到,支持i18n 的程序不但要识别不同的编码方式,还要根据不同的语言习惯动态调整与语言相关的元素,如数字、金额、日期等的显示。例如在法文中数值123456.78 表示为123 456,78;而在德文中应表示为123.456,78。除了数值和货币之外,不同语言有不同表示的元素还有日期、时间和文本消息。Java 提供了NumberFormat、DateFormat、MessageFormat 类根据不同的Locale 实例动态改变这些元素的显示模式。下面的例子将根据不同的Locale 实例改变数值123456.78 的显示方式。
Double amount = new Double (123456.78);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormatgetNumber
Instance(currentLocale);
amountOut = numberFormatter.format
(amount);
System.out.println(amountOut +" " +
currentLocale.toString());
当然,实现Java 程序的i18n 还有很多问题要考虑,如不同语言的语法问题等。但在Java 中,遇到问题多看看联机文档或其他相关的资料,一般都能得到满意的答案。
三维数字房产互动展示(上部)
提供手工互动漫游、自动漫游、拍照留念、
多语种
、多分辨率
支持
。 2:虚拟样板房展示(中部): 提供样板房互动...
爱因斯坦论教育,放在首位的该是什么?1936年美国高等教育300周年会(公号回复“爱因斯坦教育”下载PDF典藏版,
欢迎
转发赞赏)
爱因斯坦论教育,放在首位的该是什么?1936年美国高等教育300周年会(公号回复“爱因斯坦教育”下载PDF典藏版,
欢迎
转发赞赏) 原创: 秦陇纪 知识简化 今天 知识简化导读:1936年10月15日,纽约奥尔巴尼市政府教育大厦校长厅举行美国高等教育300周年纪念会,暨纽约州立大学第72届毕业典礼,爱因斯坦
发言
:人们应该小心,不要向青年人灌输下面的思想,即生活的目标就是获得习惯意义上的成功。...
你必须知道的10种国产编程语言
你必须知道的10种国产编程语言 你必须知道的10种国产编程语言 ——一个老程序员的心声:我们必须要有国产的编程语言 众所周知,编程语言是外国人的天下,我们一入行,就失去了选择的余地,你不得不跟着外国人的思维转。 笔者从事多年的开发工作,尝试了十几种外国的编程语言,每种编程语言都有自己的特性和固有的缺陷,对其固有缺陷,我们只能望洋兴叹,因为,这些编程语言的设计者和...
微软公司2007年秋季校园招聘在线宣讲会
微软公司2007年秋季校园招聘在线宣讲会 系统公告:感谢大家对微软公司的关注!本次校园招聘在线宣讲会将于19:00准时开始,请各位同学耐心等待。(18:35:54)John Liu 说:大家好晚上好,我是微软亚洲研究院搜索技术中心的总监, 我叫刘激扬.(18:45:36)Leanne Du 说:不限, 但是如果是计算机专业或者是相关的会更好 (18:45:48)John Liu 说:大家晚上好,...
编程语言
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 如果按语种分,可以分为英文符号语言和汉语符号语言两类。(典型的如:易语言、易语言.飞扬)电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 计算机所能识别的语言只有
Java SE
62,615
社区成员
307,328
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章