软件国际化学习

国际化 :同一套系统在不同的国家访问时,显示当前国家的语言

软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,

并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。

国际化又简称为 i18n:internationalization

软件国际化的特征:

对于程序中固定使用的静态文本数据,例如菜单栏、导航条等中使用的文本元素、或错误提示信息,

状态信息等,需要根据来访者的地区和国家,选择不同语言的文本为之服务。

对于程序动态产生的数据,例如(日期,货币等),软件应能根据当前所在的国家或地区的文化习惯进行显示。

注意:一个合格的国际化软件必须包含静态数据和动态数据的国际化。

如何做到国际化

国际化分为静态数据国际化和动态文本国际化

静态数据国际化:

网站中显示固定文本的国际化 如用户名和密码的提示。

动态文本国际化 :如时间的显示      货币的单位

1.软件中存储特定的字符串

对于软件中的菜单栏、导航条、错误提示信息,状态信息等这些固定不变的文本信息,可以把它们写在一个properties文件中,

并根据不同的国家编写不同的properties文件。这一组properties文件称之为一个资源包

在JavaAPI中提供了一个ResourceBundle 类用于描述一个资源包,并且 ResourceBundle类提供了相应的方法getBundle,

这个方法可以根据来访者的国家地区自动获取与之对应的资源文件予以显示

国际化文件(properties)的命名:基础名_语言简称 _国家简称     国家简称可以不写

一个资源包中的每个资源文件都必须拥有共同的基名。除了基名,每个资源文件的名称中还必须有标识其本地信息的附加部分。例如:一个资源包的基名是“myproperties”,

则与中文、英文环境相对应的资源文件名则为: “myproperites_zh.properties”  “myproperites_en.properties”

每个资源包都应有一个默认资源文件,这个文件不带有标识本地信息的附加部分。若ResourceBundle对象在资源包中找不到与用户匹配的资源文件,它将选择该资源包中

与用户最相近的资源文件,如果再找不到,则使用默认资源文件。例如:myproperites.properties

资源文件的内容通常采用“关键字=值”的形式,软件根据关键字检索值显示在页面上。一个资源包中的所有资源文件的关键字必须相同,

值则为相应国家的文字。并且资源文件中采用的是properties格式文件,所以文件中的所有字符都必须是ASCII字码,对于像中文

这样的非ACSII字符,须先进行编码。(java提供了一个native2ascII命令用于编码)。例:属性文件是不能保存中文的

username=username                       username=\u7528\u6237\u540d

password=password                        password=\u5bc6\u7801

submit=submit                            submit=\u63d0\u4ea4

         resource_en.properties文件                resource_zh.properties文件

ResourceBundle类提供了一个静态方法getBundle,该方法用于装载资源文件,并创建ResourceBundle实例:

Locale currentLocale = Locale.getDefault();

ResourceBundle myResources =

ResourceBundle.getBundle(basename, currentLocale);

basename为资源包基名(且必须为完整路径)。

如果与该locale对象匹配的资源包子类找不到。一般情况下,则选用默认资源文件予以显示。

加载资源文件后, 程序就可以调用ResourceBundle 实例对象的 getString 方法获取指定的资源信息名称所对应的值。

