你现在的位置:首页 > PHP网站建设知识库 > 多国语言网站建设 > 正文

网站多语言设计

有时候做网站的时候需要考虑多语言设计,比如外贸网站。即便是简体中文和繁体中文网站设计也不是简单的繁简转换就行的。

多语言网站面临的设计问题:

1、多语言语法问题

简体中文和繁体中文是现代汉语并存的两种书面形式。它们在语音、词汇、语法等方面都有明显差异,给大陆和港澳台地区的交流和沟通造成障碍。并不是简单的繁简对照替换就行的。如,繁体中文里的“家庭計划”对应简体中文中的“家庭的计划”和“计划生育”两个意义;简体中文中的“检讨”对应繁体中文的“检查”和“讨论”两个意义。后一个例子中的词语在理性意义和感情色彩都是不对应的。

即,繁简字存在字形转换模糊的不对称,更何况英语、法语、韩语….语法总归不是机器能解决的(至少目前不是)

2、数据库多语言

主要是录入信息的多语言化,涉及到数据库优化和数据库设计方面。对于不同架构、不同级别的网站系统设计也有不同之处。

3、页面多语言

这个,不解释,一般情况下都是用语言包解决此问题。不过,有些情况下,模板中div的宽度神马的都要考虑到语言包中对应的语句的长度,以免发生错位现象。

4、用户访问语言统一

用户初次访问时,判断用户语言环境,自动跳转…也不解释

解决方案:

1、简单:每个语言一个网站,还要注意分离用户系统

优点:简单解决。后顾无忧~

缺点:维护复杂,制作周期长~

2、简单的调用谷歌翻译整个页面

优点:简单、方便。

缺点:偶尔被墙、机器翻译总是有点语法用词不通顺

3、真正实现网站的多语言设计

优点:基本上解决以上所有问题

缺点:设计复杂,实现麻烦,有些情况下得不偿失

1、多语言语法问题解决:

这个,找专业翻译吧..不归你管

2、数据库多语言信息录入

01、简单实现:

1、比如,表中加lang字段,每条信息的lang字段不同的值,中文是zh-cn,英文是en

2、多一个语言版本表,用来存放语言版本,每个语言版本对应一个langid,添加信息的时候,信息表中的lang字段存放对应的langid,把lang字段设计成索引。其实跟上一种设计方法差不多。

3、每条信息对应一个分类(公告也可以分为多个分类嘛),比如:国内新闻(id=1)宝岛新闻(id=2)每个分类的信息表中有个字段lang,对应不同的语言,添加新闻信息的时候,分不同语言的分类添加信息,这样新闻信息表就不用lang字段区分不同语言的新闻了。用户访问的时候,不同语言的用户访问不同的分类,调用分类的时候区分开分类id就好了。嗯,分类有点多。不过这算是简单实现中最好的一种了吧

总结,此种方案适合小型系统,没什么鸭梨,网站全部静态化。缺点不好扩展~

02、一般实现:

1、继续优化设计(01、简单实现 中的 3 方法)。把不同语言的新闻信息分表储存,实现方法基本差不多。

总结:此方案适合中型应用。

03、复杂实现

1、同上设计方案,将不同语言信息分不同数据库存放。用户信息(账户、密码、语言界面)等单独存放。专门做一个用户系统,通过api和网站进行沟通。顺便实现同步登录神马的~嗯。不同语言相当于一个子站,组成一个站群。例如用户访问www.phpstudio.info,判断用户语言环境为zh-cn,接着跳转到cn.phpstudio.info。每个语言版本的子站,拥有不同的分类,不同的数据库,不同的界面等等.. 复杂度增加了。好处也是有的,不同的语言可以根据压力做分布式…嗯…思路上还需要再想想,完善下。

总结,好处是有的。缺点也是有的。不同情况不同分析吧。

2、更进一步就是在域名上做文章了,跳转就不用php做了。其他的么..再优化神马的~ = =你是要做类似雅虎那样的门户网站乜?每个国家一个网站..擦~压力山大!

3、页面多语言

1、php语言包+自定义lang()函数

比如一个网站的博客模块。

语言包存放位置:language/zh-cn/blog/tpl.lang.php

语言包中内容:return $lang = array(‘xxx’=>’{name}xxxxx,{age}xxxxxxxx’)

自定义函数lang($lang, $var=array())  $lang 语言key,$var 语言中的参数

调用的时候,lang(‘blog_tpl_xxx’,array(‘name’=>’t-chris’,'age’=>’21′));

最后结果:t-chrisxxxxx,21xxxxxxxx

关于错位情况,这个有时候可以把错位的地方的div神马的变宽点、变高点。不过可能会影响美观。

所以,最好是每种语言一套模板。这样保证了界面的统一性,用户体验也会爽点。

具体实现方法,此处省略1w字….

2、通过谷歌翻译。

有些情况下,你不愿意设计那么复杂的数据库,又是神马分表储存,又是神马分字段,分栏目….

“擦,分你妹啊分!还让程序员活不活?就那么几个程序员,整天改bug,改细节。累死人!程序不是你想改,想改就能改…..程序猿,你伤不起啊!!”

当当当当~~伟大的谷歌,它继承了“为人民服务”的光荣传统…现在,有谷歌翻译接口。

具体实现方法,请谷歌“translate API”神马的..记得查找中文,假如你英文不好的话…

【补充】 youtube就是利用的 谷歌API翻译内容.. 具体请翻墙

3、其他方法?

我没想到…

4、用户访问语言统一

获取浏览器的语言环境

$_SERVER['HTTP_ACCEPT_LANGUAGE']

js获取用户系统语言环境

<script type=”text/javascript”>
document.write(navigator.language);
document.write(navigator.systemLanguage);
document.write(navigator.browserLanguage);
</script>

通过ip判断

不解释~

还有其他….

获取之后,写cookie,写session.. 总之就是让用户访问其他页面的时候,网站语言能统一起来。