继续等niu人
加分
:)

解决方案 »

  1.   

    很高兴能和楼主探讨,在做Struts时也遇到国际化问题,在action里面可以取得国际化资源:
    MessageResources resources = this.getResources(request, "message");
    jsp里面可以像楼主所说的那样:
    1.先设置locale
    request.getSession().setAttribute(Globals.LOCALE_KEY,locale);
    2.根据bundle和key取得资源
    <bean:message bundle="user" key="user.name"/>
      

  2.   

    建议楼主通过用户选择来做国际化,单纯的通过struts去获取客户端的区域来做会有问题.
    一些公用的格式转换可以通过参数条件来做.
    比如说所有的校验都需要传递个local参数.而在校验里通过local来判定使用哪种校验方式.关于数据库存储的数据如日期\货币等都可以是标准格式,在显示时根据区域不同转成相应的格式.
    这么做法的效率肯定没有直接指定来的快.但能避免很多问题.时区是个大问题.如果真要做到这个,那估计得通过IP去查用户在哪国了.呵呵,或者不考虑这个原因,用户选择什么语言就给他显示什么时间.
      

  3.   


    单纯的通过struts去获取客户端的区域来做会有问题.
    这个怎么讲?时区是个大问题.如果真要做到这个,那估计得通过IP去查用户在哪国了.呵呵,或者不考虑这个原因,用户选择什么语言就给他显示什么时间.
    这确实是个大问题
    比如google,即使是选择了用英文界面,它仍然知道你是中国的,估计是通过IP确定
      

  4.   


    对头
    如果在Struts Action里,可以直接使用Struts的工具类Locale locale = this.getLocale(request);
    MessageResources messageResource = this.getResources(request, "UserResources"); 
    String userName = messageResource.getMessage(locale, "user.name");如果不是Action,可以参考Struts Action中getLocale和getResources的实现Locale locale = RequestUtils.getUserLocale(request, null);
    MessageResources messageResource = (MessageResources) request.getAttribute(Globals.MESSAGES_KEY);
    String userName = messageResource.getMessage(locale, "user.name");其中RequestUtils.getUserLocale的实现如下先从session里看有没有自定义过local
    (Locale) session.getAttribute(Globals.LOCALE_KEY);
    如果没有,取环境的local(IE或系统的语言设置)
    request.getLocale();[/code]
      

  5.   

    顶一个,Struts好久都没用了,国际化用得更少,过来学习...
      

  6.   

    过来学习。。现在也在用struts还有spring、hibernate做项目。。感觉struts框架比较成熟。。
      

  7.   

    语言不一样,显示也不一样
    比如"中国"是2个字,"China"是5个字母,页面很难搞定样式什么的,而且有的字是嵌在图片里的
    我们一般是对一种语言做一套页面出来,选择哪种语言,需要用户自己去选择,而不是自动国际化
      

  8.   

    这是个好东西,
    不过我看到的很多都是
    cn/
    en/
    jp/
    等目录下,分别放置。
    这样让故意让人家看看我有几个版本,好像很牛的。呵呵