多语言国际化实施
WEB页面
Web页面多语言实现
1, 静态多语言实现:就是为每种语言分别准备一套页面文件,要么通过文件名来区分不同语言,要么通过子目录来区分不同语言。

例如对于首页文件index_en.jsp提供英语界面,index_gb.jsp提供简体中文界面,index_big.jsp提供繁体中文界面,或者是 en/index.jsp提供英语界面,gb/index.jsp提供简体中文界面,big/index.jsp提供繁体中文界面,一旦用户选择了需要的语言后,自动跳转到相应的页面,首页以下其他链接也是按照同样方式处理。从维护的角度来看,通过子目录比通过文件后缀名来区分不同语言版本显得要简单明了。
2, 动态多语言实现:站点内所有语言统一使用一套文件,而不是多套页面文件,在需要输出语言文字的地方统一采用语言变量来表示,这些语言变量可以根据用户选择不同的语言赋
予不同的值,从而能够实现在不同的语言环境下输出不同的文字。

例如:语言变量ln_name,当用户选择的语言是英语时赋值为“Name”,当用户选择的语言是简体中文时赋值为“姓名”,这样就可以适应不同语言时的输出。
比较
采用静态方式的优点是页面显示时的输出,在语言部分基本不耗费服务器资源,缺点是要为每种语言制作一套页面文件,很多内容即使是和语言无关的也要分不同语言来存储,因此占用的存储空间较多。

采用动态方式和静态方式的优缺点正好相反,它的优点是动态多语言文件只有一套,不同语言的文字使用语言变量来存储,和语言无关的内容只存储一份,占用的存储空间较少,并且扩展新语言比较容易,缺点是需要在服务器占用较多的内存和cup资源解析语言输出,然后把结果输入到客户端,占用服务器的资源比较多。
Jsp中这样设置:
  <%@ page contentType="text/html;charset=UTF8"%>
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 西欧语系(荷兰语,英语,法语,德语,意大利语,挪威语,葡萄牙语,瑞士语.等十八种语言)www.microsoft/
charset=iso-8859-2 中欧语系
charset=iso-8859-5 斯拉夫语系(保加利亚语,Byelorussian语,马其顿语,俄语,塞尔维亚语,乌克兰语等)
charset=uft-8 unicode多语言
Java 语言编码
Java编译器在对源文件编译前,会先把源文件转换为unicode编码,因为这个原因,我们在编译时一定要把源文件用的是什么编码方式正确无误的告诉编译器。
 
  例如:我们的源文件是以UTF-8的方式保存的,而在编译时编译器却把它当作是用GBK方式保存的,这样编译器就会按照GBK->Unicode的编码转换方法对源文件进行转换,然后再编译,这样当然会出错,实际上编译器应当按照UTF-8->Unicode的编码转换方法来对源文件进行转换。
 
  对于控制台程序,编译器会把源文件看作是由系统默认的编码类型来编码的(系统默认的编码类型取决于在控制面板区域设置里的配置,中文win2k下通常是GBK),也可以使用-encoding参数来设置,如:javac -encoding UTF-8,这样编译器就会把源文件看作是用UTF-8编码的(weblogic管理页面这只是告诉编译器源文件的编码类型,而不是对源文件转码)。在各种语言的平台上只要在编译用时-encoding指定与源文件的编码相同的编码方式,就不会存在国际化的问题了。
    在eclipse里只要指定编辑环境的编码类型为UTF-8即可。
数据库的多语言
多语言动态数据存贮涉及的一些技术问题

文件或者数据库中存储的内容与语言相关时,需要特别注意。对于存储在数据库中信息,可以采取以下几种方式支持多语言:

1,在数据库级别支持多语言:为每种语言建立独立的数据库,不同语言的用户操作不同的数据库。

2,在表级别支持多语言:为每种语言建立独立的表,不同语言的用户操作不同的表,但是它们在同一个数据库中。

3,在字段级别支持多语言:在同一个表中为每种语言建立独立的字段,不同语言的用户操
作不同的字段,它们在同一个表中。

由于数据库中有大量的信息(如标志,编码,数字等)是用于内部处理使用的,与语言无关的,因此在数据库级别支持多语言会导致空间的极大浪费,在字段级别支持多语言最大的问题是一旦需要支持新的语言,由于需要修改表结构,维护起来非常麻烦,可扩展性不好。

相比之下,在表级别支持多语言比较好,因为并不是所有的表都需要支持多语言,对于与语言无关的表,不同语言的用户共用一套,那些和语言相关的表根据支持语言的种类来建立,不同语言的用户存取访问不同的表格。这样使得维护简单,节省了存储空间,即使是扩展起来也比较方便,只要把需要支持多语言的表,多建立一套即可。

还需要注意的问题是:有些表中某些字段是不同语言版本的表共享的(例如库存量),由于各种语言的表之间的相对独立性,使得数据共享有些困难。解决的方法有两个:

1,不同语言的表的共享字段同步:也就是说,只要修改了其中一个表的共享字段,其他语言表中该字段也作相应改变,实际上当不同语言的用户同时访问时处理还是比较麻烦的,并且扩充新语言时修改工作比较大。

2,增加一个新的表:把所有语言共享的字段(例如货物编号,产地编码等)全部放在这个表,支持多语言的表只存放与各种语言相关的字段。不同语言的用户在使用数据库时,需要操作两个数据表。
比较而言,第二种方法比较简单,并且效率比较高,维护也比较方便。

体育多语言建议实施方案
对于体育多语言的改版方面:
不论使用那种架构或框架,选择时必须考虑其是否是UTF-8编码的,是否支持UTF-8的数据交互,或者通过某种方式处理后可以支持utf-8。
1. 在数据库的多语言支持上,归纳与语言无关的表和信息,对需要在不同语言中共享的字段以表的方式统一管理。对有些表的id序列归纳后在数据库中建立序列管理,对不同语言的相关表可以使用同一个序列,
2. 对于一些需要作数据统计的表重新设计,使之在大数据量、频繁访问时能保证响应的速度。
3. 在web页面的多语言上使用语言变量,系统自动根据用户的选择显示对应的语言,在开发上保证所有动态页面都是UTF-8编码,并且在页面里注明<%@ page contentType="text/html;charset=UTF8"%> html里注明<META HTTP-EQUIV=“Content-Type” CONTENT=“text/html; CHARSET= uft-8 ">
4. 对于语言字典的存储建议采用XML文件保存,以英文为主题语言,如出现个别没有对应语言翻译的语言变量,则自动采用英文代替。
5. Java代码的编辑生成上也必须保证是UTF-8
6. 在中间件如weblogic的选择和配置上,也需要能够支持utf-8。
7. 把和语言相关的表统一管理,不同语言以表名区分,如table_eng、table_zhc、table_jps等,代码里使用表名变量编辑sql。
8. 在新语言的增加上要做到只需要更改配置文件l、增加语言字典xml文件、建立新语言的对应表。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。