June 23, 2010

Qtranslate tutorial

by Karine in Wordpress with 44 responses

Here is a quick Qtranslate tutorial for those who are a bit lost. I don't know if it's the best plugin for a multilanguage website, it depends on your needs, but for me, it was by far the best choice! :D

  • Have the same URL for posts (write only one post, not several)
  • Be able to translate everything: categories, templates, etc.
  • Clean URL: /en/postname for example

Cons:

  • The post URL is only in one language => this if fixed with qtranslate-slug plugin

Installation

Install Qtranslate and choose the languages you want to enable/disable or delete.

Qtranslate languages

In the advanced options, you can choose the type of URL you want. I chose pre-path mode because it's prettier.

Qtranslate url

If you already have categories and tags, you will have to edit them to translate them. When you add new categories, don't forget their translations !

Qtranslate tags

Usage

Note: I will use x1 and x2 instead of en and fr to not mess up my codes (since Qtranslate recognize them if I put en & fr).

How to change the blog title?

Just write [:x1]English title[:x2]Titre français directly in the blog title input on WordPress. x1 and x2 are your languages of course (en and fr for example). It should also work for widgets and some plugins like All in One SEO Pack.

How to insert multilanguages text in my theme ?

<?php _e('[:x1]English text[:x2]Texte en français'); ?>

You can use this code for almost everything. Let's say a different stylesheet for each language:

<?php _e('[:x1][:x2]'); ?>

How to translate WordPress template tags ?

Let's translate the_content() :

<?php the_content(__('[:x1]Lire la suite[:x2]Read more')); ?>

This code snippet will show the correct translation of the "Read more" text if you have decided to show only excerpts on your blog. An other example with edit_post_link() :

<?php edit_post_link(__('[:x1]Modifier[:x2]Edit'), '', ' | '); ?>

How to display a language chooser with flags ?

Insert this code wherever you want the language chooser to be:

<?php echo qtrans_generateLanguageSelectCode('image'); ?>

You can style it with CSS:

.qtrans_language_chooser { list-style-type:none; }
.qtrans_language_chooser li { float : left; margin-right: 20px; }

If you want to only display the flag of the inactive language, add this code to your CSS:

.qtrans_language_chooser li.active { display : none; }

If you don't want flags and simply text, use this code instead:

<?php echo qtrans_generateLanguageSelectCode('text'); ?>

Be Sociable, Share!

Tags

