Posts taggés CMS

drupal

Fonctionnement du multilinguisme dans le CMS Drupal 7 (2 sur 2)

0

Cet article fait suite à l’article : http://blog.webnet.fr/multilinguisme-avec-drupal-7-partie-1/

 

Les différentes méthodes de traduction

La traduction : node-level

 

Ce niveau de traduction est fourni par le module présent dans le cœur de Drupal : « Content Translation ». Il a pour caractéristique de créer un nouveau nœud à chaque traduction et d’associer les nœuds entre eux grâce à des identifiants de traduction appelés « tnid ». Afin de mieux comprendre ce concept nous allons prendre un exemple concret. Tout comme la précédente traduction, il faut spécifier à Drupal la caractéristique multilingue souhaitée aux types de contenu concernés : ici elle est activé avec la « traduction ».

drupal-multilingue-image-09

Lorsque l’option multilingue avec traductions est activée il est possible de sélectionner la langue d’un nœud lors de sa création ou de son édition. Si une langue est définit, un nouvel onglet « Traduire » apparait.

 

drupal-multilingue-image-10

drupal-multilingue-image-11

 

L’ajout d’une traduction engendre la création d’un nouveau nœud. Le tableau ci-dessous présente les données enregistrées en base :

Identifiant du nœud

Langue

Identifiant de traduction

ID – nœud FR

FR

ID – nœud FR

ID – nœud EN

EN

ID – nœud FR

Le précédent tableau est donc construit de la façon suivante : Drupal recherche l’ensemble des nœuds ayant pour identifiant de traduction, l’identifiant du nœud courant et applique le suffixe « (source) » au nœud possédant son identifiant en « identifiant de traduction ».

Les nœuds étant indépendants les uns des autres, si la source est supprimée, le nœud traduit possédant l’identifiant le plus petit devient source à son tour. Dans le cas d’une erreur de suppression pas de panique ! Le module « Multilingual content » vient à votre secours car il permet de rattacher via un champ d’auto complétion, un nœud existant comme traduction possible :

 drupal-multilingue-image-12

L’avantage de la traduction node-level est qu’elle permet de notifier à l’utilisateur qu’une traduction est périmée ou que l’ensemble des traductions d’une source sont périmées. Pour cela il suffit de se rendre sur l’édition d’un contenu et de cocher la case située dans les paramètres de traduction :

drupal-multilingue-image-13

(Traduction non-source)

L’état des traductions est visible en se positionnant sur l’onglet « Traduire » d’un des nœuds. Pour les curieux sachez que cet état est défini dans le champ « Translate » de la table « node ».

drupal-multilingue-image-15

 Les avantages de cette méthode sont les suivants :

  • Les nœuds peuvent être configurés indépendamment les uns des autres ;
  • Elle permet la création d’un menu asymétrique par langage car les items de menu sont saisis sur la page d’édition des nœuds ;
  • Cette méthode étant celle présente dans le corps elle est plus adaptée pour les fonctionnalités natives basées sur les nœuds telles que la recherche ;
  • Elle notifie l’utilisateur lorsqu’une traduction doit-être mise à jour ;

 

Les inconvénients de cette méthode sont les suivants :

  • Tous les éléments constituant un nœud sont spécifiques à un langage : si un nœud a la même image, quelle que soit sa traduction, l’image devra être dupliquée autant de fois que de traductions;
  • Il est nécessaire de synchroniser les données entre les nœuds ;
  • Cela génère un nombre importants de nœuds ;
  • Ne fonctionne que pour les nœuds ;

 

La translation : field-level

 

Ce niveau de traduction est fourni par module contributeur : « Entity Translation ».

Il permet la traduction du contenu par champ. Afin de mieux comprendre ce concept nous allons, là-aussi prendre un exemple concret. Nous allons directement aller spécifier à Drupal la caractéristique multilingue souhaitée aux types de contenu concernés : « Enabled, with field translation ».

drupal-multilingue-image-16

La traduction se faisant par champ, il est désormais nécessaire de spécifier quel champ doit-être traduit. L’avantage c’est que l’on peut garder des champs communs aux différentes langues.

 

drupal-multilingue-image-17

Attention toutefois le titre n’est pas un champ mais une propriété. Pour traduire cette propriété il vous faut activer le module « Title » qui offre la possibilité de remplacer la propriété par un champ d’instance personnalisable. Cette manipulation se fait toujours au niveau du type de contenu.

 

drupal-multilingue-image-18

 

