Existen algunos plugins para WordPress que realizan traducciones automáticas usando servicios de Google Translate u otros sin embargo los resultados no son del todo precisos, además no permiten traducir imágenes y muchos de ellos no mantienen la URL por lo que tampoco se indexan todos los idiomas en los buscadores.

Hay una solución a todos esos problemas pero por supuesto es más trabajosa ya que es manual sin embargo es la que reporta los mejores resultados, podemos bajar el plugin gratuito QTranslate desde su sitio http://www.qianqin.de/qtranslate/download/

Configuración Básica

Lo primero que debemos hacer una vez instalado el plugin es definir los idiomas que vamos a utilizar además del idioma por defecto para eso buscamos el menu Ajustes/Idiomas y allí veremos la lista de idiomas, podemos definir nuevos idiomas pero siempre teniendo en cuenta los codigos de idioma por eejemplo en español es_ES en ingles en_EN o en_US esto es util por si subimos los archivos .po y .mo a Worpdress todo funcione de forma coordinada.

¿Cómo Escribir en Múltiples Idiomas?

Una vez instalado el plugin cuando escribamos un post o una página aparecerá una casilla para el título en cada idioma y unos tabs para elegir en que idioma se va a escribir el post o la página, por defecto los posts y páginas previamente creados se duplican a todos los idiomas disponibles.

Cuando vayamos a Post/Categorias también veremos que por cada idioma aparece un nuevo campo para escribir el nuevo nombre

Una vez definidos los idiomas el siguiente paso es colocar el widget de idioma en el menu Apariencia/Widgets y así el vistante pueda elegir el idioma en que desea ver el sitio.

¿Cómo traducir campos personalizados, plugins y codigo PHP?

Hasta el item anterior era lo más básico ahora compliquemos las cosas, por defecto los campos personalizados, codigo PHP y respuestas de otros plugins no son traducidos sin embargo existen unas etiquetas que nos permiten realizar esto de forma sencilla, veamos el ejemplo de estas dos etiquetas para español e inglés

1
[:es]Valor de mi campo personalizado en español[:en]Value of my customized field in english

Lo anterior es equivalente a:

1
<!--:es-->Valor de mi campo personalizado en español<!--:--><!--:en-->Value of my customized field in english<!--:-->

Si añadimos esas etiquetas en nuestro código PHP cuando realizamos un echo obtendremos el texto correspondiente al idioma seleccionado

Para traducir la respuesta de un campo personalizado se soluciona fácilmente añadiendo una función a nuestro código, como en el ejemplo:

1
2
3
4
5
6
<?php
            $mykey_values = get_post_custom_values('subfooter');
            foreach ( $mykey_values as $key => $value ) {
                echo qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value);
            }
            ?>

En el ejemplo recojo el valor del custom field llamado «subfooter» y con la función qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage hago que discrimine el valor según el idioma elegido.

Cuando se trata de traducir la respuesta proveniente de plugin es posible que tengamos que modificar el código del plugin utilizando esa función sin embargo si el plugin utiliza short tags hay una forma sencilla de traducirlo

Primero veamos la función original usando short code en este caso estoy usando para recoger un formulario del plugin Contact Form 7 [contact-form-7 id=»170″ title=»Form Contacto»]

1
<?php echo do_shortcode('[contact-form-7 id="170" title="Form Contacto"]'); ?>

Al aplicarle el filtro de idioma quedaría:

1
<?php echo qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage(do_shortcode('[contact-form-7 id="170" title="Form Contacto"]')); ?>