网站自适应全球语言


实现的效果:

网站自适应全球语言

代码:

一、php,获取客户端的语言设置,如果没有$_COOKIE和$_GET['lang']就通过$_SERVER['HTTP_ACCEPT_LANGUAGE'])自动适应。

if(isset($_GET['lang']) and in_array($_GET['lang'], array('zh','cht','en','ja','ko','es','ru','ar','fr','hi','pt','de'))){

define('NOW_LANG',$_GET['lang']);

setcookie('lang', $_GET['lang'], NOW_TIME + 3153600,'/',domain);

} else{

if(isset($_COOKIE['lang']) and in_array($_COOKIE['lang'], array('zh','cht','en','ja','ko','es','ru','ar','fr','hi','pt','de'))){

define('NOW_LANG',$_COOKIE['lang']);

}else{

if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) and preg_match('/^([a-z-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches)){

$lang = strtolower($matches[1]);

switch ($lang) {

case 'zh-hk':

case 'zh-mo':

case 'zh-sg':

case 'zh-tw':

case 'zh-cht':

define('NOW_LANG','cht');

setcookie('lang', 'cht', NOW_TIME + 3153600,'/',domain);

break;

case 'en':

define('NOW_LANG','en');

setcookie('lang', 'en', NOW_TIME + 3153600,'/',domain);

break;

case 'jp':

define('NOW_LANG','en');

setcookie('lang', 'en', NOW_TIME + 3153600,'/',domain);

break;

default:

define('NOW_LANG','zh');

setcookie('lang', 'zh', NOW_TIME + 3153600,'/',domain);

break;

}}else{

define('NOW_LANG','zh');

}}}

二、自动翻译代码。

function fy_true($query,$from='zh',$to=NOW_LANG)
{
global $mk;static $ossClient='';$query=trim($query);
if($from==$to or $query==''){return $query;}
$md5=md5($from.'_'.$to.'_'.$query);$sha1=sha1($from.'_'.$to.'_'.$query);
if(!$ossClient){$ossClient=require INDEX_PATH.'oss/samples/Common.php';}
$doesExist=$ossClient->doesObjectExist('huaren-hk','fy/'.substr($md5,0,3).'/'.$sha1);
if($doesExist){return $ossClient->getObject('huaren-hk','fy/'.substr($md5,0,3).'/'.$sha1);
}
if(($from=='zh' and $to=='cht')or($to=='zh' and $from=='cht')){$query2=$GLOBALS['mk']->convert($query,$to);}
else{$query2=trim(translate2($query,$to));}
if($query2){$ossClient->putObject('huaren-hk','fy/'.substr($md5,0,3).'/'.$sha1,$query2);
return $query2;}
return $query;}

简繁体采用$GLOBALS['mk']->convert 

其它的采用translate2 调用googleAPI 

缓存采用阿里云oss!$ossClient->doesObjectExist 

三、模版{lag 历史上的今天} 

实现:先对模版根据不同的语言进行编译,缓存后进行显示。这样的会翻译只要请求一次就够了!

相关阅读 >>

javascript与PHP的区别是什么

举例说明js调用PHPPHP调用js的方法

jquery 遍历parent()方法

js 深拷贝的三种实现方式

使用PHP和html5 formdata实现无刷新文件上传

html5+javascript进行邮箱地址验证

css中id选择器和class选择器有何不同

网页设计css样式代码大全,快来收藏吧!

html5+PHP如何实现文件拖动上传功能

frameset 标签的用法?

更多相关阅读请进入《PHP》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...