Site multilingue et multiextension

Signaler
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010
-
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010
-
Bonjour,

Voilà j'ai plusieurs url avec des extensions différentes :

www.example.com
www.example.fr
www.example.it
www.example.es

et j'aimerais, en fonction du choix de la langue de l'internaute le dirigé vers telle ou telle url.

Quelle est la technique que vous adoptez ?

j'aimerais aussi savoir comment s'effectue le paramètre de ces quatre url au niveau de l'hébergement.

Et quand une personne tape pour la première fois, l'url :

www.example.es

comment faire en sorte que ce soit la langue espagnole qui s'affiche.
J'utilise sur une mêm page des include php enf contion des langues.
je suis donc obligé de faire un test sur l'URL ?

10 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Tu as de nombreuses configurations possibles, que ce soit au niveau d'apache ou de la conception de ton site. Il n'y a pas une manière de faire mieux que les autres, tout dépend de tes exigences et des contraintes que tu as.

Pour éviter de dupliquer ton site sur ton serveur, le mieux est d'utiliser un unique répertoire de publication et de configurer Apache pour que le site pour qu'il accepte chaque domaine. Il suffit pour cela d'utiliser la directive ServerAlias dans la configuration du VirtualHost Apache.

Le changement de langue peut se faire de multiples manières, à toi de voir. Tu peux utiliser la variable $_SERVER['HTTP_ACCEPT_LANGUAGE'] pour savoir quelles langues sont configurées dans le navigateur et fournir le contenu le plus approprié en fonction des priorités des langues de l'utilisateur.
Tu peux utiliser un cookie après un clic sur un lien. Tu peux utiliser un formulaire (une liste déroulante).

Quand on tape monsite.es, il faut vérifier le TLD (.es dans ce cas) dans l'URL. Tu peux t'en dispenser avec une règle de réécriture dans la configuration d'Apache, par exemple quelque chose qui ressemble à ça :
RewriteCond    %{REMOTE_HOST}    \.es$
RewriteRule    (.*)    $1?lang=es [L,QSA]

Il faudra alors tester la variable $_GET['lang']

Voilà, en gros.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010

Bonjour Neigedhiver et merci pour ta réponse.

Tu as effectivement bien cerné mon problème et il y une partie de ta réponse qui m'intéresse particulièrement



Quand on tape monsite.es, il faut vérifier le TLD (.es dans ce cas) dans l'URL. Tu peux t'en dispenser avec une règle de réécriture dans la configuration d'Apache, par exemple quelque chose qui ressemble à ça :
Code :

RewriteCond %{REMOTE_HOST} \.es$
RewriteRule (.*) $1?lang=es [L,QSA]


Il faudra alors tester la variable $_GET['lang']

A quel endroit dois-je paramétrer ça


RewriteCond %{REMOTE_HOST} \.es$
RewriteRule (.*) $1?lang=es [L,QSA]

Dans le fichier .htaccess ?

Voici mon code actuel :


 
if(!empty($_COOKIE['lang']))$lang=$_COOKIE['lang'];
if(!empty($_GET['lang']))$lang=$_GET['lang'];
if(!empty($lang) && ($lang=='eng' || $lang=='fr' || $lang=='esp')){
  include('lang-'.$lang.'.php');
  setcookie('lang',$lang,time()+3600*25*365,'/');
}else include('lang-eng.php');
 
// ajout du code de Dunbar
 
$lang = (isset($_SESSION['lang']) ? $_SESSION['lang'] : 'com');
 
