php制作中英文两版网站比较方便的思路


需要制作一个中英文两版的企业网站,主要是没什么思路,后台该有什么特殊设计呀,前台切换什么事的,有谁做过那吗,希望给点参考意见


如果企业能保证每发布一个新的文章/页面之类的,都会同步发布中英两个页面的话可以考虑使用框架/语言包实现。如果不能保证,就按照两个独立的网站分别来做。


用drupal做,这是你不需要考虑的。本来多语言没必要造轮子,都已经有成熟的实现产品。怎么翻译到前台这个不难实现,但怎么管理与录入翻译,这就是个麻烦的问题。


一、数据库

站点信息表, 栏目表,内容表 都增加个lang字段记录语种

二、后台处理

根据登陆时选择的语种 对应去数据库调取内容进行管理

三、后台界面和前台界面

方案1:模版中非后台录入的信息使用语言包,css样式按语言分。

方案2:直接使用不同的模版和样式


如果用框架很简单,因为现在几乎所有框架都会支持这个的。如果框架请看框架的文档。
这里讲非框架
其实原理都是一样的,首先要做各个语言的库,也就是吧页面所有涉及到文本文字的部分都提出来,在这两个文件中,采用如下的方式

//中文
$lan=array(
    'tishi'=>'提示',
    'jinggao'=>'警告',
    'title'=>'标题',
);


//以下是英文的配置文件信息
$lan=array(
    'tishi'=>'prompt',
    'jinggao'=>'warning',
    'title'=>'title',
);

通过浏览器头部信息来判断对方的语言是中文还是英文

Accept-Language:zh-CN,zh;q=0.8

如果请求头部信息中有zh-cn则代表对方是中文系统,则自动加载中文的配置文件信息,否则加载英文

如果对方手动切换,则用cookie标识,下次判断cookie,根据cookie中表示中英文的字段来自动显示中文英文

模板中的处理

<html>
<head>
<title><?php  echo $lan['title'];  ?></title>
</head>
<body>
<?php  echo $lan['jinggao'];  ?>
</body>
</html>

这样就做到双语网站了


看具体啥需求了。如果就普通的小公司网站,就那么10来个页面,变化不多平时也不怎么更新的话,我肯定就偷懒直接做两版页面了。 :D

否则就麻烦点,把切换语言的部分(包括某些图片)都用JS来动态改变输出。COOKIE记录当前语言,打开网页时候JS判断COOKIE,然后做相应的内容输出绑定。不同的语言内容是从后台接口中读取。


用的最多的方法,语言包


通过cookie把语言类型给保存下来(只要是能获取到想要切换的语言类型都可以),然后调取不同的语言包


搜索引擎收录

首先,对于语言的切换,尽量避免使用cookie或前端js进行控制。应使用域名或请求路径的参数进行对语言的控制。原因参见https://support.google.com/we...

前端设计

一般来讲都会做自动语言识别,但一定要做一个可以切换语言的按钮,以避免英文操作系统的中文用户无法访问你的中文页面的类似问题

翻译

多语言的存储,国际上最多使用的方案是gettext,你的网页框架可以使用这个方式开发。也可自己设计翻译方案。


先声明,我是菜鸟。
之前的一个企业站,使用了双语言。思路就是在资源文件目录,或者配置文件目录建立语言包目录。包含en.php和zh.php的语言配置包,主要是return数组变量。所有前端展示层全部使用变量调用语言包配置,然后菜单栏有一个中英切换的按钮,切换功能是创建一个全局变量,存放session或者redis.(如果你有访问cookie的唯一code在数据库,也可以绑定起来,下次访问时直接给他喜好语言)。根据这个全局变量加载不同的语言包就可以了。
以上仅供参考。



相关阅读:
使用iconfont在线使用时,出现多个空格,求解答
使用pjax的时候直接跳转到页面了,不能替换页面中的某个div
gdb都能调试什么类型的文件?
这种在App加载页面前的显示是什么技术或者框架?
boostrap-table可以接收string类型吗
访客能够通过猜测的方式伪造出一个正确的session id并进行不好的行为吗?
react中const {dispatch} = this.props;
tomcat配置问题
vue-router如何将接口返回的数据传给组件初始化
为什么我的程序跑的很慢?
刚入门PHP,是否有必要学习JAVA
JS prototype原型问题
关于移动端localstorage 手机浏览器无效果
PHP中的$_REQUEST和$_POST|$_GET有什么区别??
react这个错是什么意思,要怎么解决
.htaccess 文件导致的自动加载问题
百度数据图谱的插件
用angularjs怎么获取到data对象里的HeWeather data service 3.0对象里的数据?
router-link 阻止默认的点击事件么?
点击按钮的跳转ui-sref后进入的页面报错,是什么原因呢?



快速导航

Copyright © 2016 phpStudy |