国际化
Posted 不好说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国际化相关的知识,希望对你有一定的参考价值。
所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言。假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,而中文的操作系统则返回中文界面——这便是典型的i18n国际化问题。对于有国际化要求的应用系统,我们不能简单地采用硬编码的方式编写用户界面信息、报错信息等内容,而必须为这些需要国际化的信息进行特殊处理。简单来说,就是为每种语言提供一套相应的资源文件,并以规范化命名的方式保存在特定的目录中,由系统自动根据客户端语言选择适合的资源文件。
html和java只有一套代码。找到需要做多语言切换的这些文字。一般来说是网页中的导航栏,标题,数据库中的数据是不归i18n能够处理的。这些文字不能直接书写在htm或者java代码中。而是把他们书写在特定目录下的特定文件中。
每种语言都创建自己语言所对应的文件,文件中是当前语言的文字。
国际化信息”也称为“本地化信息”,一般需要两个条件才可以确定一个特定类型的本地化信息,它们分别是“语言类型”和“国家/地区的类型”。如中文本地化信息既有中国大陆地区的中文,又有中国台湾、中国香港地区的中文,还有新加坡地区的中文。
以上语言和地区代码的知识会在以下步骤创建国际化资源文件时候使用,用于文件的命名。
以下特指springmvc的国际化:
sturts2和servlet都有自己国际化的方式
步骤:
1创建项目,导报,配置springmvc所需配置。
2springmvc.xml中添加以下配置
<
bean
id
=
"localeResolver"
class
=
"org.springframework.web.servlet.i18n.SessionLocaleResolver"
/>
<!-- 国际化资源文件 -->
<
bean
id
=
"messageSource"
class
=
"org.springframework.context.support.ReloadableResourceBundleMessageSource"
>
<
property
name
=
"basename"
value
=
"classpath:messages"
/>
</
bean
>
<
mvc:interceptors
>
<
bean
id
=
"localeChangeInterceptor"
class
=
"org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
>
<
property
name
=
"paramName"
value
=
"lang"
/>
</
bean
>
</
mvc:interceptors
>
解释:
SessionLocaleResolver类通过一个预定义会话名将区域化信息存储在会话中
“messageSource”配置的是国际化资源文件的径,”classpath:messages”指的是classpath路径下的messages_zh_CN.properties文件和messages_en_US.properties文件
最后配置的是一个拦截器,该拦截器通过名为”lang”的参数来拦截HTTP请求,使其重新设置页面的区域化信息
3在java代码的目录下创建国际化资源文件:
messages_zh_CN.properties文件:
1
2
3
4
|
language.cn = \\u4e2d\\u6587
language.en = \\u82f1\\u6587
internationalisation = \\u56fd\\u9645\\u5316
welcome = \\u6b22\\u8fce\\u8bbf\\u95ee\\u201c\\u007a\\u0069\\u0066\\u0061\\u006e\\u0067\\u0073\\u006b\\u0079\\u7684\\u4e2a\\u4eba\\u535a\\u5ba2\\
u201d\\uff0c\\u0055\\u0052\\u004c\\uff1a\\u0068\\u0074\\u0074\\u0070\\u003a\\u002f\\u002f\\u0077\\u0077\\u0077\\u002e\\u007a\\u0069\\u0066\\u0061\\u006e\\u0067\\u0073\\u006b\\u0079\\u002e\\u0063\\u006e
|
messages_en_US.properties文件:
1
2
3
4
|
language.cn = Chinese
language.en = English
internationalisation = \\u0020Internationalisation
welcome = Welcome to visit "zifangsky\'s personal blog",URL\\uff1ahttp://www.zifangsky.cn
|
以上文字中买出现了乱码,其实是中文的unicode编码,在properties文件中文显示为unicode编码。
两个资源文件中都是键值对,key都相同,value分别是所在文件所表示语言的文字。
配置文件是提供给SessionLocaleResolver,sringmvc 会自动根据当前需要的语言在多个配置文件中进行匹配。
4正常创建Controller与转发到的jsp页面
5以下为jsp文件的实验代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="mvc" uri="http://www.springframework.org/tags/form" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<
html
>
<
head
>
<
title
>
</
title
>
</
head
>
<
body
>
Language: <
a
href
=
"?lang=zh_CN"
><
spring:message
code
=
"language.cn"
/></
a
> - <
a
href
=
"?lang=en_US"
><
spring:message
code
=
"language.en"
/></
a
>
<
h2
>
<
spring:message
code
=
"welcome"
/>
</
h2
>
Locale: ${pageContext.response.locale }
</
body
>
</
html
>
以上是关于国际化的主要内容,如果未能解决你的问题,请参考以下文章