Struts的国际化不好么?我觉得已经够好了

解决方案 »

  1.   

    用Eclipse的那个Properties Editor插件嘛,自动将中日文存盘为Unicode,是日本人开发的或者你自己写一个Properties文件的自动转码这样维护不就方便多了
      

  2.   

    IDE用的是NetBeans,所以无法用Eclipse插件。关于写Properties文件的自动转码,能给个思路吗?多谢赐教。
      

  3.   

    我是这样做的,比如中文
     chn.properties(编码过的),就对应一个chn.native(源文件)
    然后一个批处理文件,把所有native转换成unicode这样方便又快捷
      

  4.   

    多个原文properties文件对应多国语言
    用一个bat生成转码后的文件在程序运行的时用
    应该还算方便在说了转码的文件也是可逆的
      

  5.   

    可能是我没有把问题说清楚:公司的网站有三种语言:中英日。以前所有的语言相关的字符串都以Unicode的形式写在properties文件中,而且是手工写入的。现在的解决办法是:在网站的admin端,允许用户(中英日网页文档编写者)在Web上进行操作,在textarea中输入相应的文本,程序自动翻译成Unicode再存入properties文件中。这个项目没有用到Struts,只是JSP/Servlet和JavaBean,现在Unicode-〉本地语言和本地语言-〉Unicode的转换已经解决,小弟的问题是当从html/jsp网页的textarea发送文本,由Servlet的request.getParameter("text")接收到的是转义字符,例如“你好”就变成“你好”,网页显示没有问题,浏览器可iyi自动转换,问题是String对象中这样的转义字符如何处理,请dx不吝赐教。
      

  6.   

    我的做法是,先各自编写好各语种的properties文件,例如
    res_en.properties
    res_chs.properties
    res_cht.properties
    ...然后用java的命令把上述资源文件编码成UTF-8格式。可用批命令的方式。encode.bat
    native2ascii -encoding UTF-8 res_en.properties  ApplicationResources.properties
    native2ascii -encoding UTF-8 res_en.properties  ApplicationResources_en_US.properties
    native2ascii -encoding UTF-8 res_chs.properties ApplicationResources_zh_CN.properties
    native2ascii -encoding UTF-8 res_cht.properties ApplicationResources_zh_TW.properties
    也很方便。--------------------
    其实最舒服的是用eclipse的Properties Editor插件
      

  7.   

    问题已接近解决:现在已经可以在线编辑properties文件,数据可以立即更新,也可以立即返回网页。现在唯一的问题是当用properties.setProperty()和properties.store()以后,写入的Unicode都是两个反斜线,例如\\u3053,而不是单反斜线\u3053,这样在网页上的显示成为\u3053,而不是该Unicode所代表的字符。请高手赐教。
      

  8.   

    用utf-8的文档保留中日文等,然后等deploy的时候再convert成"\xxxxx"格式
      

  9.   

    感谢各位参加讨论,现将我的解决方案披露如下:
    1。扩展ResourceBundle类,主要解决properties文件的加载策略的问题。现存的ResourceBundle只能用getString(key)读进国际化字符串,但无法更新。因此新扩展的类首先加入了setString(key, value)以解决动态更新properties文件的问题。第二个要解决的问题是reloading的问题(在不重启服务器的情况下重新加载更新的properties文件内容),这个困扰了一段时间,首先想到的是启动一个线程,加入listener进行监听,后来知道Jakarta-commons中已经有现成的utility,叫做Configuration,下载后使用了一下发现很好用,所有properties文件的加载、更新、reloading都可以用它解决,因此扩展的ResourceBundle完全汉采用了commons-Configuration的现成方法。这样完成了ResourceBundle的扩展。
    2。编码问题,最后的经验是:所有的页面都采用UTF-8编码,这样以不变应万变,特别注意的是不仅要在Servlet中setContentType("text/html;charset=UTF-8"),JSP页面中<%@page ContentType="text/html;charset=UTF-8" %>和<%@page pageEncoding="UTF-8"%>,而且在接收用户输入时也要使用"UTF-8",例如:String userInput = new String(request.getParameter("userInput").getByte("ISO-8859-1"), "UTF-8");
    这样不管你处理的字符串是什么语言都能对应,而且,一旦你的Web应用配置到其他非中文环境的时候仍然不会出乱码,当然如果你的配置环境确定是中文的话,new String中的"UTF-8"也可以改成"GBK"。
    3。数据结构:PropertyBundleGroup管理所有的国际化文件,PropertyBundle管理特定国际化文件,PropertyFile管理特定语中的文件,其中封装了扩展的ResourceBundle类,最后是Document类,封装特定语种properties文件的所有信息。
    4。程序架构:没有用任何开源框架,但架构上尽量模仿Struts,用一个ControllerServlet作为中心调度,Servlet初始化时创建整个PropertyBundleGroup,这样在各个页面就可以编辑现存的任何properities文档。项目已经完成。
    欢迎各位指教。