header("Location: http://www.example. .$lg);




Mais je pense qu'il faut que je l'adapte avec ce que tu m'as donné.

Si je fais en fonction de l'extension, je n'ai plus besoin d'utiliser les cookies, puisque la variable $lang est créée en fonction de l'url.


Qu'en penses-tu ?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

Il s'agit de directives de configuration Apache. Ca se met donc :
- soit dans le fichier de configuration du VHost, entre <Directory ...> et </Directory>
- soit dans un fichier .htaccess à condition qu'Apache soit configuré poru l'autoriser (cf directive AllowOverride)

L'autre solution (si tu ne peux pas configurer Apache à ta guise, ce qui serait dommage sur un projet comme ça) consiste à vérifier le tld dans un fichier php commun à toutes tes pages et à rediriger le cas échéant. Attention toutefois à ne pas oublier les arguments si tu dois rediriger...

En effet, si tu utilises uniquement le tld pour définir la langue, pas besoin de cookie.

Je crois que je voulais dire autre chose, mais j'ai zappé...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010

Ok, merci Neige,
je me suis renseigné auprès de mon Hébergeur PlanetHoster, et le fichier .htaccess est paramétrable (ouf!!!). Je peux faire de l'UrlRewriting et je vais mettre le code que tu m'as indiqué (qui est très précieux pour moi, merci encore).
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
J'espère que tu ne feras pas un bête copier/coller... D'ailleurs, je n'ai pas testé le code que j'ai donné... Juste, a priori, il est correct, mais bon, j'ai encore du mal à dompter l'URL Rewriting d'Apache...
Cela dit, c'est forcément faisable par ce biais. Faudra peut-être adapter un peu, tester, bidouiller... le bonheur, quoi ;)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010

Ha heureusement que tu me le dis ...

Je pensais que c'était du vécu .

En plus je ne savais pas que l'on pouvait générer des variables en se servant de l'UrlRewriting...

Décidément, j'en apprends tous les jours.

Merci Neige.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
C'est tout du vécu. Mais pas forcément exactement la même situation. Mon expérience et ma connaissance de la doc d'Apache me permettent de dire que c'est faisable, de la manière que je te montre. C'est juste que le code... Je ne donne aucune garantie.

La condition (RewriteCond) est bonne, c'est sûr. Mais la règle, j'ai déjà eu des surprises : Apache ne réagissait pas comme je m'y attendais, d'où mes réserves.
Ce qui est sûr, c'est qu'il ne faut pas oublier le flag QSA (Query String Append) qui permet de rajouter les arguments GET de la règle aux arguments éventuellement déjà existants.

Le code donné est peut-être aussi à adapter en fonction des URL que tu utilises, si jamais tu fais déjà de l'URL rewriting. Bref, j'ai indiqué la marche à suivre d'une manière générale, à toi de l'adapter à tes besoins et ta configuration spécifiquement.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010

Neige,

on me dit que le choix de domaines que j'ai effectué n'est peut-être pas judicieux..

En effet, j'ai bloqué le .com et j'ai choisi que ça sera la langue anglais...

Seulement, on me fait remarqué à juste titre que le .com est réservé pour le domaine commercial et pas pour les anglophones.

Duu coup jje ne sais pas trop ce qu'il faut que je fasses...

Tu as une idée .
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Ben c'est toi qui vois... C'est ton site à toi, ou pour quelqu'un d'autre ?

Certes, le .com est à vocation commercial, c'est ce que veux dire com. Mais les TLD nationaux (.fr, .es etc) n'ont pas vocation à indiquer la langue : uniquement le pays dans lequel l'entreprise (ou la personne) se situe. Ce n'est finalement qu'une indication qui vaut ce qu'elle vaut, les règles d'attribution variant d'un pays à l'autre. Ainsi, en France il est obligatoire de résider en France pour un particulier (ou d'avoir juste une adresse en France), d'avoir un établissement en France pour une entreprise (ou de justifier d'une activité économique suffisament importante, je crois).
Dans d'autres pays, c'est tellement permissif que n'importe qui, où qu'il habite, peut choisir un nom de domaine avec le TLD national.

Tu peux donc décider que le .com est le site par défaut, dans une langue par défaut. Celle de ton choix. S'il fait doublon avec un .uk ou un .us, pour éviter la duplication de contenu (peu appréciée par les moteurs de recherche) tu peux simplement rediriger vers le site en langue anglaise.

Ou alors, la page d'accueil du .com ne contient que des liens vers les sites localisés.

Tout est imaginable, il existe d'autres possibilités, à toi de voir ce qui te plait, ce qui te parait logique, cohérent, rationnel...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
16
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 octobre 2010

Bien,

merci pour ton aide et tes précieux conseils.

Je pense que je vais resté sur mon idée initiale et mettre le .com en anglais.