Wordpress multi-language
Desde hace un tiempo, mi amigo Mauricio y yo, venimos probando diferentes plugins para wordpress que nos permitiera internacionalizar el blog, pero no solo para las entradas, sino también para traducir la totalidad del blog si el archivo del idioma(archivos .mo en wp-includes/languages) está disponible.
Finalmente nos decidimos por Polyglot, que si bien hay que manipularlo un poco para que se comporte como pretendiamos, es muy sencillo de instalar y usar. Básicamente, postear multi-idioma se transforma en encerrar los textos para cada uno entre TAGS específicos
< lang_es>Esto está en español< /lang_es>< lang_en>This is written in English< /lang_en>
Resultado:
Esto está en español
Nota: Los espacios dejados dentro de los tags de idioma no van, fueron puestos para evitar que el parser de Wordpress los procesara.
Lo primero es instalar el plugin y activarlo. Una vez hecho eso, el parser de wordpress desplegará únicamente los textos que estén encerrados entre los tags del idioma seleccionado. Cómo parte de la configuración del plugin, se especifica cuál es el idioma por defecto para nuestro blog. Tal cómo aparece en la parte superior de éste post, el parser colocará el menú para selección de idiomas alternativos para la entrada. Para que éste menu aparezca, debe modificarse las plantillas para los post, index y búsqueda.
Configurando el plugin:
// Idioma por defecto - es usado cuando no exista una traducción para el idioma seleccionado o no se especifique uno
$polyglot_settings['default_lang'] = 'es';
//
// Aquí puede definir su propia traducción para los enlaces
$polyglot_settings['trans']['en'] = 'English';
$polyglot_settings['trans']['es'] = 'Español';
//
// Idiomas que ofrece para todo el sitio - Use los códigos ISO apropiados!
$polyglot_settings['knownlangs'] = array('en','es');
//
// ponga 'true' si desea desplegar las banderas en lugar de los nombres
$polyglot_settings['use_flags'] = true;
//
// Lista de códigos ISO y la imágen de la bandera asociada
// las imágenes pueden ser encontradas en el directorio 'polyglot_flags' del plugin
$polyglot_settings['flags']['en'] = 'gb.gif';
$polyglot_settings['flags']['es'] = 'es.gif';
//
// formato de la fecha/hora para cada idioma
// si no se define - se usará el formato por defecto de Wordpress
$polyglot_settings['time_format']['en'] = 'g.i a';
$polyglot_settings['time_format']['es'] = 'G:i';
//
$polyglot_settings['date_format']['en'] = 'j. m d, Y';
$polyglot_settings['date_format']['es'] = 'j \de F, Y';
Configurando las plantillas:
// Esto deben agragarlo en todos los lugares dónde desean que se despliegue el menú de idiomas
< ?php if(function_exists('lp_other_langs')) { lp_other_langs(' ', ' :: ', '', '', ''); }? >
Este sistema de tags nos permite crear el post de la manera que nos quede más cómoda… por ejemplo, podemos escribir toda la entrada en un idioma primero y luego abrir el tag para el siguiente idioma y escribir la entrada en el mismo, o podemos hacerlo párrafo a párrafo. Lo bueno de hacerlo así, es que las imágenes son las mismas para ambas entradas y simplemente se reemplazará un texto por otro sin necesidad de replicar la carga de las imágenes.



