From 8a461537a6bc5d9cfd23af023b187f3286a48c82 Mon Sep 17 00:00:00 2001 From: Philip Tzou Date: Sat, 23 May 2009 15:27:52 +0000 Subject: [PATCH] Follow up on r49157 and r50902. Fixed the header parsing code to conform to RFC. --- languages/LanguageConverter.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) 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 -- 2.20.1