PHP site multi langue fr/en

Fermé
Pascal_22 Messages postés 534 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 29 août 2014 - 14 oct. 2011 à 22:34
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 18 oct. 2011 à 19:44
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 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
15 oct. 2011 à 17:50
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 534 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 29 août 2014 54
17 oct. 2011 à 19:58
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 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
17 oct. 2011 à 20:10
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 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
18 oct. 2011 à 10:38
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 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
18 oct. 2011 à 11:50
??? 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 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
18 oct. 2011 à 19:44
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 5168 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 23 janvier 2013 728
Modifié par Ch93 le 18/10/2011 à 10:55
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