yes… I know! my english sucks! I’ll improve it! promise! Despite that… I think the idea is clear…
Hola, me interesa mucho el tema.
No me ha quedado claro como y donde tengo que insertar el codigo php, y tampoco que hay que poner en ese codigo php. Podeis ayudarme especificandolo?
Esa es la sección que debe ser agregada en las plantillas o temas de tu wordpress si deseas que el sistema se active.
Este código debe ser agregado en al menos 3 archivos de la plantilla: Página(page.php), Plantilla de Página Principal(index.php) y Entrada Individual(single.php). Debes colocar ese código en el lugar donde deseas que aparezca el selector de idiomas.
En mi caso, lo estoy haciendo junto con las categorías y otros datos… te paso parte de mi código para que lo veas:
He hecho todo lo que dices, pero al final en el post me salen los dos textos, si ninguna posibilidad de elgir el idioma.
Adjunto una parte del codigo para que veas como lo he añadido.
Read more »’); ? >
domenico… no he recibido el código… para evitar que el parser procese el código PHP o HTML, debes poner un espacio entre “< ?php" .... y "?>“
Wikipedia: HTML PHP
Os envio el codigo que he puesto en los tres archivos como decis.
Pero no me funciona. Me sigue apereciendo los dos textos, italiano y español y no me aparece ninguna bandera. Ademas no intiendo como hay que cargar la s banderas.
Bueno, me estoy aprovechando de vuestra paciencia…espero que podais ayudarme. Me falta solo arreglar esto de los idiomas y luego puedo empezar con mi Blog
Read more »’); ? >
Domenico… sigo sin poder leer tu código… te ruego me lo envíes por mail pues el php sigue procesando tu texto… mi mail lo puedes sacar de la página Acerca de mí…
Gracias por las explicaciones que has dado aquí. He podido instalar el plugin y hacerlo funcionar correctamente.
Dejo por aquí una cosilla. Si queréis quitarle el borde a la imagen de la banderita, tenéis que editar las siguientes líneas:
520
echo "\">". (($flags) ? "" : get_trans($value)) ."“;659
$foo = ($polyglot_settings['use_flags'] ) ? "" : get_trans($lang);
Gracias de nuevo
Wikipedia: plugin
tengo el siguiente codigo para una pagina pero, no me aparece al momento de ver la page, me aparece el codigo y no las banderas ni nada, :’( que puedo hacer???
Gente, en éstos días he recibido varias consultas acerca de la instalación y configuración de éste plugin para wordpress.
Lo cierto es que si bien comento algunas cosas sobre el mismo y muestro parte de la configuración necesaria para que funcione, nunca intentó ser un how-to!
Pero dada la demanda ;) trataré de ser más específico acerca de qué y dónde hay que insertar código para que este plugin salga funcionando! Cabe destacar que con las nuevas versiones de Wordpress aun tiene algunos bugs menores.
Wikipedia: plugin
Polyglot Multi-language para Wordpress…
Este plugin, a diferencia de otros, requiere que el usuario altere ciertas partes de su “tema” de Wordpress para quedar funcional. Eso lamentablemente puede resultar engorroso para algunos usuarios, así que ésto tratará de servirles de g…
Wikipedia: plugin
Hola Perro,
Sé que no estás para ser profe, pero tengo una pregunta fácil que quisiera hacerte.
Necesito traducir el “read more” que te aparece cuando usás la función en un post, y la verdad no sé dónde buscarla… Me podrías dar una mano?
Muchas gracias y felicidades por tu blog!
Diego
www.secretia.com
Hola Perro,
Sé que no estás para hacer de profesor pero tengo un problemilla que probabblemente es fácil de resolver y quizás me puedas ayudar.
Tengo que traducir el “read more” que te aparece cuando usas la función en Wordpress pero no sé dónde editar… Me podrías apuntar en la dirección indicada de casualidad?
Muchas gracias y felicidades por tu blog!
Diego
www.secretia.com/riquezaabsoluta/
En ese caso, debes modificar el .po que está en el wordpress… una forma fácil es descargar una versión de Wordpress en español y subir ese archivo! :)
Buenas! Perdón que moleste, pero sabes si es posible cambiar la CSS o bien la imagen de la cabecera en función del idioma que haya seleccionado el usuario?
Es decir, quiero tener una cabecera para español y otra para inglés (son imágenes que llevan textos dentro).
Mil gracias!
No me queda claro si este plugin sirve sólo para los posts o también para los template tags como cabeceras y demás. Si es así os agradecería una breve expliación, gracias.
Hola, sólo quería decir que language switcher es lo mismo pero mejor documentado, más fácil y sin bugs!
http://poplarware.com/languageplugin.html
y gracias! he descubierto language switcher pasado por vuestro artículo!
GRACIAS! ahora yo he conocido LS gracias a tí! :D Realmente está bueno y mucho mejor documentado!
Esto es lo lindo de compartir conocimiento! Siempre regresa y podemos aprender algo nuevo!
Por cierto, he descubierto xLanguage, que me parece mucho mejor (tiene unas features que renden mucho más rapida la traducción del blog, sobre todo si el blog ya está traducido). El problema es que no consigo instalarlo jejeje, parece un bug o una incompatibilidad poco documentada :-O
Igual pruebalo, a ver que tal.