El plugin QTranslate es un buen complemento gratuito para la traducción de sitios web en Wordpress en varios idiomas, pero lamentablemente tiene de algunas carencias importantes en la actualidad. Más información sobre incluir banderas y cambiar tamaño con qtranslate en este enlace.
Para resolver estos pequeños inconvenientes tenemos el addon para qtranslate llamado qtranslate Slug. Esta herramienta añade soporte para las traducciones de las URL/permalinks y corrige algunas deficiencias que tiene qtranslate.
Es importante saber que este plugin requiere de tener qtranslate instalado previamente, si no, no se activará.
Para hacer uso del plugin debemos de hacer lo siguiente:
- Subimos qtranslate-slug a la carpeta /wp-content/plugins/
- Activamos el plugin a través del menú de «plugins» en el panel de admin WordPress.
- Todo listo
Cambiar la base permastructs
- En el administrador navega por las opciones de Configuración > Slug options.
- Establece la base permastructs para las entradas y taxonomías (Si necesitas establecer una base permastruct para las categorías o etiquetas diríjete a Ajustes > Enlaces permanentes, éstos serán reemplazados por los que serán traducidos).
- Guardar los ajustes y listo.
Las preguntas mas frecuentes sobre este plugin:
Funciona con entradas y páginas, ¿pero con otro tipo de contenidos?
El plugin permite traducir los slug de: entradas, páginas, tipos de mensaje personalizados, categorías, etiquetas y taxonomías personalizadas.
¿Tengo que configurar algo?
Si necesitas traducir también los permastructs (ej. categoría , etiquetas, etc.) Visita la página de configuración del plugin en las opciones de configuración > Slug optins
¿Cómo puedo insertar un selector de idioma en mi tema?
Se puede optar por utilizar qtranslate Slug Widget en el sidebar o insertar en este código en el lugar de la plantilla que quieres que se muestre.
<?php if (function_exists('qts_language_menu') ) qts_language_menu('text'); ?>
Las opciones son: dropdown, text, image, y both.
Aparece un error 404, ¿qué puedo hacer?
En el administrador vete a Configuración > Enlaces permanentes u opciones de Configuración > Slug y a guardar.
No puedo manejar traducciones en Nav Menús.
Esto es porque el selector de idioma METABOX está oculto, este se encuentra en la pantalla de los menús de navegación del administrador, pulsa el botón opciones de pantalla (en la parte superior derecha) y después marca la opción Idiomas. Aparecerá un cuadro de idioma en la parte superior de la barra lateral izquierda.
Umc dice
Hola, que buena guía. Menos mal que la he encontrado, ya no sabía que más probar!!!
Quería hacer una consulta.
Así como en Qtranslate, le puedes aportar un estilo en css para que el menú idioma aparezca en horizontal, que código habría que poner para conseguirlo con qts_language_menu?
Muchas gracias
Saludos
Pedro Mendez dice
Hola. Pues no he tocado el CSS para este plugin. Aunque para hacer cambios te recomiendo la herramienta Firebug, la cual permite mostrar el código CSS del archivo y hacer cambios para ver como queda antes de tocar el archivo de forma definitiva
Excelente !!! me resultó cambiar los enlaces permanentes ya que el tema tiene un constructor en ingles y en vez de q la URL apareciera /services ahora lo puso en español /servicios. Genial !!!
Muchas gracias.
Gracias a ti Patricio. Me alegro de que te sirva. Saludos!
Hola… genial tu blog los tengo en mi lector de rss. Soy Patricio del comentario anterior jeje.
Tengo un problema, al revisar mi pagina de blog de mi sitio no muestra un post que tengo (solo 1 por ahora) y aparece un error en una linea del archivo. Catchable fatal error: Object of class WP_Post could not be converted to string «wp-content/plugins/qtranslate/qtranslate_core.php on line 455» lo que entiendo es que no retorna el formato de fecha y se cae. Revise las opciones avanzadas y tengo marcada la opción «Utilizar función de fecha emulada.»
En el foro de qtranslate hay algo referente a eso y sugiere agregar o reemplazar el código con qtrans_formatPostDateTime ($ format).
¿Sabes como resolverlo?
Gracias de ante mano.
Hola Patricio. Por lo que he visto qTranslate registra la función qtrans_dateFromPostForCurrentLanguage($old_date, $format =», $before = », $after = ») para el gancho get_the_date , pero en realidad sólo acepta un parámetro. Con la nueva actualización se acepta un segundo parámetro $ post, que ahora llena erróneamente el $ before antes de que encuentra el proceso que se convierte en una cadena. Aquí esta la posible solución. Tienes que cambiar el código en rojo por el verde que viene en este Github: https://gist.github.com/akirk/10979790#file-qtranslate_core-php-diff .
Así que la solución es simplemente eliminar los dos parámetros que fueron asignados al sentido equivocado y tienen valores predeterminados de todos modos. Ya me cuentas si te sirve. Saludos!
Si me resultó muchas gracias, pero apareció otro problemilla al ingresar al post no aparece bien la fecha creada, en vez de eso aparece esto «Posted on %d 18UTC %B 18UTC %Y» Sale posted porque aun no he traducido esa parte pero en vez de esos códigos debería salir el formato de fecha del post creado. 🙁
Otra vez muchas gracias.
Hola Patricio. Mira a ver si esto lo soluciona http://www.mat.ucm.es/gabinete/?p=150
Pedro gracias ahí se solucionó, no quise meter mano en esa opción así que todo bien ahora.
Muchas gracias.
Estupendo! Me alegro que lo tengas solucionado
Cambio de URLS en cada idioma.
El tema me han consultado para ver si se pueden cambiar las URLS en qtranslate, y tambien esta instalado el plugin q translate slug.
Está en tres idiomas, catalan, castellano y ingles pero por defecto carga en catalán.
Al hacer pruebas y poner el idioma de cada página distinga en la slug de cada página, al pulsar y cambiar de idioma sale bien pero al cambiar de botón si de un idioma a otro, sale esta url:
pulsamos de inglés a castellano y sale esta url: domininio/en/about-us/?lang=es
en lugar de salir esta: domininio/es/sobre-nosotros/
Entonces arroja este error
mensaje
Page Not Found
The page you are looking for was not found. Perhaps try searching?
Saben cómo se puede solucionar esto?¿ las paginas ya están creadas pero ahora desean modificar las URLS a cada idioma cosa que q translator no hace, necesita el slug, pero este arroja este error si canvias de inglés por ejemploa a castellano desde la misma página.
Pueden darme alguna pauta de cómo se puede resolver?¿
Gracias
Hola Janina. Pues si no recuerdo mal se puede cambiar el slug en las opciones principales del plugin. Mira a ver como lo tienes configurado, y si lo tienes para que salgan las palabras claves y no la variable del idioma
Hola Pedro, ahí el problema que no lo he manejado nunca, y no hay nada configurado en el qtranslation-slug, sólo que puse esas palabras para ver si cambiaba correctamente las URLS en otro idioma y si lo hace pero arroja ese problema al cambiar de idioma en la misma página.
Si me puedes indicar cómo debo configurarlo y donde, hablo de nombres de páginas fijas no de los posts, en principo.
Donde debo configurarlo en el qtranslation o en el qtranslation-slug y donde?¿
He mirado en Qtranslate Slug options y no hay nada, donde debo configurarlo?¿
Muchas gracias, por responder y la ayuda.
¿Me puedes decir cual es la web? De antenamo te puedo decir que qtranslate ha dejado de tener apoyo por parte de los desarrolladores. Ahora hay una versión complementaria que se llama qtranslate plus y es por eso que te puede dar errores
Te la puedo enviar en correo privado? gracias…
Buenos días,
Ante todo, muchas felicidades por esta publicación y todo el conocimiento que aportado.
Estamos teniendo problemas con la traducción de las URLS y los productos de woocomerce. Cuando entramos en la página en versión inglesa, si vamos a la tienda, elegimos un producto y entramos, nos dice que esa página no existe. Es normal, dado que busca en http://www.experience.climbo.rocks/products/producto-x . Por otra parte, si entramos en la versión en español, llegamos hasta el mismo producto, y pedimos que cambie a la versión en inglés, entonces entra bien a la URL http://www.experience.climbo.rocks/en/producto/producto-x.
Hay alguna forma de cambiar esa parte de la URL (no el SLUG), que se cambia sola?
Muchas gracias de antemano