Qtranslate Slug

Qtranslate Slug is a plugin that extends Qtranslate and allows the existence of permalinks in several languages​​ and fix some Qtranslate deficiencies.


Qtranslate is a nice plugin but unfortunately today is outdated. Qtranslate Slug is an addon to Qtranslate which adds support for permalink translations and fix some Qtranslate deficiencies since wordpress 3.0.


Requirements:

  • WordPress 3.3 (PHP 5.2 and MySQL 5)
  • Qtranslate 2.5.8

Version 1.1:

Advice: If you’re using a multisite installation, you must activate qtranslate plugins by sepparetly on each site.

  • added multisite support
  • fixed some parse url bugs
  • fixed slug bases validation

Version 1.0:

Version 1.0 has been written from scratch using OOP. The code has been structured better, the functions have been marked and commented and everything is better integrated with WordPress API.

  • works with any permalink combination and Qtranslate mode.
  • new branch, the plugin has been rewritten: now the code is commented and wrapped inside a class, much code has change and the performance has been increased (use caches).
  • data system changed, no ID for slug type, then it don’t needs install qtrasnlate_slug table. That means slugs now are stored on meta tables and installation creates a termmeta table with some new core functions to access/save data, based on simple term meta. Upgrade process when the plugin updates from older versions.
  • the plugin generates translated slug automatically from title in empty cases.
  • the plugin checks if the slug already exists (per each language andpost_type/taxonomy), and adds a progressive number in this case. Works on ajax requests for example when new taxonomies are created in edit post page.
  • possibility to translate the base of permastructs for post_types and taxonomies, uses$wp_rewrite. New admin options page for save the base permastructs.
  • added some filters, see in other notes.
  • added plugin language textdomain (.pot file).
  • updated Language selector Widget, and some new conventions like accessible functions for templating.
  • some bug fixes.
  • some Qtranslate patches.

You can also check the project website hosted on GitHub.


If you have any idea or you found a bug, you can post it  in wordpress support forum or open an issue in github repo or simply e-mail me at  (carlos.sanz [at] gmail.com).

If this plugin helped you, also you can donate, thank you very much.


