Struts的国际化不好么?我觉得已经够好了
解决方案 »
- Head First 设计模式组合模式中的一个问题
- 如何用EntityManager批量新增数据库记录,如何优化?
- java的一个语法问题
- 多对多,获取数据排序问题
- 求spring jdbctemplate或者hibernate中操作oracle临时表的例子.
- 一个简单的JSP问题
- Spring 事务提交错误
- 有人知道在哪些网站可以下载java学习书籍,交流学习心得??
- hibernate一直报错
- shiro和springmvc怎么控制ajax和redirect:/**.jsp
- 请教个struts面试题目.... 在线等.谢谢!!!
- 请问写好hibernate的持久化类后如何将其关联结构导入数据库(mysql)?
chn.properties(编码过的),就对应一个chn.native(源文件)
然后一个批处理文件,把所有native转换成unicode这样方便又快捷
用一个bat生成转码后的文件在程序运行的时用
应该还算方便在说了转码的文件也是可逆的
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插件
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文档。项目已经完成。
欢迎各位指教。