public function translate_url($url, $lang = null)
 {
     global $q_config;
     if ($lang) {
         $showLanguage = true;
     } else {
         $lang = $q_config['language'];
         $showLanguage = !$q_config['hide_default_language'] || $lang != $q_config['default_language'];
     }
     return qtranxf_get_url_for_language($url, $lang, $showLanguage);
 }
function qtranxf_test_convertURL($url_mode_name, $urls, $lang, $showLanguage)
{
    $cnt = 0;
    foreach ($urls as $url => $url_expected) {
        //$url_converted = qtranxf_convertURL($url, false, true);
        $url_converted = qtranxf_get_url_for_language($url, $lang, $showLanguage);
        //qtranxf_tst_log('test convertURL('.$url.'): ', $url_converted);
        if (!qtranxf_check_url($url_converted, $url_expected)) {
            ++$cnt;
            qtranxf_tst_log('qtranxf_test_convertURL(' . $url_mode_name . '): exit on the first error for url: ', $url);
            exit;
        }
    }
    //qtranxf_tst_log('qtranxf_test_convertURL('.$url_mode_name.'): '.($showLanguage?'show':'hide').' language lang='.$lang.'; #errors=', $cnt);
    return $cnt;
}
function qtranxf_home_url($url, $path, $orig_scheme, $blog_id)
{
    global $q_config;
    $lang = $q_config['language'];
    //qtranxf_dbg_log('qtranxf_home_url: url='.$url.'; path='.$path.'; orig_scheme='.$orig_scheme);
    $url = qtranxf_get_url_for_language($url, $lang, !$q_config['hide_default_language'] || $lang != $q_config['default_language']);
    //qtranxf_dbg_log('qtranxf_home_url: url='.$url.'; lang='.$lang);
    return $url;
}
Example #4
0
/**
 * Encode URL $url with language $lang.
 * @param (string) $url URL to be converted.
 * @param (string) $lang two-letter language code of the language to convert $url to.
 * @param (bool) $forceadmin $url is not converted on admin side, unless $forceadmin is set to true.
 * @param (bool) $showDefaultLanguage When set to true, $url is always encoded with a language, otherwise it senses option "Hide URL language information for default language" to keep $url consistent with the currently active language.
 *
 * If you need a URL to switch the language, set $showDefaultLanguage=true, if you need a URL to keep the current language, set it to false.
 */
function qtranxf_convertURL($url = '', $lang = '', $forceadmin = false, $showDefaultLanguage = false)
{
    global $q_config;
    if (empty($lang)) {
        $lang = $q_config['language'];
    }
    if (empty($url)) {
        if ($q_config['url_info']['doing_front_end'] && defined('QTS_VERSION') && $q_config['url_mode'] != QTX_URL_QUERY) {
            //quick workaround, but need a permanent solution
            $url = qts_get_url($lang);
            //qtranxf_dbg_log('qtranxf_convertURL: qts_get_url: url=', $url);
            if (!empty($url)) {
                if ($showDefaultLanguage && $q_config['hide_default_language'] && $lang == $q_config['default_language']) {
                    $url = qtranxf_convertURL($url, $lang, $forceadmin, true);
                }
                return $url;
            }
        }
        //$url = esc_url($q_config['url_info']['url']);
    }
    if (!$q_config['url_info']['doing_front_end'] && !$forceadmin) {
        return $url;
    }
    if (!qtranxf_isEnabled($lang)) {
        return '';
    }
    if (!$showDefaultLanguage) {
        $showDefaultLanguage = !$q_config['hide_default_language'];
    }
    $showLanguage = $showDefaultLanguage || $lang != $q_config['default_language'];
    //qtranxf_dbg_log('qtranxf_convertURL('.$url.','.$lang.'): showLanguage=',$showLanguage);
    $complete = qtranxf_get_url_for_language($url, $lang, $showLanguage);
    //qtranxf_dbg_log('qtranxf_convertURL: complete: ',$complete);
    return $complete;
}
/**
 * Encode front end language on home_url, since, on admin side, it is mostly in use to create links to a preview pages.
 * @since 3.4.5
*/
function qtranxf_admin_home_url($url, $path, $orig_scheme, $blog_id)
{
    global $q_config;
    //qtranxf_dbg_log('qtranxf_admin_home_url: $_COOKIE: ', $_COOKIE);
    if (isset($_COOKIE[QTX_COOKIE_NAME_FRONT])) {
        $lang = $_COOKIE[QTX_COOKIE_NAME_FRONT];
    } else {
        $lang = $q_config['default_language'];
    }
    //qtranxf_dbg_log('qtranxf_admin_home_url: url='.$url.'; path='.$path.'; orig_scheme='.$orig_scheme);
    $url = qtranxf_get_url_for_language($url, $lang, !$q_config['hide_default_language'] || $lang != $q_config['default_language']);
    //qtranxf_dbg_log('qtranxf_admin_home_url: url='.$url.'; lang='.$lang);
    return $url;
}