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

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还会将其保存在SessionWW_TRANS_I18N_LOCALE属性中,如果存在此属性,则指定为用户浏览器的默认Locale

 

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

 

1searchlanguage.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;">

<!-- 从资源文件中读出keylanguag的信息 -->

    <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"

        οnchange="langSelecter_onChanged()" theme="simple"/>

</form>

 

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

 

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=简体中文

 

4struts.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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值