33 thoughts on “Qtranslate Slug

  1. Hi Carlos, thank you very much for this plugin. I have a question, it seems that your plugin does not work with WordPress 3.8.1 When i enter a slug for each language, it doesnt display the new slug when changing languages in the frontend.
    Are you planning to update your plugin soon ? Im am willing to pay/donate for a upgrade so that it works again with WordPress 3.8.1. Please let me know.

    Greetings, Vlad

  2. Hola,
    Fantástico plugin; realmente útil.
    Lo he instalado y funciona correctamente.
    Mi pregunta es acerca del contenido duplicado.
    He traducido los slug de las pàginas pero siguen existiendo las pàginas con el slug antiguo. O sea, que la pàgina de contacto que para el idioma de defecto tiene la url:misitio.com/contacto; para el idioma francés ahora tiene la url: misitio.com/fr/contacter. Pero si en el navegador tecleo la url: misitio.com/fr/contacto sigo viendo la misa página pero con otra url.
    Es este funcionamiento normal?
    Hay alguna forma de evitar el contenido duplicado?
    Muchas gracias!

  3. Thanks for looking into this – the link you sent looks interesting, but I’m not sure of why this is relevant – is this a new project that you’re working on or will this do what I’m asking?

    Gracias Q

  4. Hey – your plugin is 90% perfect for my needs – but I have one extra requirement:

    I have the following permalink patterns for my custom posts types slugs:

    property/%property_type%/%location%

    I replace those placeholders with taxonomy term values via the post_type_link filter – however your plugin also runs this filter and strips out my rules – the settings > slug screen does not allow me to enter my rules there.

    So – I either need a way to stop the sanitzing rules from stripping out the placeholders or a way to enter these values directly – if I do not add values for the post types these rules are still stripped out.

    Any suggestions warmly welcomed – muchas gracias tio!

  5. He encontrado este código que funciona:

    if (function_exists(‘qts_language_menu’) ) qts_language_menu(‘text’, array(‘short’ => true));

    Pero cómo lo hago para que me salga “ES | CA | EN”? Con el código de arriba me sale “es ca en”.

    Gracias!

  6. Perdona, se ha pegado mal el código, lo repito:
    if ( function_exists( ‘qtrans_generateLanguageSelectCode’ ) ) qtrans_generateLanguageSelectCode( ‘text’ )?>jQuery(document).ready(function(){ jQuery(‘.lang-es a span’).html(‘ES |’); jQuery(‘.lang-ca a span’).html(‘CA |’); jQuery(‘.lang-en a span’).html(‘EN’); })

  7. Hola Carlos,
    A mí me pasa lo mismo que a Violeta. En el footer he puesto el widget de idiomas y me funciona perfectamente, pero en el header he puesto:

    jQuery(document).ready(function(){ jQuery(‘.lang-es a span’).html(‘ES |’); jQuery(‘.lang-ca a span’).html(‘CA |’); jQuery(‘.lang-en a span’).html(‘EN’); })

    Y no me encuentra las páginas en los otros idiomas porque no traduce la url. Qué debería cambiar?

    Muchas gracias!,
    Esther

  8. Hola Carlos,

    He creado una web multidioma con Qtranslate y tu genial pluguin qtranslate slug. El problema es que cuando voy al area del header donde he puesto las puesto las banderitas del idioma cuando hago click en idioma solo me incluye la etiqueta lang pero no me traduce la url (ej. mydomain.com/es/holamundo y cuando hago click en inglés se redirecciona a mydomain.com/en/holamundo cuando tendría que ser mydomain.com/en/helloworld). Creo que es un problema del código que tengo puesto que no tiene en cuenta tu pluguin(soy una aficionada…). El código que tengo es el siguiente:

    echo ”;
    foreach(qtrans_getSortedLanguages() as $language) {
    echo ‘‘.$q_config[‘language_name’][$language].’‘;
    }
    echo “”

    Muchas gracias por tu gran trabajo y ayuda! Y perdona si este no es el lugar para hacer este tipo de consultas…

    Un saludo,
    Violeta López

  9. Hola Carlos,
    I love qtranslate slug ! But I have ONE pb due to the plugin. I’m using woocommerce. And in your slug settings options, there is no field for the SHOP page slug. And it’s the only page not working because of permalink pb. How can I add it ? Can you take a quick look ? Please help ! I’m lost with this and sure it can be solved with a small change in your plugin. When I desactivate your plugin, it works. I can explain more in a PM.

    • Hi Natasha,

      for now QtranslateSlug is no compatible with Jigoshop (and obviously Woocommerce) because they have an own system of permastructs, specially on shop page, category product page, and product page… Hope to enhance this in future releases (is in todo list).

      Greetings!

  10. Gran plugin!, actualizado qtranslate a la ultima versión y todo funciona de maravilla.

    Por cierto, es posible añadir la opción de multidominio?, es decir desde preferencias, organizar el idioma por dominio, por ejemplo, castellano en el .es, inglés en el .com, etc…

    Gracias!

    • Hola Oscar,

      es posible, pero este plugin solo gestiona la traducción de las urls, eso es cosa del plugin que se encargue de los idiomas ( en este caso de Qtranslate ).

      Aquí hay un parche que puedes aplicar a Qtranslate para gestionar parseado de dominios, ojo tiene año y medio y habría que probarlo en versiones actuales.

      Espero que sirva.

      • Gracias Carlos,

        Lo acabo de ver, para aplicarlo creo que hay que hacer un merge, sabes si hay algún enlace para añadirlo desde texto plano, copiar y pegar el nuevo código?, o me recomiendas mejor intentar sustituir por ejemplo la opción de qtranslate que combina subdominios por idioma?

        Por cierto en tu versión del plugin no tienes pensado añadir esta opción?

        Un saludo.

      • Puedes pedírselo al usuario que lo hizo, a malas puedes ir punto por punto y cambiarlo tu (aunque no te lo recomiendo).

        Esa funcionalidad justo no la puedo adaptar por que qtranslate ya es antiguo y esa parte no es escalable :(.

        Estoy desarrollando un plugin multiidioma propio, aunque no creo que vea la luz inmediatamente.

        Saludos.

      • Bueno, voy a registrarme en el foro e intentare contactar con el usuario, para ver si me puede pasar el código.

        Pues si necesitas algún betatester para el plugin multiidioma, yo me apunto encantado.

        Muchas gracias!

      • Hola Carlos, añadido el código en los archivos correspondientes, pero me falta modificar el archivo qtranslate-slug, pero al abrir el archivo de la ultima versión no encuentro las lineas que tengo que sustituir, imagino que has modificado el archivo y por eso no las encuentro. Sería muy complejo poder adaptar las modificaciones del antiguo archivo qtranslate-slug al nuevo?

        Gracias y disculpas las molestias!

      • A partir de la versión 1.0, está pensada para que no tengas que modificar nada, te debería funcionar de base por el dominio base lo genera qtranslate y no qtranslate-slug. Pero ya te digo es una modificación que tienes que aplicar a qtranslate y depende la versión que uses y como lo apliques te funcionará o no, nadie te podrá dar soporte, tendrás que ir probando.

        Suerte!

      • Pues con la última versión de Qtranslate y de Qtranslate Slug no funciona. Mañana probaré con otra versión más antigua de Qtranslate, ya te contaré, gracias Carlos!

      • A mi me funciona con qTranslate 2.5.19 sobre WP 3.2 (que no podrás usar en versiones posteriores porque después modificaron el editor y esa parte sería incompatible con 3.3 o 3.4 ). No he probado si el parche podría funcionar sobre las ultimas versiones de qtranslate

      • Bufff, que lastima no poder actualizar la versión de WordPress, por el tema de seguridad. De todas formas mañana pruebo con las versiones que comentas y por la tarde te digo algo, que hoy ya es tarde, gracias de nuevo!

      • Hola Carlos,

        acabo de probar con WordPress 3.2, qTranslate 2.5.19, y qTranslate Sluq 1.0 y nada, ni si quiera consigo configurar qTranslate Sluq 1.0, me dice que no tengo permisos.

        Será cuestión de esperar hasta que algún día salga el plugin perfecto 🙂

        Gracias por todo!

    • De momento la compatibilidad con otros plugins es limitada, sobretodo aquellos que modifican los permastructs.
      El error seguramente debe venir a que la galeria que estas usando no es compatible con qtranslate, por lo que no debe aplicar los filtros necesarios para que traduzca los titulos o enlaces… Si me pones un ejemplo on-line para que lo pueda mirar lo mismo acotamos más donde falla.
      Saludos!

  11. Hola Carlos,
    me estoy iniciando en wordpress y estoy utilizando “Qtranslate Slug” para un proyecto, y tengo un pequeño problema la web es en Cátala y Castellano tengo una galería con diferentes categorías “coches – electrónica – regalos” en castellano funciona pero cuando cambio a cátala no me muestra los enlaces de las categorías.
    ¿Dónde puede estar el error?
    Un saludo
    Te adjunto como tengo las categorías
    http://ge.tt/3RTcc1K/v/0?c

  12. Pingback: WordPress Multi-idioma | Coding Something

  13. Pingback: Wordpress plugin: Qtranslate Slug | Coding Something…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s