发布日期:2018-03-26
在PHP中检测浏览器语言+ 查看更多
在PHP中检测浏览器语言
+ 查看更多
发布日期:2018-03-26 11:27
分类:PHP
浏览次数:110
我使用下面的PHP脚本作为我的网站索引。
这个脚本应该包括一个取决于浏览器的语言(自动检测)特定的页面。
这个脚本并没有在所有的浏览器上很好的工作,所以它一检测到任何的语言总是会包含index_en.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;}?>
回答
你为什么不让它看起来简单干净?