我的qTranslate按钮存在严重问题
现在,网络结构是:http://www.site.com/news/?lang=en
当我留在主页并尝试更改语言时,botton会打开第一篇文章(可能是因为我使用永久链接):
<?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 :(得分:2)
我在我的项目中使用qTranslate而且我没有在上面的代码中执行任何操作,并且在语言之间切换没有问题。
我所做的只是调用创建语言菜单的qts_language_menu()
函数,没有别的。这将创建必要的链接,使您能够在语言之间切换,但保持在同一页面上。
答案 1 :(得分:1)
您不需要使用get_permalink()
您可以将空字符串作为url传递,将语言作为第2个参数传递 功能会休息! 就像:
$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...]
答案 2 :(得分:0)
链接存储在$ qTranslate_slug对象中。我创建了一个函数,可以轻松地以所需语言获取当前页面的链接:
function getUrlInTargetLanguage($targetLang){
global $qtranslate_slug;
return $qtranslate_slug->get_current_url($targetLang);
}
例如,如果你想获得英文链接,你应该写:
getUrlInTargetLanguage("en");
答案 3 :(得分:0)
可能是这么晚但是遵循良好的功能来轻松调用当前语言或自动生成qTranslate的任何语言URL:
// 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>