多语言网站(如何实现网站的多语言版本?)

多语言网站(如何实现网站的多语言版本?)

近日,公司要做一个多语言的网站,今天在网上收集资料,下面是个人觉得很不错的文章,有兴趣的朋友可以参考下:

多语言网站,顾名思义就是能够以多种语言(而不是单种语言)为用户提供信息服务,让使用不同语言的用户都能够从同个网站获得内容相同的信息。


多语言网站实现方案

1

,静态:就是为每种语言分别准备一套页面文件,要么通过文件后缀名来区分不同语言,要么通过子目录来区分不同语言。


例如对于首页文件
index_en.htm
提供英语界面,
index_gb.htm
提供简体中文界面,
index_big.htm
提供繁体中文界面,或者是
en/index.htm
提供英语界面,
gb/index.htm
提供简体中文界面,
big/index.htm
提供繁体中文界面,一旦用户选择了需要的语言后,自动跳转到相应的页面,首页以下其他链接也是按照同样方式处理。从维护的角度来看,通过子目录比通过文件后缀名来区分不同语言版本显得要简单明了。

2

,动态:站点内所有页面文件都是动态页面文件(
PHP
,
ASP
等)而不是静态页面文件,在需要输出语言文字的地方统一采用语言变量来表示,这些语言变量可以根据用户选择不同的语言赋予不同的值,从而能够实现在不同的语言环境下输出不同的文字。


例如:语言变量
ln_name
,当用户选择的语言是英语时赋值为
“Name”
,当用户选择的语言是简体中文时赋值为
“
姓名
”
,这样就可以适应不同语言时的输出。


采用静态方式的优点是页面直接输出到客户端,不需要在服务器上运行,占用服务器的资源比较少,系统能够支持的并发连接数较多,缺点是要为每种语言制作一套页面文件,很多内容即使是和语言无关的也要分不同语言来存储,因此占用的存储空间较多。


采用动态方式和静态方式的优缺点正好相反,它的优点是动态页面文件只有一套,不同语言的文字使用语言变量来存储,和语言无关的内容只存储一份,占用的存储空间较少,并且扩展新语言比较容易,缺点需要在服务器上运行,然后把结果输入到客户端,占用服务器的资源比较多,系统能够支持的并发连接数较少。


动态数据存贮涉及的一些技术问题


由于现在网站上动态应用日益增多,相当多的网站还会使用文件或者数据库来存储应用信息,因此如果文件或者数据库中存储的内容与语言相关时,还需要特别注意。对于存储在数据库中信息,可以采取以下几种方式支持多语言:

1

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

2

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

3

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


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


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


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

1

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

2

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


一个定位于不同语言国家的企业网站势必需要提供多种语言版本的产品和销售信息来满足其世界各地使用不同语言的客户和合作伙伴,其中包括法语、德语、意大利语、葡萄牙语、西班牙语、阿拉伯语等等。但有一个问题却极易被网站设计者们所忽略。这就是网站的字符集设置问题。


一般我们使用的是简体中文
(GB2312)
字符集,而对多语言网站来说,中文字符集却可能会使你辛辛苦苦的努力功亏一篑。原因很简单:就是这个毫不起眼的小小字符集在作怪。


计算机应用领域中存在着几十种互不相同的字符集,而不同语言客户在浏览不同语言网页时,往往会因为相互间所使用字符集无法兼容而出现乱码情况。我们在浏览国外一些网站时,往往也会出现为了能正常地看到网站上的信息而不得不在各种字符集之间来回切换的情况。


试想一下:如果一个网站提供了中,英,法,德等多种语言版本的内容,内容全之又全,设计美仑美奂。我们在中文编码环境下浏览这些非中文版本的页面觉得非常完美,现在一个法国客户对你的产品发生了兴趣,当他进到法语版面一看
—
乱码多多,甚至可能整个版面都一塌里糊涂。你的网站再下大工夫又有什么意义呢
?

所以对提供了多语言版本的网站来说,
Unicode
字符集应该是最理想的选择。它是一种双字节编码机制的字符集,不管是东方文字还是西方文字,在
Unicode
中一律用两个字节来表示,因而至少可以定义
65536
个不同的字符,几乎可以涵盖世界上目前所有通用的语言的每一种字符。
所以在设计和开发多语言网站时,一定要注意先把非中文页面的字符集定义为
“utf-8”
格式。


这一步非常重要,原因在于若等页面做好之后再更改字符集设置,可说是一件非常非常吃力不讨好的工作,有时候甚至可能需要从头再来,重新输入网站的文字内容。

