4

我正在尝试使用 qTranslate X 制作一个基本的语言切换器,例如:

FR | EN

有一个功能可以实现:qtranxf_generateLanguageSelectCode('text');但它只能接受'text','image'或'both',所以它不适合我的需要:'text'是语言的全名。

我怎样才能显示语言代码?任何想法做一个过滤器来做到这一点?

4

7 回答 7

8

尝试在翻译代码下方添加以下脚本。

echo qtranxf_generateLanguageSelectCode('text');
<script>jQuery(document).ready(function(){ jQuery('.lang-en a span').html('EN'); jQuery('.lang-fr a span').html('FR'); })</script>

服务器端解决方案:

请在下面找到将语言名称修改为语言代码而不更改插件代码的代码,您可以通过 word press filter 来完成。

将以下代码粘贴到 function.php 文件中。

add_filter('template_include','start_buffer_EN',1);
function start_buffer_EN($template) {
  ob_start('end_buffer_EN');  
  return $template;
}
function end_buffer_EN($buffer) {
  return str_replace('<span>English</span>','<span>EN</span>',$buffer);  
}

add_filter('template_include','start_buffer_FR',1);
function start_buffer_FR($template) {
  ob_start('end_buffer_FR');
  return $template;
}
function end_buffer_FR($buffer) {  
  return str_replace('<span>Français</span>','<span>FR</span>',$buffer);
}

您可以通过直接编辑语言名称从 wp-admin 更改语言名称..

Q-translate-x-change-image-name-from-admin

于 2015-04-16T10:20:42.737 回答
3

检查插件我发现 generateLanguageSelectCode 的类型比记录的要多。因此,要使用语言代码,您可以简单地使用“short”类型,如下所示:

qtranxf_generateLanguageSelectCode('short');

这可能是自上次回答以来添加的一项功能。

以下是所有切换器类型的概述:“text”、“image”、“both”、“short”、“css_only”、“custom”和“dropdown”。我没有研究不同类型的工作原理,但您可以在插件文件夹的 qtranslate_widget.php 中找到它们。

于 2017-07-21T09:19:10.390 回答
2

您可以为此使用小部件

<?php the_widget('qTranslateXWidget', array('type' => 'custom', 'format' => '%c') );?>

(%c - 语言 2 字母代码)

应该注意的是,如果您想使用下拉类型和 2-Letter Code - 这将不起作用,因为格式参数仅适用于“自定义”类型。在这种情况下,我会选择 Yehuda Tiram 的答案(特别是如果您有多种语言并且您不知道您的客户想要使用哪种语言)。

更多文档在这里

于 2017-06-01T07:25:51.280 回答
1

一位朋友帮助我解决了这个问题,它基于 Ash Patel 的回答,但以更简洁的方式(恕我直言):

function my_qtranxf_generateLanguageSelectCode($style='', $id='') {
    ob_start();  
    qtranxf_generateLanguageSelectCode($style, $id);
    $o = ob_get_contents();
    ob_end_clean();
    return str_replace(array('English', 'Français'),array('EN', 'FR'), $o); 
}
于 2015-04-24T18:41:11.800 回答
0

为什么不根据需要更改语言名称?在语言编辑中是可能的,不会影响任何事情。

于 2015-08-01T22:10:42.977 回答
0

我已经使用以下查询完成了它,它对我来说工作正常。

<?php if (qtranxf_getLanguage() == 'ar') { ?>
<script>
    jQuery(document).ready(function () {
        var current_URL = jQuery(location).attr('href');
        url = current_URL.replace('/ar/', '/en/')
        jQuery('.languages-selection ul li a').attr('href', url)
    });
</script>
<?php } elseif (qtranxf_getLanguage() == 'en') { ?>
<script>
    jQuery(document).ready(function() {
        var current_URL = jQuery(location).attr('href');
        url = current_URL.replace('/en/', '/ar/')
        jQuery('.languages-selection ul li a').attr('href', url)
    });
</script>
<?php } ?>
于 2016-07-14T05:08:21.057 回答
0

https://qtranslatexteam.wordpress.com/faq/

例如,只在顶部语言菜单项中显示标志,输入#qtransLangSw?title=none,如果除此当前语言不需要显示,输入#qtransLangSw?title=none¤t=hidden,等等。

于 2018-06-28T19:44:44.527 回答