function shGetParamUserLanguage() { $shortCode = Sh404sefFactory::getPageInfo()->shMosConfig_shortcode; if (!shIsMultilingual()) return $shortCode; $database =& JFactory::getDBO(); // check if param query has previously been processed $determitLanguage = 1; $newVisitorAction = "browser"; if ($newVisitorAction=="browser" && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) { // no language chooses - assume from browser configuration // language negotiation by Kochin Chang, June 16, 2004 // retrieve active languages from database $active_lang = null; $activeLanguages = shGetActiveLanguages(); if( count( $activeLanguages ) == 0 ) { return $shortCode; } foreach ($activeLanguages as $lang) { $active_lang[] = $lang->iso; } // figure out which language to use $browserLang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach( $browserLang as $lang ) { $shortLang = JString::substr( $lang, 0, 2 ); if( in_array($lang, $active_lang) ) { $client_lang = $lang; break; } if ( in_array($shortLang, $active_lang) ) { $client_lang = $shortLang; break; } } // if language is still blank then use first active language! if (empty($client_lang)) { $client_lang = shGetDefaultLanguageSef(); } } elseif ($newVisitorAction=="joomfish"){ // This list is ordered already! $activeLanguages = shGetActiveLanguages(); if( count( $activeLanguages ) == 0 ) { return $shortCode; } else { $client_lang = shGetDefaultLanguageSef(); } } else {// otherwise default use site default language $activeLanguages = shGetActiveLanguages(); if( count( $activeLanguages ) == 0 ) { return $shortCode; } foreach ($activeLanguages as $lang) { if ($lang->code == Sh404sefFactory::getPageInfo()->shMosConfig_locale){ $client_lang = $lang->iso; break; } } // if language is still blank then use first active language! if ($client_lang==""){ $client_lang = shGetDefaultLanguageSef(); } } return $client_lang; }
protected function _prepareLink($menuItem, $forceLanguage = null) { $link = shSetURLVar($menuItem->link, 'Itemid', $menuItem->id); $linkLang = shGetURLLang($link); if (empty($linkLang)) { // if no language in link, use current, except if 'All', in which case use actual default if (empty($forceLanguage)) { $itemLanguage = $menuItem->language == '*' ? shGetDefaultLanguageSef() : shGetIsoCodeFromName($menuItem->language); } else { $itemLanguage = $forceLanguage; } $link = shSetUrlVar($link, 'lang', $itemLanguage); } return $link; }