国际化采用什么技术最好? Struts的国际化不好么?我觉得已经够好了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用Eclipse的那个Properties Editor插件嘛,自动将中日文存盘为Unicode,是日本人开发的或者你自己写一个Properties文件的自动转码这样维护不就方便多了 IDE用的是NetBeans,所以无法用Eclipse插件。关于写Properties文件的自动转码,能给个思路吗?多谢赐教。 我是这样做的,比如中文 chn.properties(编码过的),就对应一个chn.native(源文件)然后一个批处理文件,把所有native转换成unicode这样方便又快捷 多个原文properties文件对应多国语言用一个bat生成转码后的文件在程序运行的时用应该还算方便在说了转码的文件也是可逆的 可能是我没有把问题说清楚:公司的网站有三种语言:中英日。以前所有的语言相关的字符串都以Unicode的形式写在properties文件中,而且是手工写入的。现在的解决办法是:在网站的admin端,允许用户(中英日网页文档编写者)在Web上进行操作,在textarea中输入相应的文本,程序自动翻译成Unicode再存入properties文件中。这个项目没有用到Struts,只是JSP/Servlet和JavaBean,现在Unicode-〉本地语言和本地语言-〉Unicode的转换已经解决,小弟的问题是当从html/jsp网页的textarea发送文本,由Servlet的request.getParameter("text")接收到的是转义字符,例如“你好”就变成“你好”,网页显示没有问题,浏览器可iyi自动转换,问题是String对象中这样的转义字符如何处理,请dx不吝赐教。 我的做法是,先各自编写好各语种的properties文件,例如res_en.propertiesres_chs.propertiesres_cht.properties...然后用java的命令把上述资源文件编码成UTF-8格式。可用批命令的方式。encode.batnative2ascii -encoding UTF-8 res_en.properties ApplicationResources.propertiesnative2ascii -encoding UTF-8 res_en.properties ApplicationResources_en_US.propertiesnative2ascii -encoding UTF-8 res_chs.properties ApplicationResources_zh_CN.propertiesnative2ascii -encoding UTF-8 res_cht.properties ApplicationResources_zh_TW.properties也很方便。--------------------其实最舒服的是用eclipse的Properties Editor插件 问题已接近解决:现在已经可以在线编辑properties文件,数据可以立即更新,也可以立即返回网页。现在唯一的问题是当用properties.setProperty()和properties.store()以后,写入的Unicode都是两个反斜线,例如\\u3053,而不是单反斜线\u3053,这样在网页上的显示成为\u3053,而不是该Unicode所代表的字符。请高手赐教。 用utf-8的文档保留中日文等,然后等deploy的时候再convert成"\xxxxx"格式 感谢各位参加讨论,现将我的解决方案披露如下: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文档。项目已经完成。欢迎各位指教。 跨年请假SQL 各位前辈,来帮我看看我的思路错哪儿了?谢谢1!!! 我要导出50万条数据生成excel,大家有办法吗 新手:foreach的使用问题 请大家帮忙看看我用java调用SQL Server存储过程的代码有什么问题 jpa save获取id的问题 关于网站中增加一个MSN即时通讯内容 jtable 设置它不好移动列的相对位置 【请教各位】如何在TOMCAT5.0中配置数据源? 关于struts的问题,急求! 请教个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文档。项目已经完成。
欢迎各位指教。