From: Philip Tzou Date: Sat, 23 May 2009 15:27:52 +0000 (+0000) Subject: Follow up on r49157 and r50902. Fixed the header parsing code to conform to RFC. X-Git-Tag: 1.31.0-rc.0~41675 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=8a461537a6bc5d9cfd23af023b187f3286a48c82;p=lhc%2Fweb%2Fwiklou.git Follow up on r49157 and r50902. Fixed the header parsing code to conform to RFC. --- diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index 746adb737d..13331868e7 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -185,12 +185,21 @@ class LanguageConverter { if( array_key_exists( 'HTTP_ACCEPT_LANGUAGE', $_SERVER ) ) { $acceptLanguage = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])); - // take the part of the string up to the first semicolon - if($semiPos = strpos( $acceptLanguage, ';' ) !== false ) - $acceptLanguage = substr( $acceptLanguage, 0, $semiPos ); - // explode by comma - $languages = explode(',', $acceptLanguage); + $result = explode(',', $acceptLanguage); + + $languages = array(); + + foreach( $result as $elem ) { + // if $elem likes 'zh-cn;q=0.9' + if(($posi = strpos( $elem, ';' )) !== false ) { + // get the real language code likes 'zh-cn' + $languages[] = substr( $elem, 0, $posi ); + } + else { + $languages[] = $elem; + } + } foreach( $languages as $language ) { // strip whitespace