PHP site multi langue fr/en

Pascal_22 Messages postés 559 Statut Membre -  
avion-f16 Messages postés 20367 Statut Contributeur -
Bonjour,

Je désir faire une site web. Selon la ville choisi (d'une liste de ville déjà préétablis)' j'afficherai le site selon la langue....

Mais en fait, le site restera pareil, même design, seulement les termes accueil/home, rechercher/search ...... changerons et l'infos de la ville sera affiché.

Dois-je tout mettre les termes dans un tableau : exemple
$terme['accueil']['fr'] = "Accueil"
$terme['accueil']['en'] = "Home"

et selon la langue choisi j'affiche le bon mot...

Est-ce comme cela qu'est créé un site multilingue?

Merci!

Pascal


A voir également:

5 réponses

avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Salut,

Tu peux utiliser des tableaux, mais je te recommande plutôt GetText.
https://www.php.net/gettext

https://openclassrooms.com/fr/courses
0
Pascal_22 Messages postés 559 Statut Membre 54
 
Salut Avion-f16,

Wow, ok assez complexe mais très bien...

as-tu déjà utilisé cette méthode?

Est-ce que tu crois que cela peut ralentir le site d'aller lire, et ce a chaque changement de page, dans un autre fichier pour savoir comment afficher le contenu?

Un site comme facebook, qui a des millions d'utilisateur actif et ce en même temps, crois-tu qui utilise cette méthode? Et même commentcamarche, crois tu qu'il utilise?

Je sais que mon site aura du succès, donc beaucoup de visite.... Est-ce la façon de faire.

Merci de ton aide!

Pascal
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Je pense que GetText est la meilleure des solutions, autant du point de vue performances qu'en clarté et en organisation du code.
0
mpmp93 Messages postés 7217 Statut Membre 1 340
 
Bonjour,

Une solution:

1) avoir un script petit et très simple, nommé selectLangue.php quii contient ceci:

<?php
setcookie("lang",$_GET['lang']);
$back = $_SERVER['HTTP_REFERER'];
header("Location: $back");


2) exemple de lien qui appelle ce script:

<a href='selectLangue.php?lang=en'>english</a>
<a href='selectLangue.php?lang=fr'>français</a>
<a href='selectLangue.php?lang=de'>deutsch</a>

Quand on clique sur un lien de sélection liguistique, le script selectLangue.php crée un cookie lang qui contient au choix fr ou en ou de... ou tout autre code linguistique de votre choix.

3) en tête de script principal (de préférence en modèle MVC on aura:

<?php
$lang = 'fr';
if (!empty($_COOKIE['lang'])) {
$lang = $_COOKIE['lang'];
}
?>

4) dans un template phtml on exploite$lang comme ceci:

<?php if($lang=='fr'): ?>
<h1>Bienvenue</h1>
<?php elseif($lang=='en'): ?>
<h1>Welcome</h1>
<?php if($lang=='de'): ?>
<h1>Wilkommen</h1>
<?php endif; ?>


A noter que selectLangue peut être appelé depuis n'importe quelle page php, il est programmé pour retourner à cette page. Par exemple, si on l'appelle depuis index.php il renvoie la main à index.php, si on l'appelle depuis listeAnnonces.php, il retournera vers listeAnnonces.php

L'intérêt de mon astuce, c'est qu'il n'est pas nécessaire de créer des versions de pages dans différentes langues, mais seulement de sélectionner des portions de code HTML et/ou PHP selon la langue sélectionné par l'utilisateur.

Exemple de site que j'ai fait sur ce modèle:
http://berniere.camping-car.org/

J'y gère pas moins de 6 langues!

A+





0
bg62 Messages postés 26230 Statut Modérateur 2 417
 
??? pas le top en tous cas ... tu as pensé référencement ???
5 pages actuellement dans google ...
et "<meta name="Language" content="fr">
<meta name="description" content="...">
<meta name="keywords" content="...">
<meta name="Robots" content="follow,index,all">
<meta name="REVISIT-AFTER" content="60 days">"
dans toutes les langues !!!
pas trop bien parti là ..... ;)
0
avion-f16 Messages postés 20367 Statut Contributeur 4 509
 
Salut,

4) dans un template phtml on exploite$lang comme ceci: 

<?php if($lang=='fr'): ?> 
<h1>Bienvenue</h1> 
<?php elseif($lang=='en'): ?> 
<h1>Welcome</h1> 
<?php if($lang=='de'): ?> 
<h1>Wilkommen</h1> 
<?php endif; ?> 


Avec cet exemple ça peut encore passe, mais avec de longs contenus contenant beaucoup de code HTML ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ch93 Messages postés 6128 Statut Membre 729
 
Salut

Tu peux remplacer les mots par une variable tableau comme ceci...
$lang['Accueil']


$lang sera alors défini dans les infos contenu dans ta liste de villes.
Ensuite tu peux avoir différents fichiers php par langues.

Exemple:
$lang = array('Accueil => 'Home', 'A propos' => 'About us');


Tu trouveras un très bon exemple dans PunBB.

La voiture ça rends con et fainéant !
Vieux motard que jamais ...
0