:::: MENÚ ::::
Noticias con las etiquetas: WPML

WPML: switch_lang() – Forzar el cambio de idioma

Hace ya unos meses me surgió un proyecto en WooCommerce en el cual de forma periódica tenía que enviar unos recordatorios, los mismos tenían que estar en el idioma del consumidor. Si el mismo era Español, se enviaban en español, y si era Francés, en francés.

Para el envío periódico creé un plugin y automaticé el proceso usando el sistema de CRON del servidor y de WordPress. Para la gestión del idioma, el plugin más habitual en estos casos, WPML, pero ¿Cómo forcé el cambio del idioma?

Dentro de WPML existe una variable global llamada $sitepress que contiene todo su sistema al cual podemos acceder para modificar su comportamiento o para cambiar ciertos valores.

Si examinamos su código, podemos encontrarnos el método llamado switch_lang() que acepta dos parámetros, el primero con el código del idioma (ISO 3166-1 Alfa-2), y el segundo, si queremos forzar también el cambio en las cookies.

Por ejemplo, supongamos que queremos forzar el cambio de idioma al francés, nuestro código sería el siguiente:

global $sitepress;

$sitepress->switch_lang( 'fr', true );

Como dijimos $sitepress es una variable global, para poder hacer uso de ella tendremos que invocarlo como hemos hecho en la primera línea con global.

Posteriormente llamamos al método switch_lang() de $sitepress y le pasamos el valor fr (importante que sea en minúscula), para decirle que nos cargue el idioma francés, y true, para que nos fuerce el cambio también en las cookies. En el caso de que no queramos que nos cambie las cookies, podemos pasar como parámetro false o simplemente no poner nada.

Con esto ya habremos forzado a nuestro WordPress y WPML a que cambie el idioma. A partir del momento en que introducimos dicho código se verá todo en francés.

Es importante que el idioma al que vamos a cambiar esté activado en el WPML, ya que switch_lang() hace una verificación para usar exclusivamente los idiomas que tenemos cargados.

Podemos también usar switch_lang() tantas veces como nos haga falta cambiar de idioma. Por ejemplo en mi caso particular examinaba el idioma de cada usuario y forzaba el cambio si era necesario.

Share on Facebook0Tweet about this on TwitterShare on Google+1Share on LinkedIn0Share on Tumblr0Pin on Pinterest0Email this to someone