Une fois ces manipulations effectuées, vous verrez apparaitre sur la page de création ou d’édition d’un nœud une annotation à côté des labels de certains champs : « (toutes les langues) ». Cette dernière précise que le champ concerné est unique pour l’ensemble des contenus traduits. Dans le cas contraire votre champ est spécifique à la langue courante (qui apparait entre crochets suffixé au titre de la page).

L’interface vous permet de passer d’une langue à l’autre grâce aux onglets situés en haut à droite de la page, et vous avez aussi accès à l’onglet « Traduire ».

 

drupal-multilingue-image-19

 

Faites attention à ne pas confondre avec l’autre méthode. Il n’y a pas de notion de duplication ici, l’ensemble des traductions d’un nœud sont rattachées à un même identifiant. Si vous supprimez le nœud, toutes vos traductions seront perdues.

« Entity Translation » offre plusieurs options de configuration dont les possibilités de :

  • Choisir une langue par défaut
  • Masquer le sélecteur de langue ;
  • Verrouiller la langue d’un contenu une fois que ce dernier est créé ;
  • Cacher les éléments partagés sur les pages de traductions afin d’éviter les confusions ;

 

drupal-multilingue-image-20

 

Enfin, le plus intéressant reste que cette méthode s’applique aux entités et non aux nœuds seuls. En effet, tout dans Drupal peut être vu comme une entité ce qui n’est pas le cas pour les nœuds. Ainsi il est possible de traduire par champs les commentaires, les nœuds, les termes de taxonomie et les utilisateurs.

 

Les avantages de cette méthode sont les suivants :

  • Offre un meilleur modèle pour les contenus à langage neutre ;
  • Pas de synchronisation nécessaire ;
  • Un seul identifiant de nœud ;
  • Fonctionne avec toutes les entités (en somme Drupal) ;

 

 Les inconvénients de cette méthode sont les suivants :

  • Ne fonctionne pas avec les fonctionnalités natives telles que la recherche ou les révisions ;
  • N’est pas compatible avec  les options des nœuds ou la sélection multilingue de i18n ;
  • Les propriétés ne peuvent être traduite (entrée de menu, …etc.) ;

 

Mon avis

 

Le multilingue sous Drupal n’est pas une notion complexe à appréhender mais reste déroutant pour certain. Comme vu dans ce guide, la difficulté réside plus dans la détermination des besoins que dans la mise en place de la solution. Reste, pour ma part, une préférence certaine pour le type de traduction field-level, plus flexible, plus simple à maintenir et plus accessible dans le cadre de développements spécifiques.

Une bonne nouvelle en conclusion de ce guide : le système de multilingue sera complètement refondu avec l’arrivée de Drupal 8 !

Fonctionnement du multilinguisme dans le CMS Drupal 7 (1 sur 2)

0

Ce guide a pour but de présenter le fonctionnement du multilinguisme dans Drupal 7.

Les concepts

 

« L’Internationalization » permet la localisation, autrement dit, la traduction et l’adaptation, de n’importe quel élément constitutif d’un site Drupal (menu, block, …etc.).

Si un élément est associé à une langue : on parle alors d’élément « localisé ».

 La « Localization » consiste à adapter un site internet  à une certaine langue,  incluant :

  • La traduction des textes et visuels ;
  • La gestion des formats de date ;
  • La gestion des devises et des systèmes d’unités ;
  • La gestion des fuseaux horaires ;

Il existe différentes façon de créer un site multilingue sous Drupal. Afin de s’y retrouver il est important de déterminer dans un premier temps quel type de site on souhaite mettre en place :

  • Combien de langages sont supportés ?
  • L’interface utilisateur doit-elle être intégralement traduite ?
  • Y a-t-il du contenu pour toutes les langues ? Tout le contenu doit-il être traduit ?
  • Qu’arrive-t-il au contenu non traduit ?

« Pas de panique ce guide est là pour vous orienter ! »

 

Les trois types de site multilingue

 

En effet malgré ces questions, il s’avère qu’il n’existe que 3 grands types de site multilingue.

 

Premier cas :    Le site langue étrangère

 

C’est un fait, dans Drupal toute personne non anglophone est considérée comme « étrangère ». En effet notre CMS préféré a été écrit dans la langue de Shakespeare et a fait de cette dernière sa langue maternelle.

Si vous souhaitez donc traduire l’interface pour faciliter la prise en main du backoffice par votre utilisateur final vous devrez passer par le module « I10n ».

Une fois le module activé, il vous sera possible d’ajouter la langue de votre choix en vous dirigeant vers le menu de configuration des langues.

« Configuration > Regional and Language > Languages »

 

drupal-multilingue-image-01

Une fois la langue sélectionnée l’ajout est automatique.

 

