Cómo seguramente bien sabéis, WordPress no tiene ningún sistema de multi idioma dentro del core. Eso significa que dependemos de plugins para poder crear un sitio multi idioma. Existen 3 métodos básicamente para crear un sitio multi idioma. Instalar varios WordPress (uno por idioma), la utilización de un WordPress Multisite y finalmente los plugins. El método más recomendado es la utilización de plugins, ya que con ellos cumplimos los estándares web, como son las cabeceras de los idiomas alternativos, o el enlazar directamente desde cada página, entrada o Custom Post Type a su traducción, haciendo que los buscadores indexen de forma correcta nuestro sitio o los usuarios que nos visiten puedan cambiar de idioma de una forma trasparente y sin cambiar de entrada, es decir, que nos los llevemos al home del idioma alternativo. Dentro de los plugins, básicamente encontraremos:
- El innombrable (alias qTranslate, ahora qTranslateX)
- WPML
- Polylang
- MultilingualPress
Existen otros, pero digamos que estos son los que se suelen utilizar.
Mi consejo es que se use siempre MultilingualPress, ya que es el único que no realiza ningún “hack” al core de WordPress y los diferentes idiomas están separado físicamente, no por código. El único inconveniente que puede encontrar alguno, es que se debe activar WordPress Multisite, pero yo no encuentro absolutamente ningún problema con ello, lo único es que quien nunca lo haya utilizado antes, deberá aprender, pero no tiene muchos secretos. En este tutorial os voy a enseñar a cómo pasar de qTranslate o qTranslateX a MultilingualPress. qTranslate ya fue abandonado hace muchos años, y qTranslate X ( un fork del anterior), hace dos años que no se actualiza y ahora se va a lanzar WordPress 5.0 con el nuevo editor Gutenberg, que sin haberlo comprobado, me aventuro a decir que no es compatible ni de broma.
Antes de nada, comentaros que he probado todos los plugins que he encontrado para migrar de qTranslate (x) a MultilingualPress, incluso algunos que prometían limpiar, pero ninguno funciona de forma correcta, o simplemente no funcionaban.
Parto de la premisa que ya sabéis utilizar WordPress Multisite o tenéis la base para MultilingualPress, así que no voy a mostraros como activarlo, configurado y utilizarlo. Otro día ya os enseñaré. Una vez que tengamos activado WordPress Multisite, deberemos instalar MultilingualPress. Por si no lo habéis hecho, dejad desactivado qTranslate o qTranslateX, ya no lo necesitamos para nada.
MultilingualPress lo debemos activar para la red, de hecho, no te dejaría activarlo en el sitio principal o en uno de los subsitios. Una vez activado y configurado, creemos los diferentes subsitios, deberemos crear clonando el sitio principal un subsitio por idioma, y pensando en los estándares para la url del subsitio, es decir, la nomenclatura de dos letras para los idiomas.
- “es” para castellano de España
- “ca” para catalán
- “fr” para francés
- “en” para ingles
- “de” para alemán
- etc
Por ejemplo, si queremos añadir el ingles a nuestro sitio, deberemos crear un subsitio que su url sea “en” de forma que para acceder a él, accederíamos por misitio.com/en/ siendo misitio.com el sitio principal, y /en/ el subsitio (sitio principal pero en ingles) Una vez hemos creado todos los subsitios necesarios, ya procedemos comenzar a limpiar toda la BASURA (y lo pongo en mayusculas para que quede claro lo que es y lo que hace qTranslate) que deja tras de si este hermano de (por si aun no lo habíais notado, no tengo mucho afecto al innombrable). Lo primero que debemos hacer, es saber que ID tienen los subsitios y qué idioma le vamos a aplicar. El idioma que aplicamos a cada subsitio, es sencillo, ya que los hemos creado nosotros mismos, pero lo que nos falta el es ID. Para ello, iremos a gestor de sitios en la red, y poniéndonos sobre el enlace editar, miraremos la URL que genera y sabremos cual es el ID del subsitio.
En la captura podemos ver que hay tres sitios, uno es el principal que está en castellano de España, otro que está en ingles y un tercera que está en catalán balear. Si nos ponemos sobre uno de los sitios, nos aparecerá el enlace editar, y si ponemos el cursor sobre el enlace, podremos ver que en el enlace que se genera está el id del sitio, en el caso de la captura, el 4. Así que tenemos que el idioma del sitio con el ID 4 es el ingles. Una vez todos mirados, tendremos que el sitio principal es el español de España (es el ID 1, pero para el código es como si no tuviera), el sitio con el ID 4, es el sitio en ingles, y finalmente tenemos que el sitio con el ID 3 es el catalán. Así que tenemos:
- 1 = es
- 4 = en
- 3 = ca
Una vez que tenemos claro este punto, debemos saber cual es el prefijo de nuestra base de datos. Lo más sencillo es acudir de phpMyAdmin (ya que de todas formas lo vamos a tener que abrir) y mirar el prefijo. Para el ejemplo, voy a utilizar el prefijo por defecto de WordPress, que es wp_ Así que los idiomas, mirando los prefijos serían:
- wp_ = es
- wp_4_ = en
- wp_3_ = ca
Básicamente, la tabla que vamos a limpiar en la base de datos, es la “posts” de cada uno de los sitios, ya que en ella están todas las entradas, páginas, adjuntos, Custom Post Type, etc. Así que completando ya las tablas que tenemos que modificar son:
- wp_posts = es
- wp_4_posts = en
- wp_3_posts = ca
Así que ya tenemos que idiomas vamos a mantener en cada una de las tablas. Ahora solo debemos ya crear el script que guardaremos como archivo sql y que importaremos a phpMyAdmin. El siguiente código está basado en lo que he explicado, así que es muy probable que coincida con tus necesidades.
Qué es lo que deberéis hacer, pues bien sencillo, sustituir el nombre de las tablas que salen por las que sean las vuestras, así cómo dónde salga un código de idioma, poner el que corresponda a esa tabla.
Pensad que podría ser perfectamente que sobrara código ya que vuestro sitio es solo de dos idiomas, o al contrario, que faltara código ya que vuestro sitio tiene más de 3 idiomas. En un caso así, solo debéis eliminar o copiar y pegar en cada uno de los bloques de código y realizar la modificación pertinentes para que se acomode a vuestras necesidades.
Sobre todo, antes de ejecutar este script realizad un backup: Ni se os ocurra hacer correr este script sin realizar un backups antes (si, lo he repetido). Es imprescindible que realices TU un backup antes de hacer correr este scrip (aquí lo he hecho más personal por si no te dabas por aludido). Si habéis cometido algún error en la modificación, podrías eliminar lo que no debéis.
Básicamente, lo que debemos hacer es modificar el código anterior para que coincidan los prefijos de las tablas y los IDs de las tablas con el idioma que deseamos mantener en cada sitio. Una vez que tengamos el archivo sql creado, lo único que deberemos hacer es acceder a phpMyAdmin (si no lo hemos hecho ya), seleccionar la base de datos en la que tenemos el sitio, apretar en importar, y cargar el archivo sql que hemos creado con el código anterior, apretamos en importar, y dejamos que la magia ocurra. En cuestión de muy poco, ya tendremos solo el idioma deseado en cada uno de los sitios con un código totalmente limpio.
Si no estás muy puesto en el tema, puede que en algún punto te hayas perdido. Pues si, he dado las explicaciones necesarias para que cualquier persona que esté acostumbrada a trabajar con la base de datos de WordPress, o sepa un poco de programación lo entienda sin problemas, pero que si no sabes, quizá no seas capaz de hacerlo. Y si, lo he hecho a propósito. Este tutorial es para personas avanzadas, y solo personas avanzadas deben realizarlo. Si lo hubiera hecho todo con capturas y aprieta aquí o allá, cualquiera se podría haber atrevido a hacerlo, y no, no es una cosa para jugar. Si deseas migrar de qTranslate a MultilingualPress y no eres un usuario avanzado, búscate un profesional que te lo haga. Yo mismo te lo podría hacer, pero si buscas a otro, le puedes hablar de esta entrada para que mire como hacerlo, por algo es GPL.
Acuérdate de realizar un backup antes de ejecutar este script.
PD: Seguro que alguien lo probará sin realizar antes un backup.
Excelente artículo en el que queda claro que es para “usuarios atrevidos y avanzados”, aunque yo diría que lo atrevido hoy día es seguir usando qTranslate X, y tus antecesores, todos ellos desactualizados, algunos vulnerables y abandonados actualmente por sus autores.
No soy 100% partidario de WPML por aquello de que es incitar a tener que usar un plugin “comercial” pero ciertamente es muy viable para proyectos profesionales. Lo he adquirido hace 2 años para algún proyecto aún activo y debo decir que cero problemas.
Como bien dices José, un buen backup antes de meterle mano a este asunto 😉
Gracias Luis,
Yo tampoco soy partidario de WPML, por eso aconsejo MultilingualPress, que es libre, gratuito y no realiza “hacks” innecesario al utilizar funciones ya incorporadas en el el core de WordPress.
Saludos