44 thoughts

  1. Thomas
    on June 30, 2010
    at %I:%M %p

    Are you running WP3 with the qTranslate 2.5.7, just curious?

    Reply
    • Karine
      on June 30, 2010
      at %I:%M %p

      Hello, that's right, I'm using qtranslate 2.5.7 with WordPress 3.0 :) It worked without tweaks with some minor bugs, but I modified its code a bit !

  2. Mathieu
    on July 2, 2010
    at %I:%M %p

    Bonjour, merci pour votre tuto qui m'a beaucoup aidé sur l'utilisation de qTranslate pour WP :)

    Je me retrouve actuellement dans le probleme du slug multilingue , j'ai bien installé mon plugin qTranslate Slug, mais toujours le même probleme de slug , uniquement dans la langue par défaut.

    Pourriez vous me détailler quelque peu la maniere d'utiliser ce plugin , ou les eventuels points que j'aurais pu oublier ?

    Merci beaucoup pour votre tuto , et pour la qualité de votre blog.

    A bientot

    Reply
    • Mathieu
      on July 2, 2010
      at %I:%M %p

      Bonjour,

      Désolé de me répondre tout seul sur votre blog , mais je suis arrivé a faire fonctionner ce cher plugin ! il me reste cependant encore un tâche a effectuer , qui ne fonctionne pas chez moi mais qui fonctionne chez vous.

      Tout d'abord ma config , wordpress 2.9.2 , avec la dernière version de qTranslate. Mon probleme ,en clair , lorsque je suis sur une page du type http://mon.url/en/my-page et que je change de langue , il me redirige vers http://mon.url/fr/my-page alors que la logique voudrait qu'il m'emmene sur http://mon.url/fr/MA-page...

      Cela fonctionne parfaitement pour les articles et non pas pour les pages... Auriez vous une idée ? ;)

    • Karine
      on July 2, 2010
      at %I:%M %p

      Bonjour ! Contente que ça ait aidé quelqu'un ! :) Malheureusement pour l'histoire de fr/my-page, il n'y a pas encore de solution ! Je tenterai de tweaker le plugin quand j'aurai le temps mais ce n'est pas dans l'immédiat :)

    • Mathieu
      on July 5, 2010
      at %I:%M %p

      Bonjour, merci de votre réponse , je vais donc tenter de me lancer dans une grosse séance de débugging pour tenter d'optimiser ce fonctionnement ! Si j'y repense , je repasserais par votre blog pour vous informer ! Encore merci ;)

  3. Pingback
  4. Cyberto
    on October 9, 2010
    at %I:%M %p

    Hi!
    I have a problem with this plugin and wrote it to the offical forum but didn't got an answer so far. My problem is that the plugin doesn't add fields to the admin "edit" and "add new" site or article... There is just one field for example the title: Title
    I think it should convert the into a new field but it doesn't
    Thanks for the reply

    Reply
  5. Jeremy
    on November 9, 2010
    at %I:%M %p

    Hi,

    I am using the MM Forms plugin with WordPress 2.8.5. How do use qtranslate to enable different languages from within my form definition?

    I tried:

    [text your-name class:regField "Name"][email* your-email class:regField "*Email"]<td title = "">[submit]
    [text browser id:browser class:hiddenField][text version id:version class:hiddenField][text os id:os class:hiddenField][text param id:param class:hiddenField]

    But the 'title' attribute of the just shows unparsed text containing the PHP statement.

    Many thanks
    Jeremy

    Reply
  6. megainfo
    on February 10, 2011
    at %I:%M %p

    salut essai cela!

    pour buddypress , veuillez utilser ce hack :

    //comment out next line, otherwise 404 page is displayed
    //add_filter('clean_url', 'qtrans_convertURL');
    //include language slug in all URL's
    add_filter('bp_core_get_root_domain', 'qtrans_convertURL');

    Reply
  7. Mathieu
    on March 8, 2011
    at %I:%M %p

    Hello.
    Merci pour ce tutoriel qTranslate !
    Mais après passé 10heures sans solutions, je me permets d'appeler à l'aide.... En effet, je souhaite mettre les drapeaux des langues en les intégrants dans la barre des Menus WP, ou alors à la suite, mais impossible. J'ai beau essayé d'insérer des div, je n'arrive pas à placer le code qtrans_generateLanguageSelectCode('image');

    Si une personne a une petite, euh une grande idée, voici le code qui se trouve dans le header.php

    '', 'theme_location' => 'primary', 'fallback_cb' => 'mtheme_nav_fallback'));
    }
    //qtrans_generateLanguageSelectCode('image');
    else {
    // Else show the regular Menu
    include (TEMPLATEPATH . "/includes/menu.php");
    }

    ?>

    <a href="">
    <?php if ($mtheme_logo"") { ?>
    <img src="" alt="logo" />

    <img src="" alt="logo" />

    Reply
    • Mathieu
      on March 8, 2011
      at %I:%M %p

      Oups, le code ne s'est pas mis en entier et pas en format code... comment puis-je faire ?

  8. Miguel
    on June 8, 2011
    at %I:%M %p

    Hi everyone!

    Is possible to use the dropdown menu only with the flags images?

    Thanks

    Reply
  9. Miguel
    on June 10, 2011
    at %I:%M %p

    I'm having difficulties to only display the flag of the inactive language! Can anyone help me?
    My css styles are: (every line works well, apart from the " li.active")
    Thanks

    .qtrans_language_chooser { list-style-type:none; }
    .qtrans_language_chooser li { float: right; margin-left: 5px; display:inline; }
    .qtrans_language_chooser li.active { display:none; }
    .qtrans_flag { border:1px solid #ffffff;
    -moz-border-radius: 2px;
    -webkit-border-radius: 2px;
    -khtml-border-radius: 2px;
    border-radius: 2px;
    }

    Reply
  10. jean
    on July 6, 2011
    at %I:%M %p

    hello,
    merci pour toutes ces astuces !
    par contre, pour changer les titles des pages lorsque l'on utilise l'excellent plugin SEO (et donc le champ Custom Post Title). Là pour avoir un titre en plusieurs, comment fait-on ?
    les [:x1]
    ou Bonjour Hello ne sont pas gérés :
    cela donne en title : Bonjour Hello
    tu aurai une idée ?
    merci encore pour tout,

    Jean

    Reply
  11. Caroline M.
    on July 8, 2011
    at %I:%M %p

    Hello tout le monde!
    Ce blog à l'air très actif et je me tente d'appeler à l'aide.
    J'ai installé la version de WordPress 3.2.0 et mis en place la dernière version du plug-in de qTranlate 2.5.22, qui sont sensé à priori bien fonctionner ensemble.
    Tout marche très bien jusqu'au moment où je souhaites me rendre sur la page "Catégories" où ma page est carrément "gelée", c'est à dire elle est affichée, mais le navigateur continue à essayer de la charger et on ne peut plus rien faire et plus cliquer sur aucun lien (et encore moins sélectionner une catégorie).
    Qd le plug-in est désactivé la rubrique "Catégorie" fonctionne très bien.
    J'ai déjà tenté de désactiver ts les autres plug-in et de réinstaller qTranslate, mais rien à faire.
    Quelqu'un aurait-il une explication, ou encore mieux une esquisse de solution?
    Merci d'avance
    c.

    Reply
  12. YeuHost
    on August 22, 2011
    at %I:%M %p

    A embed code like [x1], [x2] isn't work on my theme.

    Reply
  13. Heder
    on September 2, 2011
    at %I:%M %p

    Hello,

    Merci pour cette article, très très utile, cependant il une question qui n'a pas été soulevé (ou je ne l'ai pas trouvé).

    Comment traduire les nouages de mots ????

    Merci d'avance.

    Heder

    Reply
  14. Patrice
    on September 17, 2011
    at %I:%M %p

    Salut Karine,

    J'ai une question, j'ai installer qtranslate mais une fois que je vais
    dans les Paramètres avancés, choisissez le mode de modification de l'URL que vous préférez, j'utilise le mode chemin car il correspond à la structure de permalien que j'ai choisi.

    Une fois que j,ai fait ceci je sauvegarde mais il me revient encore pas défault, il me revien a USE QUERY MODE COMMENT ARRANGER CELA , EST LES PERMISSIONS?

    Reply
  15. elaine
    on September 21, 2011
    at %I:%M %p

    Hi Karine,

    I'm running WordPress 3.2.1 and Qtranslate 2.5.24

    In my dashboard, I don't see the fields for translating tags (you have it shown at the end of the installation section)

    I've got the posts to work fine with English and French. Now I need to get the other text elements to change language (ie. the text in side bar, comments, etc). Could you explain a bit further on how [:x1] and [:x2] works and where I should be inserting this code? Does it involve child themes?

    Many thanks.

    Elaine

    Reply
    • elaine
      on September 21, 2011
      at %I:%M %p

      After reading more articles, I know understand that you use [:x1] and [:x2] to substitute the actual language codes in order for them to read/render on the webpage.

      I'm still trying to figure out how to translate the other items on the page.

      Any guidance would be appreciated!
      Elaine

  16. Deva
    on September 25, 2011
    at %I:%M %p

    Awesome, thank you very much!!!!

    Reply
  17. Deva
    on October 3, 2011
    at %I:%M %p

    Hello there!
    I hope you can help me with this. I'm using a premium WordPress theme called "Display" which has following code for "read more" link:

    echo 'Read more';

    Is it possible to change it somehow so it can work with qTranslate?
    Thank you in advance!

    Reply
    • Deva
      on October 4, 2011
      at %I:%M %p

      I just realized that I wrote a code in a wrong way :)
      "Read more" link code looks like this:
      echo '<a href="'.get_permalink().'"class="more-link">Read more</a>';

  18. Jb
    on October 20, 2011
    at %I:%M %p

    Bonjour,
    merci pour ce tuto. J'aimerai connaître pour le CSS : sur quel CSS travaillez-vous ? En ce qui me concerne, je travaille sur le CSS "Style.css", et je copie le code à la fin de mon fichier, mais il ne veut rien prendre en compte. Avez-vous une idée ?
    Merci à tous.

    Reply
  19. Eddy
    on November 14, 2011
    at %I:%M %p

    Bonjour,
    Une chose que je ne comprends pas et sur lequel, je ne trouve pas de solutions, ce sont les liens internes dans WordPress 3.
    Maintenant que WordPress nous permet de faire des liens internes rapidement, je suis obligé d'aller transformer l'url à la main pour ne pas être redirigé vers la langue par défaut. J'ai vu des hacks pour le plugin link-to, mais j'aimerai autant ne pas hacker les fichiers de WP.
    Une idée ?
    Merci

    Reply
  20. Claire
    on November 18, 2011
    at %I:%M %p

    Bonjour,

    Merci pour cet article, tu as un blog vraiment très intéressant.

    J'aurai une question, j'ai cherché un peu partout sur le web, mais je ne trouve pas de réponse.
    Je travaille avec qtranslate, tout fonctionne bien, sauf que je n'arrive pas à afficher les images des drapeaux. J'ai inséré le choix des langues via Widget, en cochant bien "Image et Texte" mais cela n'affiche que le texte.

    J'ai essayé avec le bout de code :

    toujours rien. (par contre même en essayant d'afficher le texte avec cette même ligne de code en prenant "text" en argument, ne m'affiche pas le texte non plus...)
    Si vous avez une réponse, je suis preneuse ! Merci bien

    Reply
  21. steven
    on December 13, 2011
    at %I:%M %p

    i just dont get it - where are you supposed to put this line of code to make the language selector show up at the very top right of your WP site?

    theme options - color & fonts?
    style.css?
    functions.php ???

    Reply
    • Karine
      on December 20, 2011
      at %I:%M %p

      Hello, you need to put it in your theme files, like header.php for example

  22. Robert Klein
    on December 30, 2011
    at %I:%M %p

    Thanks. Helped a lot.

    Reply
  23. Julie
    on January 20, 2012
    at %I:%M %p

    Bonjour,

    Merci pour cet article très intéressant.

    Quelqu'un utilise qtranslate avec les sous domaines ?

    Pour moi cela ne fonctionne pas et je ne connais pas le paramétrage à mettre en place.

    Merci d'avance pour votre aide

    Reply
    • Karine
      on January 29, 2012
      at %I:%M %p

      Bonjour Julie, j'ai testé sur un sous-domaine, ça devrait fonctionner de la même façon... Quels problèmes as-tu ?

  24. Julie
    on January 30, 2012
    at %I:%M %p

    Bonjour Karine, lorsque je mets en place les sous-domaines les pages sont bien redirigées vers fr.mondomaine.com mais à ce moment là je n’obtiens qu'une page blanche, aucun contenu.
    Hormis la création des sous-domaines faut'il faire quelque chose de spécial ? Merci pour ton retour :)

    Reply
  25. Jean
    on February 20, 2012
    at %I:%M %p

    Bonjour, et merci pour cet article...
    j'ai une question concernant l'utilisation de ce plugin, mais je ne trouve nulle part la réponse.
    Je voudrais qu'en cas de non traduction de l'article, celui-ci s'affiche automatiquement dans la langue par défaut (en gros la totalité de mon site est en francais mais certains contenus sont traduits en Anglais. Je voudrais que si les contenus n'existent pas en Anglais, ils s'affichent d'office en Francais).
    D'avance, merci

    Reply
  26. myput
    on March 11, 2012
    at %I:%M %p

    salut, merci pour l'article, il ma's bien aide, j'ai juste un probleme que je n'arrive pas a regler avec QTranslate. Peux on mettre des variables?
    j'ai des variables a traduire, par exemple dans mon formulaire de contact:
    if(trim($_POST['contactName']) === '') {
    $nameError = 'Please enter your name.';
    ...

    j'ai essaye avec:
    $nameError = '[:en]Please enter your name.[:fr]Entrez votre nom svp.';

    mais ca ne marche pas....
    avez vous une solution svp?

    merci par avance

    Reply
    • Karine
      on March 11, 2012
      at %I:%M %p

      Bonjour,

      Es-tu obligé d'utiliser une variable ? Je ferais plutôt comme ça :

      if(trim($_POST['contactName']) === '') {
      _e('[:x1]Please enter your name.[:x2]Entrez votre nom svp.');
      }

    • myput
      on March 12, 2012
      at %I:%M %p

      Merci pour la reponse rapide :) oui j'ai pu me debrouiller pour les variables simples du formulaire, mais j'ai encore en soucis avec les variables:

      $empty = 'data-empty="'.__('No more posts available.', 'framework').'" ';

      Peux on les traduires ?

      Merci d'avance

  27. maurizio
    on April 2, 2012
    at %I:%M %p

    Hi i use WP 3.3.1 and qTransate 2.5.28 and maybe i've found a bug..
    default language: IT , other language : EN.
    if i insert the "more tag" in a post (both IN ITA-ENGLISH TAB),after i save the post and i want to see the english tab i loose the content in it, and i see only the tag more.. if i remove the "more tag" , all backs to normal and works fine.. how can i solve it?
    thanks Maurizio

    Reply
  28. aem
    on April 13, 2012
    at %I:%M %p

    question …

    je vais devoir intégrer le plugin wpml ou qtranslate pour un site multilangue et j'ai du mal à choisir …

    le prix n'est pas nécessairement un pb, mais si qtranslate est OK autant l'utiliser !

    la question se situe surtout au niveau SEO, j'ai lu que WPML traduit automatiquement les postnam (texte des URL), est ce que qTranslate le permet directment ? par un plugin ?

    Merci

    Sebastien

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.

↑ Back to Top