downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ob_deflatehandler> <http_negotiate_content_type
Last updated: Fri, 27 Nov 2009

view this page in

http_negotiate_language

(PECL pecl_http >= 0.1.0)

http_negotiate_languageİstemcinin tercih ettiği dille uzlaşır

Açıklama

string http_negotiate_language ( array $destekli [, array &$sonuç ] )

Bu işlev, Accept-Language HTTP başlığına dayanarak istemcinin tercih ettiği dilde uzlaşır. Niteleyiciler tanınır ve niteleyicisiz diller en yüksek dereceye ayarlanır. Kısmi eşleşmelerde (örneğin, birincil dille eşleşme) niteleyici %10 düşürülür.

Değiştirgeler

destekli

Desteklenen dilleri değer olarak içeren dizi.

sonuç

Uzlaşım sonuçlarını içeren diziyle doldurulur.

Dönen Değerler

Uzlaşılan dille veya eşleşme sağlanamazsa öntanımlı dille (ilk dizi girdisi) döner.

Örnekler

Örnek 1 - http_negotiate_language() kullanımı

<?php
$diller 
= array(
        
'en-US',// öntanımlı
        
'fr',
        
'fr-FR',
        
'de',
        
'de-DE',
        
'de-AT',
        
'tr-TR',
);

include 
'./diller/'http_negotiate_language($diller$sonuç) .'.php';

print_r($sonuç);
?>



ob_deflatehandler> <http_negotiate_content_type
Last updated: Fri, 27 Nov 2009
 
add a note add a note User Contributed Notes
http_negotiate_language
sh1nto at eveni dot de
09-Mar-2009 06:49
There is an typo in your function.

You should replace $languageprefix by $langprefix.

Thanks very much for that function!
Anonymous
03-Nov-2008 11:23
as I don't have this function available I tried to write it myself. Maybe useful for someone else, too.

<?php
/*
  determine which language out of an available set the user prefers most
 
  $available_languages        array with language-tag-strings (must be lowercase) that are available
  $http_accept_language    a HTTP_ACCEPT_LANGUAGE string (read from $_SERVER['HTTP_ACCEPT_LANGUAGE'] if left out)
*/
function prefered_language ($available_languages,$http_accept_language="auto") {
   
// if $http_accept_language was left out, read it from the HTTP-Header
   
if ($http_accept_language == "auto") $http_accept_language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];

   
// standard  for HTTP_ACCEPT_LANGUAGE is defined under
    // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4
    // pattern to find is therefore something like this:
    //    1#( language-range [ ";" "q" "=" qvalue ] )
    // where:
    //    language-range  = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
    //    qvalue         = ( "0" [ "." 0*3DIGIT ] )
    //            | ( "1" [ "." 0*3("0") ] )
   
preg_match_all("/([[:alpha:]]{1,8})(-([[:alpha:]|-]{1,8}))?" .
                  
"(\s*;\s*q\s*=\s*(1\.0{0,3}|0\.\d{0,3}))?\s*(,|$)/i",
                  
$http_accept_language, $hits, PREG_SET_ORDER);

   
// default language (in case of no hits) is the first in the array
   
$bestlang = $available_languages[0];
   
$bestqval = 0;

    foreach (
$hits as $arr) {
       
// read data from the array of this hit
       
$langprefix = strtolower ($arr[1]);
        if (!empty(
$arr[3])) {
           
$langrange = strtolower ($arr[3]);
           
$language = $langprefix . "-" . $langrange;
        }
        else
$language = $langprefix;
       
$qvalue = 1.0;
        if (!empty(
$arr[5])) $qvalue = floatval($arr[5]);
     
       
// find q-maximal language 
       
if (in_array($language,$available_languages) && ($qvalue > $bestqval)) {
           
$bestlang = $language;
           
$bestqval = $qvalue;
        }
       
// if no direct hit, try the prefix only but decrease q-value by 10% (as http_negotiate_language does)
       
else if (in_array($languageprefix,$available_languages) && (($qvalue*0.9) > $bestqval)) {
           
$bestlang = $languageprefix;
           
$bestqval = $qvalue*0.9;
        }
    }
    return
$bestlang;
}
?>
galosa at netinform dot hu
09-Jul-2007 09:56
See a list of the available language codes here:
http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

ob_deflatehandler> <http_negotiate_content_type
Last updated: Fri, 27 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites