Wordpress:带有语言代码的 qTranslate X 语言切换器
Wordpress : qTranslate X language switcher with language code
我正在尝试使用 qTranslate X 制作一个基本的语言切换器,例如:
FR | EN
有一个函数可以实现:qtranxf_generateLanguageSelectCode('text');
但它只能接受 'text'、'image' 或 'both',所以它不符合我的需要: 'text' 是语言的全称。
我怎样才能只显示语言代码?有没有想法制作一个过滤器来做到这一点?
尝试在翻译代码下方添加以下脚本。
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 更改语言名称..
一个朋友帮我解决了这个问题,它基于 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);
}
为什么不根据需要更改语言名称?
这在语言编辑中是可能的,不会影响任何东西。
我已经使用以下查询完成了它,它对我来说工作正常。
<?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 } ?>
您可以为此使用小部件
<?php the_widget('qTranslateXWidget', array('type' => 'custom', 'format' => '%c') );?>
(%c - 语言 2 字母代码)
请注意,如果您想使用下拉类型和 2 字母代码 - 这将不起作用,因为格式参数仅适用于 'custom' 类型。在这种情况下,我会选择 Yehuda Tiram 的答案(特别是如果您有多种语言并且您不知道您的客户想要使用哪种语言)。
检查插件,我发现 generateLanguageSelectCode 的类型比记录的多。所以要使用语言代码,你可以简单地使用类型 'short',像这样:
qtranxf_generateLanguageSelectCode('short');
这可能是自上次回答以来添加的功能。
以下是所有切换器类型的概述:
'text'、'image'、'both'、'short'、'css_only'、'custom' 和 'dropdown'。我没有研究不同类型的工作原理,但您会在插件文件夹的 qtranslate_widget.php 中找到它们。
https://qtranslatexteam.wordpress.com/faq/
例如,只在顶部语言菜单项中显示标志,输入#qtransLangSw?title=none,如果不需要显示除此之外的当前语言,则输入#qtransLangSw?title =none¤t=隐藏等。
我正在尝试使用 qTranslate X 制作一个基本的语言切换器,例如:
FR | EN
有一个函数可以实现:qtranxf_generateLanguageSelectCode('text');
但它只能接受 'text'、'image' 或 'both',所以它不符合我的需要: 'text' 是语言的全称。
我怎样才能只显示语言代码?有没有想法制作一个过滤器来做到这一点?
尝试在翻译代码下方添加以下脚本。
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 更改语言名称..
一个朋友帮我解决了这个问题,它基于 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);
}
为什么不根据需要更改语言名称? 这在语言编辑中是可能的,不会影响任何东西。
我已经使用以下查询完成了它,它对我来说工作正常。
<?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 } ?>
您可以为此使用小部件
<?php the_widget('qTranslateXWidget', array('type' => 'custom', 'format' => '%c') );?>
(%c - 语言 2 字母代码)
请注意,如果您想使用下拉类型和 2 字母代码 - 这将不起作用,因为格式参数仅适用于 'custom' 类型。在这种情况下,我会选择 Yehuda Tiram 的答案(特别是如果您有多种语言并且您不知道您的客户想要使用哪种语言)。
检查插件,我发现 generateLanguageSelectCode 的类型比记录的多。所以要使用语言代码,你可以简单地使用类型 'short',像这样:
qtranxf_generateLanguageSelectCode('short');
这可能是自上次回答以来添加的功能。
以下是所有切换器类型的概述: 'text'、'image'、'both'、'short'、'css_only'、'custom' 和 'dropdown'。我没有研究不同类型的工作原理,但您会在插件文件夹的 qtranslate_widget.php 中找到它们。
https://qtranslatexteam.wordpress.com/faq/
例如,只在顶部语言菜单项中显示标志,输入#qtransLangSw?title=none,如果不需要显示除此之外的当前语言,则输入#qtransLangSw?title =none¤t=隐藏等。