国际化-项目开发中的自定义回复消息

大家好,我是 IT 修真院深圳分院第 5 期的学员,一枚正直纯洁善良的的的的的 java 的程序员。

今天给大家分享一下,国际化-项目开发中的自定义回复消息

-----------------------------------------------------------------------------------------

1.背景介绍

很多网站的用户分布在世界各地,

 

因此网站需要针对不同国家的用户展示不同语言的内容,

 

因此就有了国际化实现的需求,

 

大多数网站都会在网站的头部或尾部设置语言切换链接,

 

这样就可以直接切换成相应的内容。

 

 

国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问。

 

关于国际化我们想到的最简单的方案就是为不同的国家创建不同的网站,比如苹果公司,他的英文官网是:http://www.apple.com

 

而中国官网是 http://www.apple.com/cn

 

苹果公司这种方案并不适合全部公司,而我们希望相同的一个网站,

 

而不同人访问的时候可以根据用户所在的区域显示不同的语言文字,而网站的布局样式等不发生改变。

 

 

1. 在页面上能够根据浏览器的情况对文本 (不是内容), 时间, 数字进行本地化处理

 

2. 可以在 bean 中获取国际化资源文件 locale 对应的消息

 

3. 可以通过超链接获取 locale, 而不再依赖于浏览器的语言设置情况

 

国际化的英文 Internationalization,但是由于拼写过长,

 

有人想了一个简单的写法叫做 I18N,代表的是 Internationalization 这个单词,

 

以 I 开头,以 N 结尾,而中间是 18 个字母,所以简写为 I18N。

 

以后我们说 I18N 和国际化是一个意思

 

 

2.知识剖析

 

 

关于国际化的鸡汤解释

 

首先我们需要知道,用户使用的是哪种语言,这个问题最好解决,

 

因为浏览器在发送请求时会发送如下请求头: Accept-Language: zh-CN,en-US

 

下一步需要我们根据不同的语言显示不同的内容.

 

那我们想一下,如果说我们在页面中把这些诸如:用户名、密码等信息都写死了,那么,将不能再修改

 

所以在页面中这些需要国际化的内容都是需要动态获取的,也就是他们实际上都是变量。

 

 

我们一般采取的方式是将这些需要国际化的内容写到一个资源配置文件中,

 

然后程序根据不同的语言加载不同的文件,就达到了一个国际化的目的。

 

在国际化 Spring MVC 应用的时候,是将语言区域(Locale)相关的文本元素单独存在一个独立的属性文件中,

 

然后不同的 Locale 对应的属性文件就构成了一个 ResourceBundle,

 

在 Spring MVC 显示本地化的消息时就会根据所在的区域显示对应的文本

 

 

 

 

Java 程序的国际化主要通过如下三个类完成:

 

Ø java.util.ResourceBundle:用于加载一个国家、语言资源包。

 

Ø java.util.Locale:用于封装一个特定的国家 / 区域、语言环境。

 

Ø java.text.MessageFormat:用于格式化带占位符的字符串。

 

为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容是很多 key-value 对。其中 key 是程序使用的部分,而 value 则是程序界面的显示字符串。

 

 

资源文件的命名可以有如下三种形式:

 

Ø baseName _ language _country.properties

 

Ø baseName _language.properties

 

Ø baseName.properties

 

其中 baseName 是资源文件的基本名,用户可以自由定义。

 

而 language 和 country 都不可随意变化,必须是 Java 所支持的语言和国家。

 

 

3.常见问题

 

 

当程序报错的时候,但是我又不想将后台报错报给用户,同时返回给用户对应的提示信息,需要怎么做?

 

 

4.解决方案

 

使用Spring异常处理类动态捕获错误,然后在项目中返回对应的code码

 

 

5.编码实战

 

 

6.扩展思考

 

 

需要依赖国际化的两个主要格式化类为 NumberFormat 和 DateFormat,它们在通过工厂方法获取其实现子类时,都会依赖参数 Locale 来决定最终被实例化的子类

 

 

7.参考文献

 

链接地址:https://www.cnblogs.com/lixiaopan/p/6229118.html

 

作者:鬼男

 

 

8.更多讨论

1.国际化的原理是什么?

  程序根据不同的语言环境找到不同的资源文件,之后从资源文件中取出内容,资源文件中的内容是以 key-àvalue 的形式保存的,所以在读取的时候通过其 key 找到对应的 value.

2.国际化的类别有几种?

国际化分为 2 类:静态数据国际化和动态数据的国际化。静态的就向我们讲的,动态的比如金额,比如时间。

静态数据,包括 “标题”、“用户名”、“密码” 这样的文字数据。

动态数据,包括日期、货币等可以动态生成的数据。

3.为什么需要国际化?

软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。能够更好的为客户提供服务。

 

 

--------------------------------------------------------------------------

技能树. IT 修真院   

  “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

   这里是技能树. IT 修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄 1 对 1 免费指导。

快来与我一起学习吧〜http://www.jnshu.com/login/1/18140043

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值