到底采用什么样的网站架构才能多快好省的把现有的单语言网站变成多语言版呢?这其中涉及到了几个因素:
- 多语言版本现有种类
- 网站的战略目标定位和经营策略对扩展各多语言版本的精度要求
- 网站可动用的开发人员及其技术水平
- 网站的日常维护资源现状
简单看下b2c开源的程序,像zencart
里面的处理是有个语言表 有语言ID language
比如1 是英语(en) 2是中文(gb)
在产品表中有产品描述表 也有个语言ID 在录入产品的时候录入两遍(不同的语言)
在前端通过URL参数判断?language=en或者gb
大致是这样的.语言包
根据浏览器来判断挂载哪个语言包
或者根据cookie session来确定一、通常实现方法有两种:1、采用多语言模板,通过程序渲染不同语言版本的模板。比如:简体版: 文件名.zh_CN.后缀繁体版: 文件名.zh_TW.后缀英文版: 文件名.en_US后缀优点:(1) 不同语言版本有各自的模板,维护量大,但维护简单。甚至不同版本的模板在显示风格上都可以不同。缺点:(1) 同一商业逻辑的页面,需要维护多套模板,有重复工作。2、采用同一模板,利用ResourceBundle配置多语言resource文件,实现网页上不同语言版本的显示。优点:(1) 同一商业逻辑的页面,只需要维护一套模板。缺点:(2) 模板的设计难度比较大,需要适应不同语言版本的需求。这个我们在实际工作中遇到过,有些显示英文字符没有问题的样式,在显示中文会出现问题,单个模板的维护难度比较大些。二、我们先了解一下基础知识,这些会在实际开发中会用到。1、 java.util.LocaleSystem.out.println(Locale.getDefault().toString());输出:zh_CN 表示语言_国家/地区常用的Locale为Locale.TRADITIONAL_CHINESE zh_TWLocale. SIMPLIFIED_CHINESE zh_CNLocale.US en_US2、 字符集我们常用的字符集:GBK, UTF-8, ISO8859-1。三、网页中如何实现多语言版本显示?1、 我们将网页的输出字符集采用UTF-8,即返回网页的http头为:Content-Type: text/html;charset=UTF-8这个就需要我们在返回网页内容时候,调用以下语句设置网页的字符集。
servletResponse.setCharacterEncoding(“UTF-8″)2、 网页GET/POST提交的时候采用UTF-8的方式。(1) GET方式:URL中的非ASCII采用UTF-8的方式编码,比如http://www.test.com/中国.html?keywords=中国页面显示的链接为:http://www.test.com/E4%B8%AD%E5%9B%BD.html?keywords=E4%B8%AD%E5%9B%BD(2) POST方式:如果网页的输出字符集为UTF-8,则POST提交的时候表单的数据也是采用UTF-8编码的。3、 在服务器端我们要设置服务器的字符集。如果是jboss服务器的话,则需设置tomcat的server.xml${jboss-home}\server\default\deploy\jbossweb-tomcat55.sar\server.xml<Connector port=”80″ address=”${jboss.bind.address}” maxThreads=”250″ strategy=”ms” maxHttpHeaderSize=”8192″ emptySessionPath=”true” enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ connectionTimeout=”20000″ disableUploadTimeout=”true” URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />4、 在应用程序,在调用HttpServletRequest.getParameters(),需要调用HttpServletRequest.setCharacterEncoding(“UTF-8″);5、 采用第一种方案:采用多语言模板。我们可以定义:Index_zh_CN.htmlIndex_zh_TW.htmlIndex_en_US.html我们可以通过不同的URL,或者用户的IP等信息,选择不同的模板进行渲染。6、 采用第二种方案:采用单一模板。通过不同语言版本的配置文件获得不同的多语言版本字符串。java.util.ResourceBundle提供的properties文件本身并很好的支持非ASCII的字符集,我们建议用户采用XMLResourceBundle,采用xml文件的方式定义配置文件。Xml文件本身可以很好的描述自己的编码格式。<?xml version=”1.0″ encoding=”UTF-8″?>。事实上,大多数人更青睐于母语交流,80%以上的世界用户更愿意购买用母语推荐的产品和服务。
1 多语言版本现有种类
网站多语言版化目前比较靠铺的有两种方法:
第 一种是暴力镜像法,即通过对原有语言版本的直接镜像拷贝而成,这种景象拷贝是基于网站整体结构上和数据上的,比如,网站本身是中文的,现在需要制作英语版 和德语版,那么就需要以中文版本的网站结构和数据为基础,翻译出英语版和德育版并最终确保所有URL链接的有效性。这种方法基本上就是靠人力资源,所以的 优点是语言翻译精确度比较高。缺点是日常维护更新比较非常繁琐,后期成本投入比较大。
第 二种是利用现有的语言翻译程序。目前做得比较不错的是 google翻译,在自己的网站上插入google的代码来实现。该种方法由于靠程序自动翻译,并且可以翻译成多国语言,翻译效果是对包括数据在内的页面 翻译,所以优点是成本小,见效快,基本不用日后人工维护,由于程序翻译有self learning的功能,所以从长远发展来看程序翻译的文章越多则翻译结果越准确。缺点是翻译精度不高,翻译结果相对不可控,对于网站的CSS技术要求比 较高。
2 网站的战略目标定位和经营策略
网 站的种类贺定为直接影响到对多语言版本的精度要求,比如:专业类的博客文章网站对于翻译要求比较高;一般性的B2C零售网站对于翻译要求比较低;网站消费 者定位如果年轻人和懂英文的人比较多,那么该网站对于英语翻译的精度相对低;如果网站面向老年人和英语程度不高者则对英语版的翻译精度要求就比较高。
3 网站可动用的开发人员及其技术水平
如 果网站经营者有自己的web开发团队并且CSS技术水平比较高的话,相对来说使用goole翻译就比较好,原因是goole把网站翻译成不同语言的时候, 由于不同语言的特性,翻译成的语句会有长有短,这时候,对于网站页面的CSS结构严谨性会很高,因为在页面结构不严谨的情况下,长语句会很容易把页面结构 撑开打乱。
4 网站的日常维护资源现状
有的网站经营者由于没有自己的web开发团队而把建站工作外包,而且日常维护要求低,运营和维护人员配置少,则建议在建站的时候用google翻译
对供给了多语言版本的网站来说,Unicode字符集应当是最幻想的选择。它是一种双字节编码机制的字符集,不管是东方文字还是西方文字,在 Unicode中一律用两个字节来表现,因而至少可以定义65536个不同的字符,几乎可以涵盖世界上目前所有通用的语言的每一种字符。 所以在设计和开发多语言网站时,必定要留心先把非中文页面的字符集定义为“utf-8”格局。
这一步非常重要,原因在于若等页面做好之后再更改字符集设置,可说是一件非常非常吃力不谄谀的工作,有时候甚至可能需要从头再来,重新输进网站的文字内容。
HTML中的META标签:
<META HTTP-EQUIV=“Content-Type” CONTENT=“text/html; CHARSET=字符集”>
不写,根据浏览器默认字符集显示
charset=gb2312 简体中文
charset=big5 繁体中文
charset=EUC_KR 韩语
charset=Shift_JIS 或 EUC_JP 日语
charset= KOI8-R / Windows-1251 俄语
charset=iso-8859-1 西欧语系(荷兰语,英语,法语,德语,意大利语,挪威语,葡萄牙语,瑞士语.等十八种语言)
charset=iso-8859-2 中欧语系
charset=iso-8859-5 斯拉夫语系(保加利亚语,Byelorussian语,马其顿语,俄语,塞尔维亚语,乌克兰语等)
charset=uft-8 unicode多语言
PHP与脚本引擎页码的概念 由于我们传统应用的内码像Big5,GB2312与unicode并不是逐一对应,故两者之间的转换要靠codepage(页码)来实现
<?php=Language=VBScript CodePage=xxx?>
不写,根据服务器端解析引擎默认代码页主动解析并返回浏览器。 假如制作的网页脚本与WEB服务真个默认代码页不同,则必需指明代码页:
codepage=936 简体中文
GBK codepage=950 繁体中文
BIG5 codepage=437 美国/加拿大英语
codepage=932 日文 codepage=949