1. Présentation

Avant de me lancer dans la création de ce site, j'ai effectué plusieurs recherches pour avoir une vision globale des techniques utilisées pour le rendre multi-langues. La plupart de mes pages sont en HTML pur, mais j'utilise aussi du PHP pour le contenu dynamique. J'ai trouvé plusieurs solutions basées sur du PHP :

  • 1. Récupérer les textes directement d'une base de donnée MySQL
  • 2. Inclure un fichier de langue specifique contenant les textes traduits en fonction du langage
  • 3. Faire une copie de chacune des pages traduites

Il semble que la solution 1 requiert trop d'accès inutiles à la base de données. En tout cas, c'est le problème qui est soulevé. De plus, il faut inclure du code dans chacune des pages pour récupérer les textes. La solution 2 est très bien, car elle n'implique que la conversion de mes pages HTML en PHP, et de passer un paramètre pour indiquer le langage choisi. Finalement, la solution 3 a été mentionnée pour les 'petits sites', mais elle représente trop de travail pour être maintenable.

2. Concept

Il nous faut réaliser que souvent, nous utilisons des pages PHP pour du contenu qui aurait pu très bien être délivré en utilisant de simples pages HTMLs. Les requêtes en base de données retournant toujours les mêmes résultats nous donneront des pages identiques. Il serait alors ridicule de faire répéter sans cesse ces opérations à notre serveur web. Nous allons donc tenter d'utiliser le concept présenté dans la solution 2, et de l'automatiser avec un outil qui générera les fichiers sans intervention pour pallier aux problème de la solution 3.

Site Translate Diagram

Sur le diagramme ci-dessus, vous pouvez voir comment l'outil est conçu. Nous partons d'un set de pages (Votre site Web) que l'on appellera "Raw HTML". Ces fichiers ne contiennent pas d'information de langue, et donc pas de texte : Ils n'auront que des références à des traductions. De l'autre côté, nous avons un fichier XML (ou n'importe quel support qui correspond à vos besoins) contenant toutes les références traduites pour chacun des langages désirés.

Une fois que vos pages et leurs traductions sont prêtes, un simple programe (Que l'on appelera 'Site Translate') se chargera de créer un nouveau set de pages pour chacune des langues. De cette manière, votre serveur web n'a pas besoin de se charger de la conversion chaque fois qu'un utilisateur demande une page, et vous n'avez de votre côté qu'un seul fichier de code à maintenir comme pour la solution 2.

3. Préparez votre site

Le plus dur étant de trouver le concept qui convient le mieux à notre site, je pourrais terminer cet article en laissant le reste du travail à faire en devoir pour le lecteur. Mais bon, puisque le site sur lequel vous lisez cet article utilise déjà cet outil, je peux au moins publier ce que j'ai fait :)

Fichier Raw HTML d'example :

Fichier XML d'example :

Comme vous pouvez le constater dans le premier fichier d'example, j'ai utilisé la convention : "{@Tag@}" pour mes références. Cette notation est utilisée pour être certain que l'outil ne remplace pas des parties de la page qui ne sont pas voulues. Le fichier XML est légèrement plus complexe, mais pas de beaucoup. Nous avons une section qui décrit quels languages nous supportons ( fr, etc ), et une autre section contenant les traductions pour chacune des références, dans chaque langage. Si une référence ne contient pas de traduction pour un langage, la valeur est utilisée.

4. Déploiement

Cette partie est définitivement la plus facile. En utilisant l'outil Site Translate (la librairie .NET doit être installée sur votre ordinateur), vous n'avez qu'à identifier le fichier Raw HTML et à lancer la conversion. L'outil s'occupera de lire le fichier XML correspondant et de générer les pages pour chacune des langues. La convention suivante à été utilisée :

  • - MonFichier.raw.html
  • - MonFichier.xml
  •  
  • Résultant en sortie à
  •  
  • - MonFichier.html ( Pour le langage par défaut )
  • - MonFichier_fr.html ( Language FR )
  • - MonFichier_XX.html ( Language XX )
  • - ...

5. Un peu plus...

Les choses que vous devez savoir :

  • - Le lecteur XML est très sensible : Vos fichiers doivent être parfait niveau syntaxe.
  • - J'ai utilisé le format UTF-8 pour le fichier XML, et il faut donc mettre à jour le content-type de vos fichiers HTML. N'oubliez pas de sauvegarder le fichier XML avec un éditeur supportant l'UTF-8 ( tel que UltraEdit ).
  • - Plusieurs caractères ne sont pas permis en XML. N'oubliez pas d'utiliser les conversions correspondantes.
  • - Vous pouvez utiliser cette technique pour les fichiers PHP. Ce n'est pas du tout une mauvaise idée d'enlever la charge de traduction qui se veut la même à chaque requête utilisateur.

Si vous vous demandez si l'outil est fiable, et bien, ce site web est généré entièrement avec. Amusez-vous !