【问题标题】:qTranslate plugin switching language in the same pageqTranslate插件在同一页面切换语言
【发布时间】:2013-05-10 14:37:48
【问题描述】:

我在使用 qTranslate 按钮时遇到了严重问题。
目前网页结构为:http://www.site.com/news/?lang=en

当我停留在主页并尝试更改语言时,按钮会打开第一个帖子(可能是因为我使用的是永久链接):

<?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; ?>

不打开上一篇文章或返回首页,只在同一页面切换语言,如何解决?

【问题讨论】:

  • 我不明白。你能写出具体的步骤吗? F.ex.: 1) 在意大利家庭,将语言更改为en。 2) 英文页面刷新 3) ??? - - - 或者你的意思是当你在家里并交换语言时,网站会转到另一个帖子? - - - qtrans_convertURL(get_permalink(), 'en')生成的网址是什么?? - - - - 请edit问题添加更多详细信息。

标签: wordpress plugins qtranslate


【解决方案1】:

我在我的项目中使用 qTranslate,我没有执行您在上面代码中执行的任何操作,并且在语言之间切换也没有问题。

我所做的只是调用创建语言菜单的qts_language_menu() 函数,仅此而已。这将创建必要的链接,使您能够在语言之间切换但保持在同一页面上。

【讨论】:

  • 如果您发现此答案有用,请花点时间单击此答案左侧的大复选框接受它。
  • 抱歉,我现在不能投票。 “投票需要 15 声望”。
【解决方案2】:

你不需要使用 get_permalink()

你可以只传递一个空字符串作为 url 和语言作为第二个参数 该功能将休息! 就像:

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

事实上,如果你在函数定义中看到:

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...]

【讨论】:

    【解决方案3】:

    链接存储在 $qTranslate_slug 对象中。我制作了一个函数,可以轻松地以所需语言获取当前页面的链接:

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

    例如,如果你想获得英文链接,你应该写:

    getUrlInTargetLanguage("en");
    

    【讨论】:

      【解决方案4】:

      可能已经这么晚了,但遵循良好的功能可以轻松调用检查当前语言或为 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
      );
      ?>
      

      还可以生成任何语言转换 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多