Ext 的国际化

33 篇文章 0 订阅

Ext 的国际化  

2008-06-23 15:49:31|  分类: 默认分类转载:http://hi.baidu.com/comasp/blog/item/1bd36f3e620d293970cf6ca9.html

这几天,一直为在ext下的国际化烦恼,ext本身提供了国际化的功能,国际化文件在ext/source/locale、目录下,但是你要使用它,就必须在<head>进行引入,例如

<script type="text/javascript" src="ext/source/locale/ext-lang-cn_ZH.js"></script>

但是这样做就意味着固定了语言的种类,现在要求在改变IE浏览器中的语言选项的时候也要改变网页语言,这就得重新编写网页文件,这肯定不合理,如何解决呢?

我尝试了各种方法:

1、在javascript中能否得到浏览器设置的语言?

    在网上找了很长时间,有如下语句

                  window.navigator.userLanguage

                  window.navigator.systemLanguage

                  navigator.browserLanguage

   三个得到是系统浏览器语言,根本就不是浏览器设语言改变后的语言。

   这个企图没有成功。

2、在设计过程中我用到一个字符编码过滤器EncodingFilter.java,主要是在web.xml中加入过滤,从而解决字符集编码问题,我想能否在web一运行就得到当前浏览器设置

的语言,然后将语言保存到session或request中,这样每个页面就可以从sesson或request中取得当前的浏览器语言,想法可以,能解决吗?

在struts 2 中得到request和session的方法如下:

         http://tmsoft.lsxy.com/index.php?load=read&id=582

     没成功啊。。。。!!!原因在于运行过滤器前,根本没有加载struts 2的配置文件,那么你采用上面得到session或request的方法根本不起作用,提示无指针异常。

3、在听了一堂课后,想到只能写一个action来实现

  1. public class Register extends ActionSupport implements ServletRequestAware{   
  2. /**
  3. *
  4. */  
  5. private static final long serialVersionUID = 1L;   
  6. private HttpServletRequest request;   
  7.   
  8. @Override  
  9. public String execute() throws Exception {   
  10. request.setAttribute("browserLang", request.getLocale().toString());   
  11. return SUCCESS;   
  12. }   
  13.   
  14. @Override  
  15. public void setServletRequest(HttpServletRequest request) {   
  16. this.request=request;   
  17.   
  18. }   
  19.   
  20.   
  21.   
  22.    

public class Register extends ActionSupport implements ServletRequestAware{ /** * */ private static final long serialVersionUID = 1L; private HttpServletRequest request; @Override public String execute() throws Exception { request.setAttribute("browserLang", request.getLocale().toString()); return SUCCESS; } @Override public void setServletRequest(HttpServletRequest request) { this.request=request; }

通过ServletRequestAware接口得到request,然后request.setAttribute("browserLang", request.getLocale().toString());

将浏览器语言放入request

最后在页面用${browserLang }得到

<script type="text/javascript" src="ext/source/locale/ext-lang-${browserLang }.js"></script>  

<script type="text/javascript" src="ext/source/locale/ext-lang-${browserLang }.js"></script>

struts 2 有这点好处${browserLang }切入任何地方多能得到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值