Faire un site bilingue

nsmoez Messages postés 2 Date d'inscription jeudi 17 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 17 juil. 2008 à 10:56
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 - 17 juil. 2008 à 13:43
Bonjour
J'ai un site en englais que j'aimerai lui ajouter la langue française.
J'ai commencé par traduire tout le contenu du site en langue
française.Puis j'ai affecté le contenu des deux langues dans des
variables dans deux fichiers lang_fr.php et lang_an.php. j'ai ajouté
par la suite 2 mini drapeaux dans la page d'index que je leur affecté
la variable lang. Par la suite j'ai ajouté ce code dans la page d'index:
//test choix de la langue
if(!isset($_GET["langue"]))
{
$_SESSION['lang']=="an";
}
else
{
$_SESSION['lang']==$_GET['langue'];
}
//le fichier de langue
if($_SESSION['lang']=="an")
{
include("lang_an.php");
}
else
{
include("lang_fr.php");
}

puis g ajouté ce code<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
if($_SESSION['lang']=="an")
{
include("lang_an.php");
}
else
{
include("lang_fr.php");
}

<!-- END TEMPLATE: bbcode_code -->dans tout les fichiers qui ont un contenu dans les deux langues

mais ça genère des erreurs. S'il vous plait veuillez signaler mon erreur sachant que je suis à mes débuts en PHP

Merci d'avance

mizou

4 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
17 juil. 2008 à 11:46
T'aurais pas oublié le session_start() par hasard ?

Et euh, ca te génere quoi comme erreurs ?
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
17 juil. 2008 à 12:28
if
(!isset($_GET["langue"]))
{
$_SESSION['lang']=="an";
}
else
{
$_SESSION['lang']==$_GET['langue'];
}

Pour attribuer des valeurs, tu ne met qu'un seul égal. Pour effectuer des tests sur les valeurs, tu en met deux (ou trois, ca dépend :p)

Donc dans ton cas, le code correct est :

if(!isset($_GET['langue']))
{
$_SESSION['lang'] = 'an';
}
else
{
$_SESSION['lang'] = $_GET['langue'];
}

Par ailleur, essaye de garder une certaine homogénéité ; Parfois tu utilise des simples quotes, parfois des doubles ($_GET["langue"] et à pein plus bas $_GET['langue'])
Utilise les simple quotes, c'est recommandé.






http://www.ReFlectiv.Net
nsmoez Messages postés 2 Date d'inscription jeudi 17 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
17 juil. 2008 à 12:44
non j'ai mit session_start() mais j'ai oublié de la mettre dans ma question.lol

mizou
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
17 juil. 2008 à 13:43
Re ^^

Copie du MP auquel j'ai répondu ^_______________^
Ca pourra aider les autres comme ça

<hr size="2" width="100%" />
Salut ;)

J'ai refait ton code, regarde :

<?php

session_start();
// On ouvre la session -> OBLIGATOIRE pour que les $_SESSION fonctionnent

$_SESSION['lng'] = isset($_SESSION['lng']) ? $_SESSION['lng'] : 'en';
// Equivalent de if( !isset($_SESSION['lng']) ) { $_SESSION['lng'] = 'en'; }

$_SESSION['lng'] = isset($_GET['lng']) ? urldecode($_GET['lng']) : $_SESSION['lng'];
// On attribu une nouvelle valeur, si spécifié dans l'URL "?lng=X"

$uri_fichier_lng = realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'lang_' . $_SESSION['lng'] . '.php';
// realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR = /www/.../dossier_actuel/
// DIRECTORY_SEPARATOR = / OU \ selon la configuration (Linux, Windows)

$uri_fichier_lng = realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'lang_en.php';
// On inclue le fichier langue par défaut. Ainsi si la langue n\'existe pas, ou si il manque des valeurs, la langue par défaut prendra le relais.

// Si le fichier langue demandé existe, on l'inclue
if( file_exists($uri_fichier_lng) )
{
    include $uri_fichier_lng;
}

?>

Ton code ne marche pas car :
 - Tu donne une valeur à une variable avec un "==". Ce caractère ne s'utilise QUE pour les COMPARASIONS (if/else/...)
 - Il n'y a pas de session_start();

Ah oui, utilise plutôt "en" pour l'anglais (english) ... et même les abréviations des pays dans leur langue. Comme ça, si jamais tu pousse ton système plus loin avec par exemple une détection automatique de la langue (une des variables $_SERVER) ce sera beaucoup plus simple :D

Par contre, je n'ai pas testé, mais il n'y a pas d'erreur ... il devrait normalement fonctionner :)
Si tu n'a pas compris quelque chose, demande moi

++ Jo²

<hr />Si ma reponse te convient, merci de l'accepter ! 
Rejoignez-nous