Skip to content

Instantly share code, notes, and snippets.

@iiwo
Created November 14, 2013 20:23
Show Gist options
  • Save iiwo/7473706 to your computer and use it in GitHub Desktop.
Save iiwo/7473706 to your computer and use it in GitHub Desktop.
qTranslate - create tabs for language versions
/**
* qTranslate tabbed language chooser
*/
//make enabled languages visible for javascript
function register_qtranslate_var() {
global $q_config;
wp_localize_script('jquery', 'Qtranslate', array(
'enabled_languages' => $q_config['enabled_languages']
, 'current_language' => qtrans_getLanguage()
)
);
}
add_action('admin_enqueue_scripts', 'register_qtranslate_var');
function hide_nonactive_language() {
?>
<style type="text/css">
<!--
.qtrans_version
{
display: none;
}
.qtrans_version.<?php echo qtrans_getLanguage(); ?>
{
display: block;
}
-->
</style>
<?php
}
add_action("admin_head", 'hide_nonactive_language');
function get_lang_menu($id = "") {
global $q_config;
$ret = '<h2 class=\"nav-tab-wrapper\">';
foreach (qtrans_getSortedLanguages() as $language) {
//qtrans_convertURL was always returning lang=en for me, so had to fix that with this dirty fix
$fixed_url = preg_replace("/lang=[a-zA-Z][a-zA-Z]/", "lang=".$language, qtrans_convertURL('', $language));
$ret .='<a href=\"' . $fixed_url . '\"';
if ($language == $q_config['language'])
$ret .=' class=\"active nav-tab nav-tab-active qtrans_flag_' . $language . ' qtrans_flag_and_text\" title=\"' . $q_config['language_name'][$language] . '\"';
else
$ret .=' class=\"nav-tab qtrans_flag_' . $language . ' qtrans_flag_and_text\" title=\"' . $q_config['language_name'][$language] . '\"';
$ret .='><span>' . $q_config['language_name'][$language] . '</span></a>';
}
$ret .='</h2>';
return $ret;
}
function add_tabbed_languages_script() {
$screen = get_current_screen();
if ($screen->base === 'post'){
$menu = get_lang_menu();
}
else{
$menu = '';
}
echo '<script type="text/javascript">
/* <![CDATA[ */
jQuery(".wrap").prepend("'.$menu.'");
jQuery(document).ready(function() {
jQuery(".qtrans_title_input").each(function(){
var item_id = jQuery(this).attr("id");
var lang_regexp = /qtrans_title_(.+)/g;
var match = lang_regexp.exec(item_id);
var lang = match[1];
jQuery(this).closest(".postarea").addClass("qtrans_version "+lang);
});
jQuery("#qtrans_select_"+Qtranslate.current_language).click();
jQuery.each(Qtranslate.enabled_languages, function(value){
jQuery("#qtrans_select_"+Qtranslate.enabled_languages[value]).hide();
});
});
/* ]]> */
</script>';
}
add_action("admin_footer", 'add_tabbed_languages_script');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment