视频
1.背景介绍
国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问。关于国际化我们想到的最简单的方案就是为不同的国家创建不同的网站,比如苹果公司,他的英文官网是:http://www.apple.com而中国官网是http://www.apple.com/cn
苹果公司这种方案并不适合全部公司,而我们希望相同的一个网站,而不同人访问的时候可以根据用户所在的区域显示不同的语言文字,而网站的布局样式等不发生改变。
于是就有了我们说的国际化,国际化总的来说就是同一个网站不同国家的人来访问可以显示出不同的语言。
国际化的英文Internationalization,但是由于拼写过长,有人想了一个简单的写法叫做I18N,代表的是Internationalization这个单词,以I开头,以N结尾,而中间是18个字母,所以简写为I18N。以后我们说I18N和国际化是一个意思。
2、知识剖析
首先我们需要知道,用户使用的是哪种语言,这个问题最好解决,因为浏览器在发送请求时会发送如下请求头:Accept-Language: zh-CN,en-US
下一步需要我们根据不同的语言显示不同的内容。那我们想一下,如果说我们在页面中把这些诸如:用户名、密码等信息都写死了,那么,将不能再修改。
所以在页面中这些需要国际化的内容都是需要动态获取的,也就是他们实际上都是变量。
我们一般采取的方式是将这些需要国际化的内容写到一个资源配置文件中,然后程序根据不同的语言加载不同的文件,就达到了一个国际化的目的。
3、编码实战
在springmvc-servlet.xml配置国际化资源文件
配置i18n.properties和两个国际化资源文件,中文和英文
配置一个i18n的jsp页面
这里为了使用国际化消息,需要用到fmt标签。JSTL提供了对国际化的支持,可以根据发出请求的客户端地域的不同来显示不同的语言信息
4、常见问题
properties文件无法正常显示中文
5、解决方案
properties文件一开始中文读取出来是乱码,然后我发现网上写的都是Unicode码,但他们都是用的eclipse写的,所以我就打开了快一个月没用过的eclipse,发现在eclipse中,在properties文件中输入中文会自动转换成Unicode码,这是为了防止乱码。又查了很多,发现idea可以进行全局的utf-8设置,在setting底下的编译器的文件编码中,改完之后发现还是不行_(:з」∠)_
然后重启idea之后就好了,页面就会显示中文了。。当然输入Unicode码也可以,不过需要手动转换一下,很麻烦
------------------------------------------------------------------------------------------------------------------------
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
我的邀请码:14229748,或者你可以直接点击此链接:http://www.jnshu.com/login/1/14229748