HTML

中的
META
标签:

字符集“>
不写,根据浏览器默认字符集显示

charset=gb2312

简体中文

charset=big5

繁体中文

charset=EUC_KR

韩语

charset=Shift_JIS

或
EUC_JP
日语

charset= KOI8-R / Windows-1251

俄语

charset=iso-8859-1

西欧语系(荷兰语
,
英语
,
法语
,
德语
,
意大利语
,
挪威语
,
葡萄牙语
,
瑞士语
.
等十八种语言)
http://www.microsoft.com/
charset=iso-8859-2

中欧语系

charset=iso-8859-5

斯拉夫语系(保加利亚语
,Byelorussian
语
,
马其顿语
,
俄语
,
塞尔维亚语
,
乌克兰语等)

charset=uft-8 unicode

多语言
ASP
与脚本引擎页码的概念


由于我们传统使用的内码像
Big5,GB2312
与
unicode
并不是一一对应
,
故两者之间的转换要靠
codepage(
页码
)
来实现

0

阅读

┊
评论

┊ 收藏

┊
转载


┊
喜欢
▼
┊
打印
┊
举报
已投稿到:

加载中,请稍候……
后一篇:
ps快捷键

  • 评论加载中,请稍候…

发评论

登录名:密码:找回密码 注册 记住登录状态

昵   称:

评论并转载此博文sg_trans.gif

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

后一篇 >
ps快捷键

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114134.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 为什么python读取不了文件_python系统找不到指定文件怎么办

    为什么python读取不了文件_python系统找不到指定文件怎么办1、现象系统提示找不到指定的文件:Errorrunning’hello’:Cannotrunprogram”B:\pystudy\venv\Scripts\python.exe”(indirectory”\python-study”):CreateProcesserror=2,系统找不到指定的文件。2、原因原来的工程目录(B盘)下,保存了python的编译环境,包括pyth…

    2022年8月27日
  • 阿里云服务器怎样开放端口

    阿里云服务器怎样开放端口1、登录阿里云官方2、进入控制台3、在控制台里点击产品与服务——云服务器ECS4、在云服务器ECS选项里点击网络和安全——安全组5、可以自己创建安全组,也可以现有的配置规则6、然后点击右上方的添加安全组规则7、填上端口号,允许的ip地址,点击确定就可以了端口例如:8001/8001授权对象:0.0.0.0/0…

    2022年9月26日
  • 大数加法运算 c语言_大数加法运算

    大数加法运算 c语言_大数加法运算前言:本篇博客将分为4到5篇来和大家一块讨论大数的加减乘除,然后再将运算做成一个大数运算库。其中除法较为棘手,但如果作完前三个运算后就没有什么难度了。虽然大多主流的编程语言如java,c++,都有大数运算库,可是c语言标准库并没有提供的大数运算,网上的c语言大数运算大多散而不周或过于复杂,所以本人决定写博客做一些简单的介绍,由于本人水平有限,如有错误或者bug请大家批评指正我会第一时间更正。开发

    2022年10月7日
  • 互联网测试面试题及答案(软件测试面试题及答案2019)

    很多软件测试工程师在面试互联网企业的时候都会遇到考官给的几道面试题,这也反应了测试工程师对企业的重要性,今天传智播客整理了一份2019年的互联网企业软件测试面试题,希望能帮助到大家。2019年互联网企业软件测试面试题(常考)1、什么是兼容性测试?答:兼容性测试是检查软件在不同软件平台,硬件平台上是否可以正常运行的测试。主要查看软件在不同操作系统、浏览器、数据库中运行是否正常。2、你能不能…

    2022年4月13日
  • 小程序中的视频下载「建议收藏」

    小程序中的视频下载「建议收藏」一个朋友问我他看到小程序中有一个视频,但是他不知道如何下载下来,我在手机上面打开想直接下载发现还真没有可以直接下载的按钮,然后研究得出大概思路如下,在电脑中打开小程序,然后使用wireshark转包工具抓取数据分析获视频下载地址,通过下载地址下载视频。使用工具:Wireshark3.2.2第一步:打开Wireshark启动监听网卡。(注意如果是多张网卡包括虚拟网卡…

    2022年5月30日
  • PLSQL注册码

    PLSQL注册码进入帮助->注册,输入:产品编号:kfsvzt6zh2exaxzxgjk44rv5kp2yp68vgk序列号:186220口令:xs374ca直接获得9999-12-31,美滋滋

    2022年7月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号