posts - 2, comments - 27, trackbacks - 0, articles - 60
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

从浏览器里提取语言设置信息

Posted on 2008-09-09 11:06 ZhouFeng 阅读(1018) 评论(0)  编辑  收藏 所属分类: Web开发

这两天在想一个东东,就是在I18N,在考虑如何获取客户端的语言设置,后来在JSTL的example里找到一点信息,我们可以通过ServletRequest.getLocales()方法获得一个Local对象,再从Local对象里提取信息,为了做这个测试,我还在我的浏览器设置里多加了几个语言,如下图所示

语言首选项

然后写了一个测试的JSP页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<title>Local Test</title>
  
</head>
  
  
<body>
    
<% 
      Enumeration enum_ 
= request.getLocales();
      
while (enum_.hasMoreElements()) {
        Locale locale 
= (Locale)enum_.nextElement();
        out.println(
"locale.getDisplayCountry():"+locale.getDisplayCountry()+"<br>");
        out.println(
"locale.getDisplayName():"+locale.getDisplayName()+"<br>");
        out.println(
"locale.getCountry():"+locale.getCountry()+"<br>");
        out.println(
"locale.toString():"+locale.toString()+"<br>");
        out.println(
"<hr>");
      }
    
%>

  
</body>
</html>

Local对象还有很多方法可以调用,在此我只试了几个,运行后在浏览器里得到的结果如下

locale.getDisplayCountry():中国
locale.getDisplayName():中文 (中国)
locale.getCountry():CN
locale.toString():zh_CN

--------------------------------------------------------------------------------
locale.getDisplayCountry():
locale.getDisplayName():英文
locale.getCountry():
locale.toString():en

--------------------------------------------------------------------------------
locale.getDisplayCountry():香港
locale.getDisplayName():中文 (香港)
locale.getCountry():HK
locale.toString():zh_HK

获取了这样的信息后,在JSP页面里按照浏览器语言设置来进行页面跳转应该有办法了

在看JSTL的example时,里面也有对i18N的支持,不过还没有来得及学习,也许还有更好的处理办法,就像STRUTS里的i18N处理

今天也总算搞了点东西出来,又学到一点点,Good Good Study, Day Day Up


只有注册用户登录后才能发表评论。


网站导航: