| Auteur | |
|---|---|
| gildelau | # 06 Dec 2009 - 23:36:27 |
| 13 Posts |
Bonjour, Actuellement, je dois créer un site bilingue(anglais, français) mais prévoir espagnol, italien ... plus tard. Plusieurs solutions s'offrent à moi et voici ce que j'ai lu sur le sujet. " La façon la plus prisée des développeurs est de créer un fichier contenant uniquement des variables dont les valeurs correspondent à des expressions prédéfinies. <?php $message_bienvenue = "Bienvenue sur mon site !"; $message_connexion = "Vous êtes désormais connecté..."; ?> Le fichier est ensuite enregistré dans un dossier /lang/fr/. Puis le programmeur code quelques autres fichiers avec des noms de variables identiques mais contenant des valeurs traduites ("Welcome to my site !", "Now you're logged in...") et les enregistre dans d'autres dossiers : /lang/en, /lang/de/, etc. Il ne lui reste plus qu'à implémenter un script permettant de récupérer le langage préféré de l'utilisateur et en fonction du résultat, inclure le fichier de langue correspondant. Cette méthode a l'avantage d'être relativement simple à mettre en place ; cependant, vous constaterez rapidement que plus votre site grandira, plus vos fichiers de langue deviendront conséquents, et qui dit fichier plus conséquent dit fichier plus lourd, entraînant un ralentissement du temps d'exécution. Elle est donc réservée aux "petits" sites. Mais si vraiment vous sentez que votre projet comportera beaucoup, beaucoup de texte à traduire, l'utilisation de la bibliothèque Gettext (GNU) sera préférable. C'est cette bibliothèque très utile mais peu connue des développeurs en herbe n'est pas facile à mettre en place" J'ai pensé aussi mettre un code+libellé en base de donné et en fonction de la langue chercher dans la bonne table, mais ceci demanderait beaucoup d'accès à la base de données et serait peut-être pénalisant. J'aimerais savoir si quelqu'un peut me donner son avis sur le sujet ou s'il connait des liens qui pourrait m'aider à mettre en place mon site multilangues Merci d'avance pour vos réponses Gildelau |
| Heyoan | # 07 Dec 2009 - 01:02:55 |
| Modérateur 8101 Posts |
Salut,gildelau a écrit :Je ne connais pas Gettext mais à priori à part "standardiser" une façon de faire je ne vois pas ce que ça pourrait apporter en terme d'optimisation du temps de traitement. la technique "standard" se résume à constituer le contenu d'une page avec des constantes PHP. Tout dépend ensuite du "niveau de précision" des textes mais en résumé on a 2 formes possibles pour une page donnée (par exemple la page bienvenue.php) : ouEnsuite en fonction de la langue choisie (variable $_GET ou cookie) on fait un include du bon fichier de langue. En l'occurrence ça donne :// $language = french : ouOu Bien // $language = engliqh : ou |
| gildelau | # 07 Dec 2009 - 07:42:07 |
| 13 Posts |
Bonjour Heyoan, Merci pour votre réponse. En fait il s'agit d'un site touristique avec description de monuments donc il risque d'y avoir pas mal de page à traduire. Peux-t-on imaginer une solution de mixe avec les 2 solutions. Les fichiers de traductions php pour tous les libellé, boutons ... apparaissant dans la page et un Gettext ou acces à une base de données pour les textes traduits. Merci de vos conseils PS: Auriez vous un lien pour un tutoriel de mise en place des Gettext sur Windows |
| Victor BRITO | # 07 Dec 2009 - 08:58:26 |
Je ne suis pas mort, je dors 2214 Posts |
Outre les constantes, on peut aussi utiliser un tableau.En campagne contre la balkanisation du Web, pour rappeler qu'il existe un seul Web Mon avatar : l'ancien département de la Seine (le grand 75 d'avant 1968) |
| Heyoan | # 07 Dec 2009 - 10:39:26 |
| Modérateur 8101 Posts |
gildelau a écrit : Heyoan a écrit : Et bien sûr quelle que soit la solution choisie on peut très bien remplacer le require par une lecture en base... Sinon un sujet récent parlait de cms dont certains sont réputés pour leur gestion multilingue : c'est peut-être une bonne piste ? Modifié par Heyoan (07 Dec 2009 - 13:03) |
| Patidou | # 07 Dec 2009 - 11:37:34 |
| 2173 Posts |
Dotclear 2 utilise gettext, les traductions sont dans des fichiers .po, qui contiennent le texte original en anglais et sa traduction. Dans le code php (exemple) et les templates (exemple), le texte est automatiquement remplacé suivant les préférences de l'utilisateur. Modifié par Patidou (07 Dec 2009 - 12:00) Avertissement : il est inutile de m'envoyer des mp pour demander de répondre à vos sujets sur le forum. Je répond si j'ai un élément de réponse et si j'ai le temps. Merci d'avance. |
| gildelau | # 07 Dec 2009 - 13:00:55 |
| 13 Posts |
Merci à tous pour toutes ces réponses, je vais me plonger dans tout ça Cordialement Gildelau |
| fvsch | # 07 Dec 2009 - 19:21:43 |
| Administrateur 19942 Posts |
À noter que la plupart des frameworks de développement web permettent d'utiliser Gettext ou un outil similaire. |
| Victor BRITO | # 08 Dec 2009 - 08:12:14 |
Je ne suis pas mort, je dors 2214 Posts |
Florent V. a écrit : Notamment Symfony, qui, en plus de l'internationalisation, prend en charge la localisation. En campagne contre la balkanisation du Web, pour rappeler qu'il existe un seul Web Mon avatar : l'ancien département de la Seine (le grand 75 d'avant 1968) |