ARCHIVÉ - Exemples de scripts de changement de langue

Avertissement Cette information est archivée parce qu'elle est désuete et n'est plus pertinente.

Contenu archivé

Information archivée dans le Web à des fins de consultation, de recherche ou de tenue de documents. Cette dernière n’a aucunement été modifiée ni mise à jour depuis sa date de mise en archive. Les pages archivées dans le Web ne sont pas assujetties aux normes qui s’appliquent aux sites Web du gouvernement du Canada. Conformément à la Politique de communication du gouvernement du Canada, vous pouvez obtenir cette information dans un autre format en communiquant avec nous.

Table of Contents

1.0 Objet

Donner des exemples de scripts pour permettre de passer de la version anglaise à la version française d'une page Web et vice versa.

Nota : Les scripts sont fournis à titre d'exemple seulement. Vous pouvez les modifier au besoin.

2.0 Script de changement de langue dans le langage PERL

# obtenir l'adresse URL d'une page Web qui a fait appel au script
$calling_page = $ENV{'HTTP_REFERER'};
# lorsque le navigateur Netscape est utilisé, le renvoi peut contenir # et le nom d'ancrage : ne prenez que la première partie, jusqu'à #(eg. http://nsi-clf/w3c.htm#nsi)

if($calling_page =~ /(.*)\#.*/) {
    # ne prenez que la première partie, jusqu'à #
    $calling_page = $1;}

# ignorez les fichiers dont l'adresse ne se termine pas par -eng.htm ou-fra.htm et ne faites rien!

# s'agit-il d'un fichier dont l'extension est -eng.htm?

if($calling_page =~ /-eng\.htm/) {
    # remplacez le suffixe
    $calling_page =~ s/-eng\.htm/-fra\.htm/;
    print "Location: $calling_page\n\n";

# s'agit-il d'un fichier dont l'extension est -fra.htm?

} elsif($calling_page =~ /-fra\.htm/) {
    # remplacez le suffixe
    $calling_page =~ s/-fra\.htm/-eng\.htm/;
    print "Location: $calling_page\n\n";}

2.1 Hyperlien de pages Web - solution PERL

<a href="/cgi-bin/lang_change.pl" lang="en" title="English - English version of the Web page">English</a>

3.0 Script de changement de langue dans l'application ASP 3.0 pour des sites dynamiques (extension .asp)

Function LangTog-LangBasc()
 Dim path
 Dim positionOfExtension
 Dim currentLanguage
 Dim newLanguage
 Dim positionOfTarget
 path = Request.ServerVariables("PATH_INFO")
 positionOfExtension = instrrev(path,".")
 currentLanguage = mid(path,positionOfExtension-3,3)
 newLanguage = currentLanguage

 If currentLanguage = "eng" then
   newLanguage = "fra"
 ElseIf currentLanguage = "fra" then
   newLanguage = "eng"
 End If

 newPath = mid(path,1,positionOfExtension-4)+newLanguage+mid(path,positionOfExtension)
  'couper la balise cible, le cas échéant, (n'est pas conservée par tous les navigateurs de toute façon)
 positionOfTarget = instrrev(newPath,"#")

 If positionOfTarget > 0 then
  newPath = mid(newPath,1,positionOfTarget-1)
 End If

 LangSwitch = newPath
End Function

3.1 Hyperlien de pages Web - solution ASP

<a href="<%=LangTog-LangBasc()%>" lang="en" title="English - English version of the Web page">English</a>

Nota : La fonction LangTog-LangBasc() doit être accessible par la page d'appel (portée). Vous pouvez utiliser des fichiers d'inclusion.

4.0 Script de changement de langue dans l'application ASP 3.0 pour des sites statiques (extension .htm/.html)

Option Explicit

Call altLangRedirect(Request.ServerVariables("SERVER_NAME"), Request.ServerVariables("HTTP_REFERER"))

Sub altLangRedirect(serverName, referringURL)

  ' altLangRedirect : Redirige l'utilisateur vers une nouvelle adresse URL en fonction de referringURL.
  ' S'il n'y a pas de renvoi, l'utilisateur est alors redirigé vers servername (page racine)
  ' Si servername ne figure pas dans le renvoi, l'utilisateur est alors dirigé vers servername (page racine)
  ' Servername : Le serveur
  ' ReferringURL : La page URL de renvoi qui fait appel au sous-programme.

  Dim newURL 'The url to redirect to
  Dim positionOfExtension 'position of last dot in URL
  Dim currentLanguage 'language of referring page
  Dim newLanguage 'language of page to redirect to

  'À utiliser pour couper la chaîne d'interrogation
  'Dim positionOfQueryString pour la position de « ? » dans l'adresse URL
  'À utiliser pour couper la balise cible

  Dim positionOfTarget 'position of "#" in URL

  'À utiliser si l'on se sert de la partie des répertoires en parallèle
  'Dim replaceWhat 'Ce qu'il faut remplacer
  'Dim replaceWith 'Ce qu'il faut utiliser comme remplacement
  'Par défaut, nous définirons la nouvelle adresse URL selon servername.
  'Si rien d'autre ne se produit, l'utilisateur sera redirigé, par défaut, à la page racine
  'pour éviter les erreurs attribuables à un espace blanc ou à un HTTP_REFERER erroné.
  newURL = "http://" & serverName

  'Il faut d'abord vérifier si referringURL existe et si length est > 0;
  'sinon, c'est peut-être que le REFERER a été éliminé ou modifié.
  'Il faut alors utiliser une valeur par défaut pour éviter les erreurs.

  If Len(Trim(referringURL)) > 0 Then
   'Il faut ensuite s'assurer que servername paraît dans referingURL.
   'Si ce n'est pas le cas, nous obtiendrons la page involontairement et devrons utiliser une valeur par défaut pour éviter les erreurs.

   If Instr(referringURL, serverName) > 0 Then
    'À utiliser si la mention eng ou fra figure toujours devant le dernier point.
    positionOfExtension = instrrev(referringURL,".")
    'Cela ne fonctionnera pas si la lettre « e » ou « f » figure devant le point et qu'elle n'indique pas vraiment la langue.
    currentLanguage = mid(referringURL,positionOfExtension-3,3)
    newLanguage = currentLanguage

    If currentLanguage = "eng" then
      newLanguage = "fra"
    ElseIf currentLanguage = "fra" then
      newLanguage = "eng"
    End If

    'remplacer la mention eng par la mention fra ou vice versa
    newURL = mid(referringURL,1,positionOfExtension-4)+newLanguage+mid(referringURL,positionOfExtension)

    'couper la balise cible, le cas échéant (n'est pas conservée par les navigateurs de toute façon)

    positionOfTarget = instrrev(newURL,"#")
      If positionOfTarget > 0 then
        newURL = mid(newURL,1,positionOfTarget-1)
      End If

   End If

  End If

  Response.Redirect(newURL)
End Sub