您的位置:首页 > 其它

如何获取客户端浏览器所使用的语言

2010-05-03 18:03 204 查看
http://wenku.baidu.com/view/5a31ac1e650e52ea55189874.html

看你的servlet的request对象的AccectLanguage

使用request.getLocal()方法,可以返回客户机浏览器上的语言设定值

http://wenku.baidu.com/view/5a31ac1e650e52ea55189874.html

我想得到的浏览器语言信息能直接如CN、En、TW这样的形式显示出来,请问大家有什么简单的办法吗??

1 楼pleonheart(只睡六小时)回复于 2004-06-11 16:19:03 得分 20

试试这个
java.util.Enumeration enu = request.getHeaderNames();
while (enu.hasMoreElements()) {
String str = (String)enu.nextElement();
System.out.println(str + " : " + request.getHeader(str));
}

3 楼fanciex(http://BugOnline.net 在线的Bug管理系统)回复于 2004-06-16 21:41:26 得分 0

到http://jakarta.apache.org/taglibs/index.html 下载 taglibs-request.jar
----------

<req:parameters id="param">
<jsp:getProperty name="param" property="name"/> = <jsp:getProperty name="param" property="value"/>
</req:parameters>
----------
运行结果:
accept = */*

accept-language = zh

accept-encoding = gzip, deflate

user-agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

host = yf8:8080

connection = Keep-Alive

cookie = JSESSIONID=0EC55117EE3E9E45BA765FD4698FA9E2Top

Web框架——Struts2国际化实现用户自行选择语言
作者:娜 来源:程序员之家 发布者:admin
时间:2009-11-16 10:48:21 点击:637

在很多应用中,我们需要提供允许用户自行选择语言的功能。Struts2中可以通过ActionContext.getContext().setLocale(Locale locale)设置用户的默认语言。Struts2还提供了一个名为i18n的拦截器(已经包含在默认拦截器栈中),i18n拦截器首先在请求中查找名为request_locale,如果存在,就将其转换成Locale对象,并设置成用户默认的Locale,此外i18n还会将其保存在Session的WW_TRANS_I18N_LOCALE属性中,如果存在此属性,则指定为用户浏览器的默认Locale。

我们在应用中,可以将我们系统所支持的语言放在一个下拉列表中,用户选择下拉列表中的某项时,将其值作为request_locale参数提交给Struts2就可以了。实现代码如下:

1,searchlanguage.jsp页面代码:此页面就是用户选择语言的页面,它也以嵌在任何页面下

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<script type="text/javascript">
function langSelecter_onChanged()
{
document.getElementById("langForm").submit();
}
</script>
<!-- 将session里的WW_TRANS_I18N_LOCALE属性的值取出来,赋值给此页面的属性SESSION_LOCALE -->
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<!-- 在此页面注册一个lee.Locales类型的Bean -->
<s:bean id="locales" name="lee.Locales">
<!-- 给lee.Locales的参数current注入值SESSION_LOCALE -->
<s:param name="current" value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"/>
</s:bean>
<!-- 提交给当前目录名.action处理,这样做是为了在任何都可以嵌入此selectlanguage.jsp页面,如果用户不需要此功能,这里也可以指定action -->
<form action="<s:url/>" id="langForm"
style="background-color:#bbbbbb; padding-top: 4px; padding-bottom: 4px;">
<!-- 从资源文件中读出key为languag的信息 -->
<s:text name="languag"/>
<!-- 读出刚才注册的locales类实例的locales属性 -->
<s:select label="Language" list="#locales.locales" listKey="value" listValue="key"
value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
name="request_locale" id="langSelecter"
onchange="langSelecter_onChanged()" theme="simple"/>
</form>

2,Locales类的代码如下:此类仅作数据装载,不做其它用途。

package lee;

import java.util.*;

public class Locales
{
//current属性,由于此属性只做赋值操作,不做取值操作,因此没有get方法
private Locale current;
public void setCurrent(Locale cur)
{
this.current = cur;
}

//locales属性,由于此属性只做取值操作,不做赋值操作,因此没有set方法
public Map<String, Locale> getLocales()
{
Map<String, Locale> locales = new Hashtable<String, Locale>();
//这里是根据当前用户选择的语言类型,获取指定资源文件,这一步非常重要
ResourceBundle bundle = ResourceBundle.getBundle("messageResource" , current);
//设置工程支持的语言类型,key里的值对应资源文件里的key的值
locales.put(bundle.getString("usen"), Locale.US);
locales.put(bundle.getString("zhcn"), Locale.CHINA);
return locales;
}
}

3,资源文件messageResource.properties中的内容如下:

languag=选择语言
usen=美式英语
zhcn=简体中文

4,struts.xml配置文件中的配置如下:

<action name="*">
<result>/WEB-INF/jsp/{1}.jsp</result>
</action>

这个action的配置意思就是返回你请求的那个JSP页面,因为所有的操作,在你选择语言的时候就已经完成了,所以无需其它的处理。

5,其它页面的调用方式:

其它JSP页面要调用此页面,只需要include就行了。如下例

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:include value="selectlanguage.jsp"/>
<s:form action="Login">
<s:textfield name="username" key="user"/>
<s:textfield name="password" key="pass"/>
<s:submit key="login"/>
</s:form>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: