介绍一个PHP 多国语框架 v5.1:https://lang-php.com/?lang=zh-CN

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

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

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.gookang.com,判断用户语言环境为zh-cn,接着跳转到cn.gookang.com。每个语言版本的子站,拥有不同的分类,不同的数据库,不同的界面等等.. 复杂度增加了。好处也是有的,不同的语言可以根据压力做分布式…嗯…思路上还需要再想想,完善下。

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

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.. 总之就是让用户访问其他页面的时候,网站语言能统一起来。

网站多语言设计的一些思路。框架实现多国语言。相关推荐

  1. c语言设计实验报告答案,武汉理工大学《C语言程序设计》实验报告答案

    武汉理工大学<C语言程序设计>实验报告答案 注:在Visual C++ 6.0编译环境中亲自调试通过,但不保证在Turbo C中通过. 实验二 选择结构的程序设计 (题目当初没抄下来,这是 ...

  2. 全国计算机等级考试c语言设计题,全国计算机等级考试 《C语言程序设计》习题.doc...

    全国计算机等级考试 <C语言程序设计>习题 PAGE PAGE 1 <C语言程序设计>习题 第1章习题 一.单项选择题 1.C语言程序的执行,总是起始于[ ]. A) 程序中的 ...

  3. 药品药店管理系统c语言设计,java毕业设计_springboot框架的药店药品货架管理系统...

    这是一个基于java的毕业设计项目,毕设课题为springboot框架的药店药品货架管理系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+ ...

  4. c语言设计底层,【学习小总结】C语言的底层开发

    [学习小总结]C语言的底层开发 (2011-05-04 20:46:15) 标签: 底层开发 杂谈 程序设计可以根据开发的对象的不同,可以分低级程序设计和高级程序设计.既然,有人把高级程序设计概括成& ...

  5. 用c语言设计红绿灯程序,[转载]51单片机用C语言实现交通灯(红绿灯)源程

    51单片机用C语言实现交通灯(红绿灯)源程序 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改. 源程序如下: #include bit red,green,yellow ...

  6. c语言求大数阶乘思路,大数阶乘的c语言算法心得

    由于大数阶乘的位数超出了int的表示范围,我们只能用一个数组来放置它,那么首先确定结果数组的大小,这个可以根据阶乘位数的计算公式来计算,这里有个关键点,在定义数组的时候可以先给出一个指针,在原则上指针 ...

  7. 华理c语言设计网上作业,2011华理《c语言实验报告》.docx

    C程序设计课程实验报告册 所在学院 班 级 学 号 姓 名 任课教师 <C语言程序设计>实 验报告(1 ) 学号:姓名:班级:成绩: 实验名称:函数综合实验 实验地点: 所使用的工具软件及 ...

  8. C语言设计流水灯程序,花式流水灯c语言程序.pdf

    /*************************************************************/ /* [类型]流水灯各种用法 */ /* [现象]流水灯按各种不同样式闪 ...

  9. c语言设计奥运奖牌管理系统,求一个用C语言编程的奥运奖牌管理系统

    匿名用户 1级 2008-08-12 回答 首先声明20 分不多哦. struct jp{ char country[30]; int medal[3];//下标0表示金牌,1表示银牌,2表示铜牌 } ...

最新文章

  1. nvm npm不是内部命令_npm作弊表-最常见的命令和nvm
  2. slack 国内 android,使用Slack Api登录,Android
  3. linux——rpm的详细说明
  4. gateway sentinel 熔断 不起作用_Sentinel 的一些概念与核心类介绍
  5. php语言冒泡法,冒泡排序法(php)
  6. 关于年会抢红包游戏的一个思考
  7. 2019年文章精选,分类整理,顺带聊几句时间观念
  8. log4net根据日志类型写入到不同的文件中
  9. JAVA输出希腊union_Java Geometry.union方法代码示例
  10. 心语收集11:我们可以经得起心脏的千疮百孔,可以接受感情的支离破碎,却不愿喝下忘情水,忘记那曾经爱过的人。...
  11. javascript面试题(一)
  12. java中映射getproperty,PropertyUtils.getProperty和PropertyUtils.setProperty的用法详解
  13. crontrigger java_Java触发器CronTrigger
  14. 运动无线耳机推荐,六款运动爱好者必备的耳机
  15. 4.19 C语言练习(已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中)
  16. u盘iso安装服务器系统怎么安装win7系统安装系统教程,u盘iso安装系统,小编教你u盘怎么安装win7系统...
  17. 树莓派4b常用资料汇总
  18. 【苹果推iMessage】软件安装命令打开工程: open ios/AwesomeProject.xcodeproj
  19. 各类软件马斯洛需求层次分析_需求的分析层次
  20. 合宙Air101 的LCD怎么用Arudino IDE驱动

热门文章

  1. 解决电脑自带office删除之后不能下载或者找到正版office的问题
  2. 【K8S系列】第十三讲:Ingress详解
  3. 2021年全球溶剂石脑油收入大约9212.2百万美元,预计2028年达到12140百万美元
  4. ubuntu opencv安装教程
  5. 辉煌优配|影视股集体走高,光线传媒一度“20cm”涨停
  6. 赛尔新概念匡鹏:对每年三千万大学生市场的分析
  7. 列控安全计算机,一种高铁列控安全计算机的架构以及主备切换方法专利_专利查询 - 天眼查...
  8. 【AIGC】Visual ChatGPT 视觉模型深度解析
  9. CBA 总决赛激战正酣,线上观赛体验如何保证?
  10. 逐行扫描\隔行扫描\上场优先\下场优先的概念