jsp 网站的多语言实现

时间:2022-02-19 15:52:45
项目快完成了 客户提出要实现中日两种语言显示 怎么处理

7 个解决方案

#1


让他们修改IE的参数设置吧~~~

#2


是纯jsp的?

#3


得说下你们项目的大致架构吧。

#4


利用struts的国际化啊
在struts-config.xml 文件加上<message-resources parameter="resources.application"/>

   resources.application:是指在resources文件夹下的application前缀的文件

   其名称如:application_en_US.properties、application_zh_CN.properties

   在文件里面只要写入KEY,VALUE如:

    top.login=Login
   top.regedit=Regedit
   top.home=Home

页面文字处理 :

1.1概述 

由于STRUTS提供了很好的国际化的支持,因此JSP页面可以STRUTS的这一特性做到国际化。 

STRUTS允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,而在JSP页面上则通过STRUTS标签来显示文字,该标签可以根据浏览器的当前语言设置确定从对应的语种资源文件中取出字符串,显示在页面上。 

1.2资源文件 

实现国际化,首先需要准备好资源文件,需要支持的语言各对应一个。资源文件一定要用支持多国语言文字的文本编辑器(如WORD,一定不能用NOTEPAD、UE等)编写,其格式如下: 

# Project international 

index.title=XX信息系统 

index.copyright=XXX有限公司 版权所有 

其中以#开头的行是注释,其它的行都是KEY=VALUE的形式,定义了一个KEY对应当前语言下的文字。保存资源文件时,需要在文件类型选项中选择纯文本类型,编码选择其它>>UTF-8,注意资源文件的扩展名为.properties,文件名可以任意取。 

这样保存的资源文件还不能直接被STRUTS使用,JDK提供了一个工具native2ascii对编写的资源文件进行转换,该工具位于%JDK% /bin/目录下,一般在JDK正确安装后可以直接在命令行使用。使用native2ascii工具转换的资源的文件的命令行格式如下: 

native2ascii -encoding UTF-8 ApplicationResources.properties ApplicationResources_zh_CN.properties 

其中-encoding参数指明编写的资源文件的编码格式,这里必须与编辑时选择保存的编码格式一致,后面两个参数分别是需要转换的资源文件名和转换后保存的资源文件名。 

转换后的资源文件名都必须以一个特定的前辍开头,该前辍写在struts-config.xml配置中,后辍是对应语言的简称,如 

英文(美国) ApplicationResources _en_US.properties 

中文(简体)ApplicationResources _zh_CN.properties 

中文(繁体)ApplicationResources _tw.properties 

泰语 ApplicationResources _th.properties 

资源文件的存放目录可以是/WEB-INF/classes/下的任意目录,为了便于管理 ,建议在/WEB-INF/ classes/下建立目录resources,将所有的资源文件都放在该目录下。STRUTS通过配置文件struts-config.xml配置资源文件的所在位置,如: 

其中目录以包的方式表示。 

1.3 JSP页面显示 

为了支持国际化,JSP页面的编码方式需要设成UTF-8,即在页面的头部加入以下几行: 

<%@ page contentType="text/html; charset=UTF-8" %>

……(STRUTS及其它标签库引用) 

JSP页面的中文字要全部写到资源文件中,注意每种语言资源文件都要写到,否则在使用某种语言访问系统时可能会报错。JSP中使用STRUTS标签显示资源文件中定义的字符串。这样当改变浏览器的当前语言后,页面会自动取得与浏览器当前语言对应的资源文件中的字符串显示在页面上。 

对于在ACTION的JAVA代码中直接设置的变量,如需要在JSP页面上进行显示,那么在设置变量时也需要从资源文件中通过KEY取到当前语言的字符串,再使用request.setAttribute方法进行设置,这样在JSP页面上使用标签展现设置的变量才会对应不同的语言会呈现不同的字符串。 

在JAVA代码中取资源文件的信息的方法是,首先通过Globals.MESSAGES_KEY从request或session变量中取得资源对象(MessageResources),再调用MessageResources.getMessage方法即可取得相应的字符串,该方法需的两个参数是当前语言区域设置(Locale)和字符串的KEY,其中当前语言区域设置(Locale)保存在SESSION变量中,其变量名为 Globals.LOCALE_KEY,该变量在下一节手工设置语言时也有提到。 

1.4手工设置显示语言 

用浏览器的语言设置来决定系统采用哪种语言展现可能会出现一个问题,就是用户的浏览器语言与他想要使用系统的语言不一致的情况,如某客户浏览器的语言设置为英文,但他还是在使用主站系统时看到的是中文界面。该问题可以通过手工选择语言来解决,在程序中可以通过设置名为 Globals.LOCALE_KEY(Globals.LOCALE_KEY 是 struts的常量)的SESSION变量,也能改变系统中当前语言的设置,代码类似于: 

Locale newLocale = new Locale( language, country ); 

session.setAttribute( Globals.LOCALE_KEY, newLocale ); 

其中变量language, country 可以通过用户的选择设置相应的值,各种语言的对应值参考http://www.unicode.org/unicode/onlinedat/countries.html。 

#5


比如提供个引导页,让用户选择语言,把这个语言标志记录在用户的session对象里,此用户的操作 返回的信息,首先看下这个语言标志,然后返回对应的语言信息。

#6


我只知道资源国际化,不过,你们得把页面所有说明性文字全都重新贴一遍了。

#7