drupal-multilingue-image-02

 

Il ne vous manque plus qu’à sélectionner la langue ajouter comme celle étant par défaut… cocorico !

 

drupal-multilingue-image-03

 

 

La langue dans laquelle le contenu est saisi importe peu. Drupal ne fait pas de vérification linguistique et la traduction ici ne se limite qu’à l’interface. C’est en soit, je vous l’accorde, un faux multilingue. Passons donc aux choses sérieuses !

 

Deuxième cas : le site multilingue

 

Ce type de site est très peu utilisé car cela revient à avoir plusieurs sites en 1 sans liens d’associations entre les contenus localisés. Nous allons quand même nous y attarder afin de comprendre le fonctionnement du module « i18n ».

Il nous faut dans un premier temps traduire l’interface, et pour cela vous connaissez le chemin (cf. chapitre ci-dessus). Nous allons ensuite pousser la configuration plus loin afin de détecter la langue de l’utilisateur et afficher ainsi le contenu associé à cette langue.

La détection : admin/config/regional/language/configure

 

drupal-multilingue-image-04

 

Drupal offre par défaut plusieurs moyens de détection pour  la langue de l’utilisateur ; la plus courante étant la détection via l’URL que ce soit par un nom de domaine (fr.mon-site.com, mon-site.fr, mon-site.en, …) ou un préfixe de chemin (mon-site/fr, mon-site/en, …).

 

 drupal-multilingue-image-05

 

Une fois l’option de détection choisie, les configurations s’effectuent indépendamment au niveau de chaque langue. Dans notre cas, l’option importante à saisir est soit le « Code de la langue du préfixe de chemin » soit le « Domaine de la langue ». Suivant la méthode de détection préférée vous devez remplir l’une ou l’autre des options (attention à ne pas oublier le « http:// » dans le cas du domaine).

 

drupal-multilingue-image-06

 

Maintenant que la détection est en place, nous passons à l’activation du l’option multilingue pour le contenu. En effet, détecter est une bonne chose mais si le contenu n’existe que sous une seule langue l’opération est quelque peu inutile. Vous devez donc activer l’option dans les paramètres multilingues des types de contenus concernés. Attention cette action n’est pas rétroactive !

 

drupal-multilingue-image-07

 

 

Bien ! Si l’on décide désormais de tester, on s’aperçoit tout simplement que cela… ne marche pas !

Vous avez beau affecter une langue différente au contenu, lorsque vous accéder à votre site « fr » ou « en » tous vos contenus remontent. Pas de panique ! Vous vous souvenez de la localisation des éléments ? Et bien c’est le fameux module « i18n » qui va nous permettre de la mettre en place (faites attention car ce dernier requiert l’activation d’un autre module appelé « Variable »). Une fois le module installé vous allez pouvoir activer le sous-module appelé « Multilingual select » et vous dirigez vers l’administration du multilingue sous Drupal.

La localisation : admin/config/regional/i18n

Dans l’onglet « Sélection » vous allez enfin pouvoir avoir accès à votre sésame pour le multilingue.

 

drupal-multilingue-image-08

 

Cocher l’option « Sélectionner les nœuds selon la langue » et le tour est joué !

 

Troisième cas : le site multilingue avec traduction

 

Ici, on entre enfin dans le vif du sujet ! Le multilingue énoncé ci-dessus ne permet pas une traduction au sens propre du terme car aucun lien d’association linguistique n’est établit entre les contenus. En somme, avoir un site possédant du contenu sous plusieurs langues, c’est bien, avoir le même site avec une notion de traduction entre les contenus, c’est mieux !

De par son aspect modulaire Drupal permet de mettre en place une même fonctionnalité de plusieurs façons différentes. Heureusement, pour ce qui est de la traduction il n’en existe que 2. Plus généralement, il existe 2 types de traduction :

  • La traduction dite symétrique : où l’ensemble du contenu est traduit ;
  • La traduction dite asymétrique : où seulement une partie du contenu est traduit ;

Ces 2 types de traduction correspondent à 2 méthodes que je vais vous présenter en détail par la suite. Il faut toutefois noter que dans le cadre de la traduction asymétrique la question de la gestion des contenus non traduits se pose. Si un utilisateur souhaite accéder à une version non-traduite d’un contenu, quel comportement doit-on mettre en place ? Afficher le contenu par défaut ou ne rien afficher ?

 

 

Dans la suite de l’article, nous allons étudier les différentes méthodes de traduction…

Lire la suite : http://blog.webnet.fr/multilinguisme-avec-drupal-7-partie-2/