WEB开发多语言完善的解决方案
目前的普遍的解决方案都是用资源文件,或者xml。在装载一个页面时将相应的语言文字赋值给页面控件。但这些解决方案都存在一些问题:
1. 开发速度:写赋值代码是件很没意思的事情,尤其是当页面上那么多控件时,给控件取名,对应控件和相应Text,这些都是很浪费时间的事情。
2. 容易出错:写赋值代码这可是件细致活,因为控件多了,很容易对应错。而且这种错误还不能一下子发现。
3. 运行效率:慢。因为每次都要后台生成页面控件。有更好的多语言解决方案吗?开发速度快,不易出错,运行效率又高。
当然。以下是我的解决方案:
1. 将各语言放在不同的目录名下。比例cn目录放中文版,en目录下放英文版。
2. 先开发一个版本,其他版本页面先不做(当然一般是中文版)
注意:任何涉及多语言的文字,都要放到ASPX页面里。比如:弹出一个提示框。必须在页面上写一个javaScript变量,赋值为提示信息字符串,后台写弹出框代码时,就使用此变量。为什么这样做?看下面就知道了。
3. 开发好后,将此版本的Aspx文件copy到其他版本目录下。(可以整个复制,然后删除多余文件。)
4. 翻译其他语言的页面。(就是把页面文字都替换成其它语言)
5. 多语言完成。 (是不是很简单?)
案例:我设计开发的一个项目 。 广交会,Scan系统
http://scan.cantonfair.org.cn/scan/cn/search/exhibitor_index.aspx
等等。到现在,上面的解决方案还有点问题。看出来没?
没?那你就是没认真思考了。题目叫完善,肯定就不会是上面那个样子。
存在2个问题:
1。翻译ASPX的人员容易出错 (因为页面太多了)
2。ASPX页面的结构发生变化时(比如:加了一个控件),必须重新拷贝ASPX页面,这时候又要重新翻译。
对此,有好办法没?
工具时代了,什么都要靠工具。美国人为什么那么牛X,因为它有最牛X的战争工具。我的办法就是:写一个自动翻译工具。(什么?你不会,你,你是干啥的啊?)
其实很简单,
1. 这个工具读取一个语言文件(文件是文字的对应翻译,可用XML,具体自己想)
2. 然后根据文件到工程目录找到.aspx文件,复制到对应语言的目录下。
3. 替换对应的字符串。注意:要从最长的字符串开始。例如:字符“这是个工具”,如果从短字符翻译,那么字符“工具”可能就先被替换了。导致整个字符串不能正确替换。
4. 完成好了,整个方案就是这样的了。开发速度,不易出错,运行效率,都有了。