Ce code permet, dans un site contenant plusieurs langues, de passer d'une langue à une autre. Le même code est utilisé dans toutes les pages, et ne requiert que la configuration initiale d'un fichier '.js' !
Au lieu de créer tous les liens à la main pour relier les bonnes pages à la bonne langue, on utilise un simple script : à chaque appel de la fonction, on stocke le chemin complet de la page en cours, puis on en extrait tout le chemin inutile, pour ne garder que le nom de base de nos fichiers ; il ne reste plus qu'à créer un lien par langue pour accoler ("le chemin caractéristique d'une langue" + "le nom de base du fichier") !
Vous pouvez utiliser ce code quelque soit la configuration de vos pages "multi-langues" :
- soit vos pages internet sont toutes dans le même répertoire (racine par exemple)
- soit vos pages internet sont dans des répertoires "fr", "en", etc...
Voilà, pour ce post j'ai choisi la facilité pour mon exemple, deux fichiers appelés "fr_index.htm" et "en_index.htm", plus le fichier appelé "lang.js"... Ces trois fichiers dans le même répertoire...
Source / Exemple :
<!-- CODE A INSERER DANS LE FICHIER .js -->
function LangEn()
{window.location.href="en"+window.location.href.substring(window.location.href.lastIndexOf("_"))} // Config. initiale
function LangFr()
{window.location.href="fr"+window.location.href.substring(window.location.href.lastIndexOf("_"))} // Config. initiale
<!-- CODE DE DEPART A INSERER DANS LES DEUX PAGES .htm -->
<HTML><HEAD><SCRIPT SRC='lang.js'></SCRIPT>
</HEAD><BODY>
[...]<BR><BR>
[ <A HREF='javascript:LangFr()'>Version française</A> ] *************** [ <A HREF='javascript:LangEn()'>English version</A> ]
</BODY></HTML>
Conclusion :
Trois fonctions combinées :
window.location.href : permet d'afficher le chemin complet de la page en cours
chaîne.substring(position) : permet de découper une chaîne de caractères à partir d'une position choisie dans cette chaîne
chaîne.LastIndexOf("symbole") : permet de trouver la position de la dernière occurence d'un symbole donné dans une chaîne
Une configuration dans un même répertoire (chemin du style : "//racine/fr_index.htm") donnera, pour la fonction LangEn(), une syntaxe de ce style :
window.location.href="en"+window.location.href.substring(window.location.href.lastIndexOf("_"))
Une configuration dans des répertoires "fr", "en",... (chemin du style : "//racine/fr/index.htm") a créé un bug rapporté par "marmotte86", car le script précédent ne supporte pas les sous-niveaux... Il faudra plutôt créer une syntaxe de ce style, pour la fonction LangEn() - en modifiant le nom du répertoire "racine" + l'indice de décalage (selon la longueur de ce répertoire) :
window.location.href=window.location.href.substring(0,window.location.href.indexOf("racine/")+7)+"en"+window.location.href.substring(window.location.href.indexOf("racine/")+9)
Une alternative à ce script un peu lourd consiste à utiliser la fonction "replace" tout simplement, celà supporte tous les niveaux de profondeur d'un site mais ne fonctionne qu'avec deux langues (on ne peut remplacer qu'une seule sous-chaîne par une autre je crois...) ; celà donnera une syntaxe de ce style pour la fonction LangEn() :
window.location.href=window.location.href.replace("/fr/","/en/")
Ca marche sur Internet Explorer et Mozilla Firefox...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.