function qtranxf_external_host($host) { $homeinfo = qtranxf_get_home_info(); return qtranxf_external_host_ex($host, $homeinfo); }
function qtranxf_get_url_for_language($url, $lang, $showLanguage = true) { global $q_config; static $url_cache = array(); //qtranxf_dbg_log('qtranxf_get_url_for_language: $url_cache:',$url_cache); if (!isset($url_cache[$url])) { $url_cache[$url] = array(); } $urlinfo =& $url_cache[$url]; //$urlinfo = apply_filters('qtranslate_url_for_language_pre', $urlinfo, $url, $lang, $showLanguage); if ($showLanguage) { if (isset($urlinfo[$lang])) { //qtranxf_dbg_log('qtranxf_get_url_for_language: cached: lang='.$lang.': ',$urlinfo); return $urlinfo[$lang]; } } else { if (isset($urlinfo['bare'])) { //qtranxf_dbg_log('qtranxf_get_url_for_language: cached: bare: ',$urlinfo); return $urlinfo['bare']; } } if (isset($urlinfo['language_neutral'])) { //qtranxf_dbg_log('qtranxf_get_url_for_language: cached: language_neutral: ',$urlinfo); return $urlinfo['language_neutral']; } $homeinfo = qtranxf_get_home_info(); if (!isset($urlinfo['url_parsed'])) { if (empty($url)) { $urlinfo = qtranxf_copy_url_info($q_config['url_info']); if (isset($urlinfo['wp-path']) && qtranxf_language_neutral_path($urlinfo['wp-path'])) { //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: wp-path: url='.$url.':',$urlinfo); $complete = qtranxf_buildURL($urlinfo, $homeinfo); if (!isset($url_cache[$complete])) { $url_cache[$complete] = $urlinfo; } $urlinfo['language_neutral'] = $complete; return $complete; } } else { $urlinfo = qtranxf_get_url_info($url); // check if it's an external link if (!isset($urlinfo['wp-path'])) { $urlinfo['language_neutral'] = $url; //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: external path: ',$urlinfo); return $url; } if (empty($urlinfo['host'])) { if (empty($urlinfo['wp-path'])) { if (empty($urlinfo['query'])) { $urlinfo['language_neutral'] = $url; //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: relative path: ',$urlinfo); return $url; } } else { switch ($urlinfo['wp-path'][0]) { case '/': break; case '#': $urlinfo['language_neutral'] = $url; //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: relative hash: ',$urlinfo); return $url; default: $urlinfo['wp-path'] = trailingslashit($q_config['url_info']['wp-path']) . $urlinfo['wp-path']; break; } } } elseif (qtranxf_external_host_ex($urlinfo['host'], $homeinfo)) { $urlinfo['language_neutral'] = $url; //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: external host: ',$urlinfo); return $url; } if (qtranxf_language_neutral_path($urlinfo['wp-path'])) { $urlinfo['language_neutral'] = $url; //qtranxf_dbg_log('qtranxf_get_url_for_language: language_neutral: wp-path: ',$urlinfo); return $url; } qtranxf_url_del_language($urlinfo); } $urlinfo['url_parsed'] = $url; } $urlinfo_lang = qtranxf_url_set_language($urlinfo, $lang, $showLanguage); $complete = qtranxf_buildURL($urlinfo_lang, $homeinfo); //$complete = apply_filters('qtranslate_url_for_language',$complete,$lang,$urlinfo_lang,$homeinfo); if ($showLanguage) { $urlinfo[$lang] = $complete; } else { $urlinfo['bare'] = $complete; } if (!isset($url_cache[$complete])) { $url_cache[$complete] = $urlinfo; } //qtranxf_dbg_log('done: qtranxf_get_url_for_language('.$lang.($showLanguage?', true':', false').'): $urlinfo=',$urlinfo,false); return $complete; }