i18n国际化

188 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

i18n

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

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

苹果公司这种方案并不适合全部公司,而我们希望相同的一一个网站,而不同人访问的时候可以根据用户所在的区域显示 不同的语言文字,而网站的布局样式等不发生改变。

于是就有了我们说的国际化,国际化总的来说就是同一个网站不同国家的人来访问可以显示出不同的语言。但实际上这 种需求并不强烈,-般真的有国际化需求的公司,主流采用的依然是苹果公司的那种方案,为不同的国家创建不同的页 面。所以国际化的内容我们了解一下即可。

国际化的英文Iteratinalization,但是由于拼写过长,老外想了一个简单的写法叫做118N,代表的是Iternatinaliation这个单词,以1开头,以N结尾,而中间是18个字母,所以简写为18N。以后我们说18N和国际化是一个意思 。

国际化相关要素

i18n_threePoint.jpg

Locale locale = locale.getDefault();//根据操作系统语言版本获取本地语言-国家信息
locale.CHINA;//获取中文,中文常量的Locale对象
locale.us;//获取英文,美国的常量的Locale对象

//通过指定的basename和Locale对象,读取相应的配置文件
ResourceBundle bundle = ResourceBundle.getBundle("i18n",locale);
bundle.getString();//获取语言信息
//从请求头中获取Locale信息(语言)
Locale locale = request.getLocale();
//获取资源包(根据指定的baseName和Locale语言信息
ResourceBundle i18n = ResourceBundle.getBundle("i18n",locale);

配置信息:

i18n_properties.jpg

使用<%= i18n.getString("sex") %>的方式获取配置中的内容,系统会自动根据语言信息选择指定内容。