String value =  myResources.getString(“key");

在WEB应用中实现固定文本的国际化

<fmt:setLocale>标签用于在JSP页面中显示的设置用户的本地化信息,并将设置的本地信息以Locale对象的形式保存在某个web域中

语法:<fmt:setLocale value=“locale”

[variant=“variant”]

[scope=“{page|request..}”]/>

<fmt:setBundle>标签用于根据<fmt:setLocale>标签设置的本地化信息创建一个资源包(ResourceBundle)实例对象,并将其绑定到一个web域的属性上。

语法:<fmt: setBundle basename=“basename”

[var=“varname”]

[scope=“{page|request|session|application}”] />

2.知道浏览器当前使用的是那种语言

Java提供了一个本地化对象,封装了当前所在国家,语言和环境已经经济等信息

可以通过request.getLocal()方法获取当浏览器使用的本地语言

Java.util.Local类提供动态国际化的封装

该类提供了表示各国国家名称的简称的常量

Locale locale = Locale.CHINA;//模拟中国的语言环境

locale.getCountry();//获取国家的简称

locale.getDisplayCountry();//国家名称

locale.getLanguage();//获取该国使用的语言的简称

locale.getDisplayLanguage();//获取国家使用的语言

时间: 2024-08-29 09:40:25

软件国际化学习的相关文章

IOS软件国际化(本地化Localizable)

IOS软件国际化(本地化Localizable) iPhone是支持语言最多的手机,它支持各国语言及中国少数名族如蒙古等语言,这也是好多少数名族都用苹果的原因.在这一点上我们自主品牌还是要多学习学习.在IOS软件开发中,可以通过几步简单的设置让软件支持多国语言. 言归正传,现在说说如何让自己开发的应用支持多国语言,具体操作如下: 一.新建ios工程,工程名随便,我这儿用的是Localizable联系(本地化). 二.新建完成打开后,点击项目结构树最上面的项目名Localizable联系(本地化)

JavaWeb开发——软件国际化(文本元素国际化)

前几天围绕着JDBC编程进行了系统的学习.现在我们对Java程序数据库操作已经是轻车熟路了.也学会了使用各种框架来帮助我们简化编程. 今天是学习计划的第七天,虽然学习热情没有前几天高涨了.但是,写博客总结的习惯应该要坚持下去.废话不多说了. 今天的学习内容是JavaWeb开发--软件国际化. 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化又称为 i18n:internationalization

Chrome浏览器扩展开发系列之十八:扩展的软件国际化chrome.i18n API

i18n是internationalization 的简写,这里将讨论软件国际化的问题.熟悉软件国际化的朋友应该知道,软件国际化要求,页面中所有用户可见的字符串都必须置于资源属性文件中.资源属性文件中的资源是形如“key=value”的键值对,一行一个.其中key为资源的标识符,用于HTML页面中,根据当前页面的Locale确定要使用的资源.value是资源的值,不同的Locale对应的资源值不同,在资源文件中统一用Unicode编码. 通过chrome.i18n API和相关的资源配置文件,可

1、HTML学习 - IT软件人员学习系列文章

本文做为<IT软件人员学习系列文章>的第一篇,将从最基本的开始进行描述,了解的人完全可以跳过本文(后面会介绍一些工具). 今天讲讲Web开发中最基础的内容:HTML(超文本标记语言).HTML的内容是文本,就象我们在文本文档中记录内容一样. 一.最基本例子. 下面是一个最基本的HTML页面文本内容(代码一): <html> <head> <title>这个HTML页面</title> </head> <body> 这是HT

[有关软件项目管理]学习心得

算是一些和软件项目管理学习有关的心得吧. 接触软件项目管理这门课程以后多少了解到了一些关于未来发展的方向和事务处理的技巧.是较为生动的一门课程,很感谢王赞老师和Austin的指导. 即便还没有接触到和软件项目管理有关的大环境,一些课堂讲授的内容也能应用于日常生活和学习中.在下一阶段的实训当中相信就能学以致用. 另外作为一个团队进行探讨分工,限时高效的完成分配的任务不得不说是一件很有意思的事情,不仅使思维活跃也让项目完成得更出色,我想这种模式是我们所需要且应该加以锻炼的. 第三是中英文授课交替也让

开篇:软件项目的整个流程 - IT软件人员学习系列文章

这段时间闲来无事,就在总结以前的项目经验,然后写成博客的形式以进行记录.本文就对<IT软件人员学习系列文章>做个开篇吧. 对于IT软件的开发来说,无外乎B/S.C/S和Android.iOS(后两项也是C/S).在B/S领域,无外乎PHP.JAVA和ASP.NET这几大阵营.而在C/S领域,JAVA的开发比较复杂,需要编写一些重复的和底层的代码,相比C#的可视化和相似的语法,还是微软的开发工具和语言比较容易上手. 但是,我们今天讲的不是代码,而是整个软件流程,这个属于软件工程的范畴.我们知道,

高可用软件Keepalived学习之Keepalived架构学习

最近在测试新游戏的部署方案,我们正在测试的一款手游后端代码部署采用HAProxy+Keepalived的方式进行部署,所以顺便研究下Keepalived的详细资料. Keepalived的官方地址是http://www.keepalived.org/index.html Keepalived是一个用C语言编写的路由软件,它的目的是为Linux系统或基于Linux系统的基础架构提供简单而强壮的负载均衡和高可用机制.负载均衡框架依赖于LVS的内核模块并提供四层负载均衡功能.它可以根据负载均衡器后端的

桌面软件开发学习笔记-带着问题出发

最近接触仿真软件比较多,但是感慨于国内相关软件市场的落后,在想自己可以做出什么贡献.我有软件的逻辑知识,但是要怎样将想要的功能实现,还需要软件工程.不认识什么软件开发的朋友,所以打算自己先入门,再找同行学习取经.不然都没有共同话题可聊. 主要想学的内容,现在可以想到的有: 1, 开发桌面软件需要学习哪门或哪几门编程语言,每门语言的优劣? 2,软件开发的一般流程 3,软件开发平台 4,软件测试-------前期学习不是重点 ...还有一些后期的问题,以上的前三个问题都是非常general但是非常重

JavaWeb开发——软件国际化(动态元素国际化)

软件国际化的第二个部分,就是动态元素国际化. 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理.Java 中提供了解决这些问题的 API 类(位于 java.util 包和 java.text 包中). Locale 类 Locale 实例对象代表一个特定的地理,政治.文化区域. 一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由