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;
}
예제 #2
0
 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;
 }