2013-05-15 30 views
2

我有一個qTranslate按鈕嚴重的問題。
眼下的網絡結構爲:http://www.site.com/news/?lang=enq翻譯插件切換語言在同一頁

當我留在主頁上,我試圖改變語言,鈕打開後的第一次(也許是因爲我使用的永久鏈接):

<?php if(qtrans_getLanguage()=='it'): ?> 
    <li><a href="<?php echo qtrans_convertURL(get_permalink(), 'en'); ?>" >eng</a></li> 
    <li class="liguaattiva">ita</li> 
<?php endif; ?> 
<?php if(qtrans_getLanguage()=='en'): ?> 
    <li class="liguaattiva">eng</li> 
    <li><a href="<?php echo qtrans_convertURL(get_permalink(), 'it'); ?>" >ita</a></li> 
<?php endif; ?> 

如何解決這個問題,而無需打開最後一篇文章或回到主頁,但只能在同一頁面切換語言?

+0

我不明白。你能寫下確切的步驟嗎? F.ex .: 1)在意大利家中,將語言改爲'en'。 2)頁面刷新英文3)??? - - - 或者你的意思是當你在家庭和交換語言,該網站轉到另一個職位? - - 'qtrans_convertURL(get_permalink(),'en')''生成的URL是什麼? - - - - 請編輯問題以添加更多詳細信息。 – brasofilo

回答

2

我在我的項目中使用qTranslate,並且我沒有在上面的代碼中執行任何你想做的事情,並且在語言之間切換時沒有問題。

我只需撥打qts_language_menu()即可創建語言菜單,不需要其他任何東西。這將創建必要的鏈接,使您可以在語言之間進行切換,但可以保持在同一頁面上。

+0

真的嗎?好!非常感謝! – markobarna

+0

如果您發現該回答有用,請花點時間並通過點擊此答案左側的大複選框接受它。 – user850010

+0

對不起,但現在我不能投票。 「投票要求15聲望」。 – markobarna

1

你並不需要使用get_permalink()

你可以傳遞一個空字符串作爲URL和語言作爲第二PARAM 和功能將不休息! 就像:

$my_translated_content_url = qtrans_convertURL("", "en"); 

INFACT如果你看到在函數定義:

function qtrans_convertURL($url='', $lang='', $forceadmin = false) { 
    global $q_config; 

    // invalid language 
    if($url=='') $url = esc_url($q_config['url_info']['url']); // <-You don't need the url 
    if($lang=='') $lang = $q_config['language']; 
     [... the function continue...] 
0

的聯繫被存儲在$ qTranslate_slug對象。我做了一個功能,可以很容易地得到所需語言的鏈接,當前頁面:

function getUrlInTargetLanguage($targetLang){ 
    global $qtranslate_slug; 
    return $qtranslate_slug->get_current_url($targetLang); 
} 

因此,舉例來說,如果你想獲得英語通,你應該寫:

getUrlInTargetLanguage("en"); 
+0

非常感謝! – markobarna

0

可能是這晚,但下面的好功能,方便調用查看當前的語言或自動生成任何語言的網址爲qTranslate:

// check language 
function check_lang() { 
    return qtranxf_getLanguage(); 
} 

// Generate language convert URL 
function get_lan_url($lang){ 
    echo qtranxf_convertURL('', $lang); 
} 

// generate inline translate short code 
add_shortcode('translate_now', 'get_translate'); 
function get_translate($atts, $content = null) { 
    extract(shortcode_atts(
      array(
       'ar' => '', 
       'en' => '', 
       'es' => '', 
       'fr' => '', 
      ), $atts) 
    ); 
    if (check_lang() == 'ar') { 
     echo $atts['ar']; 
    } 
    if (check_lang() == 'en') { 
     echo $atts['en']; 
    } 
    if (check_lang() == 'es') { 
     echo $atts['ar']; 
    } 
    if (check_lang() == 'fr') { 
     echo $atts['ar']; 
    } 
} 

function translate_now($ar,$en,$es,$fr){ 
    $content = '[translate_now ar="'.$ar.'" en="'.$en.'" es="'.$es.'" fr="'.$fr.'"]'; 
    echo do_shortcode($content); 
} 

所以現在你可以使用check_lang檢查當前語言()例如功能:

<?php if(check_lang() == 'ar'): echo 'مرحبا'; endif;?> 
<?php if(check_lang() == 'en'): echo 'Hello'; endif;?> 
<?php if(check_lang() == 'es'): echo 'Hola'; endif;?> 
<?php if(check_lang() == 'fr'): echo 'Bonjour'; endif;?> 

您也可以使用功能translate_now()通過傳遞值翻譯在線:

<?php 
translate_now(
    'مرحبا', // ar 
    'Hello', //en 
    'Hola', //es 
    'Bonjour' //fr 
); 
?> 

而且產生任何的langauge轉換URL使用功能get_lan_url()傳請求的語言:

<a href="<?php get_lan_url('ar');?>">العربية</a> 
<a href="<?php get_lan_url('en');?>">English</a> 
<a href="<?php get_lan_url('es');?>">España</a> 
<a href="<?php get_lan_url('fr');?>">Français</a>