Il existe plusieurs façons d'aborder ce problème. Aucun d'entre eux "la meilleure façon" et tous avec des problèmes à court terme ou à long terme. La toute première chose à dire est que les sites multilingues ne sont pas faciles, les traducteurs et les gens adorables mais difficiles à travailler et la plupart des programmeurs voient le problème uniquement comme un problème technique. Il existe également une autre dimension, en dehors du champ de cette réponse, à savoir si vous traduisez ou localisez. Cela implique d'examiner les mœurs culturelles du public cible, puis d'adapter la langue, le style, la mise en page, la couleur, la police de caractères, etc., à cette culture. Enfin, n'utilisez pas MT, traduction automatique, pour quelque chose de sérieux ou si cela doit être précis et lors de l'acquisition de traducteurs, assurez-vous qu'ils traduisent d'une langue étrangère vers leur langue maternelle, ce qui signifie qu'ils comprennent toutes les nuances de la langue cible.
Droit. Solutions. Si vous ne souhaitez pas réécrire le site, clonez simplement le site que vous avez et traduisez les copies dans la langue cible. En supposant que la base de code est stable, vous pouvez utiliser un VCS pour gérer les modifications de code. Vous pouvez modifier des parties individuelles du site pour l'adapter à la langue cible. Par exemple, le texte français est en moyenne 30 % plus grand que le texte anglais équivalent. Par conséquent, l'utilisation d'un site pour fournir cela signifie que vous pouvez (aurez) avoir des problèmes de formatage et devoir échanger un différents fichiers css entrants et sortants selon la langue. Cela peut sembler une façon maladroite de le faire, mais combien de temps les sites vont-ils exister ? Les frais généraux de gestion liés à cette méthode pourraient bien être inférieurs à ceux d'autres options.
Deuxième voie sans reconstruction. Remplacez tout le contenu du site actuel par des balises, puis placez la langue différente dans des tables de fichiers ou de bases de données, reniflez la langue souhaitée par les utilisateurs (avez-vous des utilisateurs enregistrés qui peuvent faire une préférence ou voulez-vous obtenir la balise de langue du navigateur, ou est-ce ce sera l'URL point-com point-fr, point-de qui fera le choix) puis remplacer les balises par la langue cible. Ensuite, vous devez résoudre les problèmes de dimensionnement et les problèmes d'image séparément. Cette solution est en vigueur lorsque des frameworks comme Symfony et Zend implémentent l10n.
Ensuite, vous pouvez reconstruire avec un framework ou avec gettext et éventuellement avoir une solution plus propre, mais rappelez-vous que les frameworks ont été conçus pour résoudre d'autres problèmes, pas de traduction et que le composant de traduction est entré dans le framework en tant que solution partielle et non complète.
Le gros problème avec toutes les solutions est la maintenance continue. Car non seulement vous avez une base de code mais également plusieurs bases de langage à maintenir. À moins que votre solution tout-en-un ne soit vraiment intelligente et efficace, la tâche en cours sera difficile.