WordPress – Acceder al idioma seleccionado y los idiomas activos de qTranslate desde javascript.

alojamiento wordpress
Hola a todos:

Hoy toca hablar de WordPress y de ese maravilloso plugin que nos permite utilizar varios idiomas en los sitios creados con WordPress llamado qTranslate.

A veces podemos necesitar saber cual es el idioma que está seleccionado para realizar una acción determinada en función a esté.

Para obtener el código iso del idioma actual escribimos esto:

<?php
    $global $q_config;
    $iso = qtrans_getLanguage();

    echo 'El idioma actual es: '.$iso;
?>

Por ejemplo si el idioma actual es el español  obtendríamos esto:

El idioma actual es:  es

Si queremos obtener el nombre del idioma en lugar de su iso escribimos esto:

<?php
    $global $q_config;
    $iso = qtrans_getLanguage(); // obtenemos el código iso. 
    $idioma =  qtrans_getLanguageName($iso); // Obtenemos el idioma.
    echo 'El idioma actual es: '.$idioma;
?>

Y obtendríamos como resultado algo como esto:

El idioma actual es: Español

Y si queremos saber todos los idiomas activos podemos obtenerlos de esta manera:

<?php

global $q_config;
$activos = $q_config['enabled_languages'];
foreach ($activos as $l)
{
    echo  qtrans_getLanguageName($l).'<br />';
}

?>

Hasta aquí puede que le haya servido de ayuda a alguien pero en el titulo del post ponía ‘desde javascript’, no se me ha olvidado :-).

Puede que escribiendo tu propio plugin, o modificando el tema para darle alguna funcionalidad extra necesites acceder a las variables anteriores pero desde javascript (a mi me ha pasado por eso os cuento todo esto).

Podríamos crear variables globales escritas con php tipo algo así:

<?php  echo  "Idioma =".qtrans_getLanguage()."" ?>

Pero es un método  feo, poco elegante y una mala práctica.

Bien, imaginemos que estamos escribiendo un plugin, lo primero que tendríamos que hacer es añadir el archivo .js donde estarán nuestras funciones javascript.

para ello utilizamos la función de wordpress wp_enqueue_script.

wp_enqueue_script( 'mi_script',plugins_url( '/js/mi_script.js', __FILE__ ));

El primer parámetro es el nombre que le damos para identificar al script,  puede ser el que queramos.

El segundo parámetro es la url donde se encuentra el archivo, en esta ocasión se encuentra en la carpeta de nuestro plugin en una subcarpeta llamada js.

Para obtener la ruta de nuestro plugin utilizamos la función plugins_url();

Y ahora llega el momento mágico, para hacer que las variables php sean accesibles desde nuestro javascript escribimos lo siguiente:

// Obtenemos los idiomas y los pasamos a una variable javascript
global $q_config;
$arrLang = array();
$languages_iso = $q_config['enabled_languages'];
foreach ($languages_iso as $l)
{
  $arrLang[$l] = qtrans_getLanguageName($l);
}

wp_localize_script( 'mi_script', 'lang',array('languages' => $arrLang, 'iso' => qtrans_getLanguage()));

La función  wp_localize_script nos permitirá  acceder desde nuestro javascript a las variables que le pasemos siempre que antes hayamos definido nuestro script con wp_enqueue_script.

El primer parametro de wp_localize_script() debe ser el nombre que le hayamos dado a nuestro script al añadirlo con wp_enqueue_script.

El segundo parámetro es el nombre del objeto desde el cual accederemos desde javascript a los datos, y el tercero es un array que contiene las variables que despues utilizaremos desde javascript.

Ya solo nos queda la parte javascript.

En nuestro archivo mi_script.js cremos por ejemplo pla siguiente función:

function dime_el_idioma(){
    alert(lang.languages[lang.iso]);
}

Llamamos a esta función desde el html por ejemplo con un botón:

<input type="button" onclick="dime_el_idioma()" value="Idioma" />

Si probamos todo esto veremos que al pulsar el botón nos mostrará un alert con el nombre del idioma activo que ahora lo tenemos accesible desde javascript.

Y… eso es todo…

Espero que a alguien le sirva de ayuda.

Salud!!!

P.D: Podéis probar mis últimos juegos para móviles. Si ponéis una valoración en alguno me hacéis un favor 😉

ico_beheading_androidico_beheading_iosico_beheading_wpGalactic InsectsGalactic InsectsGalactic InsectsSnow SoccerSnow Soccer

alojamiento wordpress

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s