%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/extensions/CirrusSearch/includes/LanguageDetector/ |
Current File : /www/varak.net/wiki.varak.net/extensions/CirrusSearch/includes/LanguageDetector/HttpAccept.php |
<?php namespace CirrusSearch\LanguageDetector; use CirrusSearch; /** * Try to detect language via Accept-Language header. Takes the * first accept-language that is not the current content language. */ class HttpAccept implements Detector { /** * Current wiki language * @var string */ protected $wikiLang; /** * Current HTTP languages * @var array */ protected $httpLang; public function __construct() { $this->wikiLang = $GLOBALS['wgContLang']->getCode(); $this->httpLang = array_keys( $GLOBALS['wgRequest']->getAcceptLang() ); } /** * Detect language * * @param CirrusSearch $cirrus Searching class * @param string $text Text to detect language * @return string|null Preferred language, or null if none found */ public function detect( CirrusSearch $cirrus, $text ) { foreach ( $this->httpLang as $lang ) { if ( $lang == '*' ) { continue; } list( $shortLang ) = explode( "-", $lang, 2 ); if ( $shortLang !== $this->wikiLang ) { // return only the primary-tag, stripping the subtag // so the language to wiki map doesn't need all // possible combinations (quite a few). return $shortLang; } } return null; } }