解决i18n的问题有三种经典思路
2004-11-18 11:01
288 查看
解决i18n的问题有三种经典思路,第一个是为每个页面提供每种语言的相关页面。第二种是把内容从表现形式中分离出来,做不同语言的内容文件。第三种是动态翻译页面内容。第三种很少见,而且机器翻译技术还很难达到人们的预期。第2种就是我们常用的properties。
这三种实现的前提都是要能够得到客户端希望显示的语种和编码。使用properties文件的时候我们不需要手动的从客户请求中去了解accept-language,因为java把这些工作都封装了,只要你提供了properties文件,并在页面中用相应的消息标签(jstl和各大framework都有支持),就能得到期望的显示内容。
在Struts等框架中中大家比较习惯使用properties文件来解决i18n问题。在我现在的一个项目中,我使用不同的js文件来解决这个问题,发现还不错。我写了一系列的js文件:**_zh_CN.js ,**.js服务器端输出代码,比如user_not_found. 根据IE的版本或者客户的设定选用不同的js文件。有一个问题就是,不能把所有的信心放在一个js文件里面,这样会导致js文件太大。
楼主的思路可以说是结合了一和二,把内容分离出来,但不是放在properties中,是放在js文件中,相当于为每个页面提供了每种语言相关的js文件。
我原来一直觉得把整个网站的所有内容信息都放到一个properties中不是一个好习惯,会显得很臃肿、复杂,所以对于楼主的方法比较赞同。而且把决定显示那个语种的工作从服务器端挪到了客户端,减少了服务器端资源的消耗,而且改变了js文件页面显示能马上得到体现,无需考虑资源重新载入的问题。唯一的缺憾是目前没有好的工具支持。
这三种实现的前提都是要能够得到客户端希望显示的语种和编码。使用properties文件的时候我们不需要手动的从客户请求中去了解accept-language,因为java把这些工作都封装了,只要你提供了properties文件,并在页面中用相应的消息标签(jstl和各大framework都有支持),就能得到期望的显示内容。
在Struts等框架中中大家比较习惯使用properties文件来解决i18n问题。在我现在的一个项目中,我使用不同的js文件来解决这个问题,发现还不错。我写了一系列的js文件:**_zh_CN.js ,**.js服务器端输出代码,比如user_not_found. 根据IE的版本或者客户的设定选用不同的js文件。有一个问题就是,不能把所有的信心放在一个js文件里面,这样会导致js文件太大。
楼主的思路可以说是结合了一和二,把内容分离出来,但不是放在properties中,是放在js文件中,相当于为每个页面提供了每种语言相关的js文件。
我原来一直觉得把整个网站的所有内容信息都放到一个properties中不是一个好习惯,会显得很臃肿、复杂,所以对于楼主的方法比较赞同。而且把决定显示那个语种的工作从服务器端挪到了客户端,减少了服务器端资源的消耗,而且改变了js文件页面显示能马上得到体现,无需考虑资源重新载入的问题。唯一的缺憾是目前没有好的工具支持。
相关文章推荐
- JavaScript中最常用的55个经典技巧,没事的时候看看,拓展解决问题的思路
- 贴个乐兄解决问题的思路
- 16个经典面试问题回答思路
- 粘包问题的解决思路
- 16个经典面试问题回答思路(值得一看)
- 面试技巧:16个经典面试问题回答思路
- 滑动冲突问题的简单解决思路
- 单例模式的再一次全面解析与不断解决问题的思路
- 【转贴】16个经典面试问题回答思路
- 6 个 Linux 运维典型问题,大牛的分析解决思路在这里 【转】
- 解决dubbo注册zookepper服务IP乱入问题的三种方式
- wifi连接热点后,待机功耗高 -问题解决思路
- Android 经典笔记之四: 事件冲突解决思路与方案
- SDK Manager在更新的时候问题解决思路
- 同步问题解决的一些思路
- nf_conntrack: table full, dropping packet问题的解决思路
- 解决ScrollView嵌套ListView问题的三种方法
- 经典面试问题回答思路
- 什么是解决问题的思路:超级客服实战 推荐
- linux下不能上网的问题解决思路