guia-instalar-idioma-qtranslate-wordpress-lacasadelaswebs

Plugin Qtranslate para WordPress: trucos y ayudas

QTranslate es un plugin de WordPress que muchísima gente utiliza para traducir sus sites a varios idiomas. Existen otros como WPML que son mejores pero son de pago. En cualquier caso Qtranslate nos salva ampliamente la papeleta.
En este post voy a solucionar una par de cuestiones que surgen cuando estamos trabajando con este maravilloso plugin:

El botón de HOME de mi menú me manda siempre al idioma por defecto

Cuando hemos creado un menú nos damos cuenta que a pesar de estar en un determinado idioma, siempre que clico el botón de Inicio me dirije a la página de inicio del idioma por defecto. Bien, esto es un bug de Qtranslate que después de buscar por la red he conseguido solucionar gracias a este código que deberemos poner en nuestro archivo functions.php y que encontré en esta pagina de ayuda de WordPress. El código PHP es el siguiente:
// Fix for qTranslate plugin and "Home" menu link reverting back to default language

if (function_exists(‘qtrans_convertURL’)) {

function qtrans_in_nav_el($output, $item, $depth, $args) {

$attributes = !empty($item->attr_title) ? ‘ title=”‘ . esc_attr($item->attr_title) . ‘”‘ : ”;

$attributes .=!empty($item->target) ? ‘ target=”‘ . esc_attr($item->target) . ‘”‘ : ”;

$attributes .=!empty($item->xfn) ? ‘ rel=”‘ . esc_attr($item->xfn) . ‘”‘ : ”;

// Integration with qTranslate Plugin

$attributes .=!empty($item->url) ? ‘ href=”‘ . esc_attr( qtrans_convertURL($item->url) ) . ‘”‘ : ”;

$output = $args->before;

$output .= ‘<a’ . $attributes . ‘>’;

$output .= $args->link_before . apply_filters(‘the_title’, $item->title, $item->ID) . $args->link_after;

$output .= ‘</a>’;

$output .= $args->after;

return $output;

}

add_filter(‘walker_nav_menu_start_el’, ‘qtrans_in_nav_el’, 10, 4);

}
Con este código conseguimos que al pinchar en el enlace “inicio” de nuestro menú, vayamos a la ‘home’ del idioma en el que estemos.

Quiero cambiar el texto que por defecto me pone Qtranslate en el menú de idiomas

En la Documentación de Qtranslate, nos explica cómo podemos poner un menú de idiomas directamente en la plantilla del tema sin tener que utilizar un widget.

El código sería para texto y una banderita

<?php echo qtrans_generateLanguageSelectCode('both'); ?>

Para sólo banderita:

<?php echo qtrans_generateLanguageSelectCode('image'); ?>

Y para sólo texto:

<?php echo qtrans_generateLanguageSelectCode('text'); ?>

Pero al poner este último código, nos escribe la palabra entera, es decir “english” en vez de “eng”, “español” en vez de “esp”,…y a veces puede resultar muy largo.

Menú Qtranslate WordPress Menú Qtranslate WordPress

Pues bien, para solucionar esto, podemos poner este código justo después la llamada al menú de idiomas:
<script>jQuery(document).ready(function(){ jQuery('.lang-en a span').html('EN'); jQuery('.lang-es a span').html('ESP');  jQuery('.lang-pt a span').html('POR');  jQuery('.lang-RU a span').html('RUS'); })</script>
Con lo que nos quedaría por ejemplo:

<?php echo qtrans_generateLanguageSelectCode('text'); ?>
<script>jQuery(document).ready(function(){ jQuery('.lang-en a span').html('EN'); jQuery('.lang-es a span').html('ESP');  jQuery('.lang-pt a span').html('POR');  jQuery('.lang-RU a span').html('RUS'); })</script>
En este ejemplo tendríamos 4 idiomas ( inglés, español, portugués y ruso ) y en vez de aparecer "Inglés - Español - Portugués - Ruso" aparecerá "EN - ESP - POR - RUS"

 

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *