好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在PHP中检测浏览器语言 关闭 返回上一级  

在PHP中检测浏览器语言
+ 查看更多

发布日期:2018-03-26 11:27
分类:PHP
浏览次数:100
我使用下面的PHP脚本作为我的网站索引。
这个脚本应该包括一个取决于浏览器的语言(自动检测)特定的页面。
这个脚本并没有在所有的浏览器上很好的工作,所以它一检测到任何的语言总是会包含index_en.php(问题的原因可能是一个接受没考虑到的语言头问题)。
你们能给我一个更给力的解决方案吗?
1 = second visit
// Detect language from user agent browserfunction lixlpixel_get_env_var($Var){
     if(empty($GLOBALS[$Var]))
     {
         $GLOBALS[$Var]=(!empty($GLOBALS['_SERVER'][$Var]))?
         $GLOBALS['_SERVER'][$Var] : (!empty($GLOBALS['HTTP_SERVER_VARS'][$Var])) ? $GLOBALS['HTTP_SERVER_VARS'][$Var]:'';
     }}
function lixlpixel_detect_lang(){
     // Detect HTTP_ACCEPT_LANGUAGE & HTTP_USER_AGENT.
     lixlpixel_get_env_var('HTTP_ACCEPT_LANGUAGE');
     lixlpixel_get_env_var('HTTP_USER_AGENT');

     $_AL=strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);
     $_UA=strtolower($GLOBALS['HTTP_USER_AGENT']);

     // Try to detect Primary language if several languages are accepted.
     foreach($GLOBALS['_LANG'] as $K)
     {
         if(strpos($_AL, $K)===0)
         return $K;
     }

     // Try to detect any language if not yet detected.
     foreach($GLOBALS['_LANG'] as $K)
     {
         if(strpos($_AL, $K)!==false)
         return $K;
     }
     foreach($GLOBALS['_LANG'] as $K)
     {
         //if(preg_match("/[[( ]{$K}[;,_-)]/",$_UA)) // matching other letters (create an error for seo spyder)
         return $K;
     }

     // Return default language if language is not yet detected.
     return $GLOBALS['_DLANG'];}
// Define default language.
$GLOBALS['_DLANG']='en';
// Define all available languages.// WARNING: uncomment all available languages

$GLOBALS['_LANG'] = array('af', // afrikaans.'ar', // arabic.'bg', // bulgarian.'ca', // catalan.'cs', // czech.'da', // danish.'de', // german.'el', // greek.'en', // english.'es', // spanish.'et', // estonian.'fi', // finnish.'fr', // french.'gl', // galician.'he', // hebrew.'hi', // hindi.'hr', // croatian.'hu', // hungarian.'id', // indonesian.'it', // italian.'ja', // japanese.'ko', // korean.'ka', // georgian.'lt', // lithuanian.'lv', // latvian.'ms', // malay.'nl', // dutch.'no', // norwegian.'pl', // polish.'pt', // portuguese.'ro', // romanian.'ru', // russian.'sk', // slovak.'sl', // slovenian.'sq', // albanian.'sr', // serbian.'sv', // swedish.'th', // thai.'tr', // turkish.'uk', // ukrainian.'zh' // chinese.);
// Redirect to the correct location.// Example Implementation aff var lang to name file/*
echo 'The Language detected is: '.lixlpixel_detect_lang(); // For Demonstration
echo "
";    
*/
$lang_var = lixlpixel_detect_lang(); //insert lang var system in a new var for conditional statement/*
echo "
";    

echo $lang_var; // print var for trace

echo "
";    
*/// Insert the right page iacoording with the language in the browserswitch ($lang_var){
    case "fr":
        //echo "PAGE DE";
        include("index_fr.php");//include check session DE
        break;
    case "it":
        //echo "PAGE IT";
        include("index_it.php");
        break;
    case "en":
        //echo "PAGE EN";
        include("index_en.php");
        break;        
    default:
        //echo "PAGE EN - Setting Default";
        include("index_en.php");//include EN in all other cases of different lang detection
        break;}?>

回答

你为什么不让它看起来简单干净?

上一篇怎么样增加PHP的最大执行时间?
解析错误:语法错误,我的PHP代码中出现意外的文件结束下一篇
下一篇解析错误:语法错误,我的PHP代码中出现意外的文件结束

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号