jdk库里也有对国际化的支持的,前端的话貌似jstl也支持

#1


让他们修改IE的参数设置吧~~~

#2


是纯jsp的?

#3


得说下你们项目的大致架构吧。

#4


利用struts的国际化啊
在struts-config.xml 文件加上<message-resources parameter="resources.application"/>

   resources.application:是指在resources文件夹下的application前缀的文件

   其名称如:application_en_US.properties、application_zh_CN.properties

   在文件里面只要写入KEY,VALUE如:

    top.login=Login
   top.regedit=Regedit
   top.home=Home

页面文字处理 :

1.1概述 

由于STRUTS提供了很好的国际化的支持,因此JSP页面可以STRUTS的这一特性做到国际化。 

STRUTS允许将不同语言的文字写在多个资源文件中,每个资源对应一种语言,而在JSP页面上则通过STRUTS标签来显示文字,该标签可以根据浏览器的当前语言设置确定从对应的语种资源文件中取出字符串,显示在页面上。 

1.2资源文件 

实现国际化,首先需要准备好资源文件,需要支持的语言各对应一个。资源文件一定要用支持多国语言文字的文本编辑器(如WORD,一定不能用NOTEPAD、UE等)编写,其格式如下: 

# Project international 

index.title=XX信息系统 

index.copyright=XXX有限公司 版权所有 

其中以#开头的行是注释,其它的行都是KEY=VALUE的形式,定义了一个KEY对应当前语言下的文字。保存资源文件时,需要在文件类型选项中选择纯文本类型,编码选择其它>>UTF-8,注意资源文件的扩展名为.properties,文件名可以任意取。 

这样保存的资源文件还不能直接被STRUTS使用,JDK提供了一个工具native2ascii对编写的资源文件进行转换,该工具位于%JDK% /bin/目录下,一般在JDK正确安装后可以直接在命令行使用。使用native2ascii工具转换的资源的文件的命令行格式如下: 

native2ascii -encoding UTF-8 ApplicationResources.properties ApplicationResources_zh_CN.properties 

其中-encoding参数指明编写的资源文件的编码格式,这里必须与编辑时选择保存的编码格式一致,后面两个参数分别是需要转换的资源文件名和转换后保存的资源文件名。 

转换后的资源文件名都必须以一个特定的前辍开头,该前辍写在struts-config.xml配置中,后辍是对应语言的简称,如 

英文(美国) ApplicationResources _en_US.properties 

中文(简体)ApplicationResources _zh_CN.properties 

中文(繁体)ApplicationResources _tw.properties 

泰语 ApplicationResources _th.properties 

资源文件的存放目录可以是/WEB-INF/classes/下的任意目录,为了便于管理 ,建议在/WEB-INF/ classes/下建立目录resources,将所有的资源文件都放在该目录下。STRUTS通过配置文件struts-config.xml配置资源文件的所在位置,如: 

其中目录以包的方式表示。 

1.3 JSP页面显示 

为了支持国际化,JSP页面的编码方式需要设成UTF-8,即在页面的头部加入以下几行: 

<%@ page contentType="text/html; charset=UTF-8" %>

……(STRUTS及其它标签库引用) 

JSP页面的中文字要全部写到资源文件中,注意每种语言资源文件都要写到,否则在使用某种语言访问系统时可能会报错。JSP中使用STRUTS标签显示资源文件中定义的字符串。这样当改变浏览器的当前语言后,页面会自动取得与浏览器当前语言对应的资源文件中的字符串显示在页面上。 

对于在ACTION的JAVA代码中直接设置的变量,如需要在JSP页面上进行显示,那么在设置变量时也需要从资源文件中通过KEY取到当前语言的字符串,再使用request.setAttribute方法进行设置,这样在JSP页面上使用标签展现设置的变量才会对应不同的语言会呈现不同的字符串。 

在JAVA代码中取资源文件的信息的方法是,首先通过Globals.MESSAGES_KEY从request或session变量中取得资源对象(MessageResources),再调用MessageResources.getMessage方法即可取得相应的字符串,该方法需的两个参数是当前语言区域设置(Locale)和字符串的KEY,其中当前语言区域设置(Locale)保存在SESSION变量中,其变量名为 Globals.LOCALE_KEY,该变量在下一节手工设置语言时也有提到。 

1.4手工设置显示语言 

用浏览器的语言设置来决定系统采用哪种语言展现可能会出现一个问题,就是用户的浏览器语言与他想要使用系统的语言不一致的情况,如某客户浏览器的语言设置为英文,但他还是在使用主站系统时看到的是中文界面。该问题可以通过手工选择语言来解决,在程序中可以通过设置名为 Globals.LOCALE_KEY(Globals.LOCALE_KEY 是 struts的常量)的SESSION变量,也能改变系统中当前语言的设置,代码类似于: 

Locale newLocale = new Locale( language, country ); 

session.setAttribute( Globals.LOCALE_KEY, newLocale ); 

其中变量language, country 可以通过用户的选择设置相应的值,各种语言的对应值参考http://www.unicode.org/unicode/onlinedat/countries.html。 

#5


比如提供个引导页,让用户选择语言,把这个语言标志记录在用户的session对象里,此用户的操作 返回的信息,首先看下这个语言标志,然后返回对应的语言信息。

#6


我只知道资源国际化,不过,你们得把页面所有说明性文字全都重新贴一遍了。

#7


jdk库里也有对国际化的支持的,前端的话貌似jstl也支持