8795 sujets

Développement web côté serveur, CMS

Bonjour.

Note aux modérateurs : j'hésitais sur la catégorie dans laquelle mettre ce sujet mais je pense qu'il aura plus de contributions ici.

La question est simple : comment faites-vous pour internationaliser vos scripts ? Quelle méthode pour quelle situation ?

Je précise qu'il ne s'agit pas ici de traiter d'un cas précis mais bien du cas général.

Merci d'avance pour vos contributions.
Modifié par Changaco (23 Dec 2007 - 15:39)
Salut,

tout dépend du cas de figure dans lequel tu te places ... est-ce qu'il s'agit d'un site où le contenu doit être mis à jour, en plusieurs langues, ou faut-il gérer l'inclusion de fichiers selon la langue de l'utilisateur ?
Je crois que mon premier message est clair Smiley smile :
Changaco a écrit :
Je précise qu'il ne s'agit pas ici de traiter d'un cas précis mais bien du cas général.
Oui, mais non Smiley smile

Si on veut simplement inclure des fichiers dans une langue pré-sélectionnée, on utilisera (en général) une variable de session pour mémoriser la langue, et on enregistrera éventuellement la préférence de l'utilisateur (dans un cookie, une table, ...). On peut aussi tenter de déterminer automatiquement la langue la plus appropriée, grâce aux infos envoyées par le navigateur au serveur, mais ce n'est pas toujours fiable Smiley cligne

S'il s'agit au contraire de traduire un site qui publie du contenu régulièrement, et qui sera géré via une base de données, ça devient tout de suite plus compliqué. On peut évidemment tout dupliquer dans les différentes langues, mais pour peu que le site ait une certaine ampleur, c'est pour devenir dingue.

On peut utiliser dans ces cas-là une fonction qui "reconnait" les éléments de l'interface et les traduits dans la langue sélectionnée par le visiteur (ou choisie pour lui par le serveur). Par exemple, le framework PHP symfony utilise la syntaxe suivante :
<?php echo __('Entrez les termes que vous souhaitez rechercher :'); ?>
La fonction __() indique qu'il s'agit d'une chaîne de caractères "traduisible", et le script va voir dans le dictionnaire (ici, un fichier XML qui contient les traductions de toutes les chaînes traduisibles, au format XLIFF) s'il trouve la correspondance dans la langue de l'utilisateur.

L'avantage est que je ne dois pas dédoubler (au moins !) tous les fichiers de mon application, et le désavantage est qu'il faut construire les dictionnaires au fur & à mesure Smiley cligne

Tout ça pour dire que l'approche est très différente selon le type de sites, même dans "le cas général" Smiley cligne

Note qu'il existe des standards pour l'internationalisation des sites Internet, mais l'implémentation dépend de l'architecture de ton application, du/des langages utilisé, du serveur, etc ... Voir W3C Internationalization: Getting started {en}
Excuse-moi je me rends compte que ce n'était pas clair, quand je dis le cas général en fait je veux dire qu'il faut traiter toutes les possibilités ...
J'utilise en effet la solution dont tu parles sauf que j'édite directement ma fonction de traduction et non un fichier externe et que ma fonction s'appelle i18n().
Modifié par Changaco (23 Dec 2007 - 16:36)