Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: Vinz le le 25-06-2003 a 11:24:06

Titre: Site Multilingue
Posté par: Vinz le le 25-06-2003 a 11:24:06

Salut, donc voila en j'en suis

<?
$expire = 365*24*3600;
setcookie("langue","anglais",time()+$expire);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?php
include('$HTTP_COOKIE_VARS["langue"]');
if ($langue=='anglais');
{
include("anglais.php");
}
?>

<?
echo "$titre";
?>

<body>
</body>
</html>

Avec dans anglais.php $titre qui a pr valeur hello!

Ca m'affiche hello sur la page mais avec une erreur au dessu, a cette ligne :
include('$HTTP_COOKIE_VARS["langue"]');

Merci :)

A bientot
Vincent

Titre: Re:Site Multilingue
Posté par: Shain le le 25-06-2003 a 11:30:46

Modifie ca dans ton script pour voir :

<?php
if ($HTTP_COOKIE_VARS["langue"]=='anglais');
{
include("anglais.php");
}
?>

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 11:40:31

A la place des ### tu dois mettre soit $LANGUE (en majuscule) soit $HTTP_COOKIE_VARS["LANGUE"].
Voilà je ne sais pas si c'est ça mais essaye quand même car il me semble qu'on ne peut pas inclure le cookie comme tu l'as fait:
include('$HTTP_COOKIE_VARS["langue"]')

Mais au cas où il te met quoi comme erreur exactement ?
J'espere que ça va marcher

Trounday



<?
$expire = 365*24*3600;
setcookie("langue","anglais",time()+$expire);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?php
if ( ### == 'anglais');
{
include("anglais.php");
}
?>

<?
echo "$titre";
?>

<body>
</body>
</html>

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 11:42:48

Je crois que Shain a été plus rapide... ;)

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 13:44:18

Re salut :p

Voila ca marche mais il y a encore un petit problème...

<?php
// cookie par default = francais
setcookie("langue","$francais",time()+365*24*3600);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?php
//langue francaise
if ($HTTP_COOKIE_VARS["langue"]=='francais');
{
include ("francais.php");
}
?>

<?php
//langue allemande
if ($HTTP_COOKIE_VARS["langue"]=='allemand');
{
include("allemand.php");
}
?>

<?php
//langue anglaise
if ($HTTP_COOKIE_VARS["langue"]=='anglais');
{
include("anglais.php");
}
?>

<?php
echo "$titre";
?>

<body>
</body>
</html>

Voila en fait dans ma page ca me marque en anglais alors que j'ai mis en francais en fait ca prend tjs la derniere fonction(ici le if=anglais en l'occurence...) j'ai essayé justement en echange anglais et allemand et ca marqué le truc en allemand !
Je dois utilisé quel fonction pour arrivé a ce que ca me marqué en francais?

En suite pour choisir la lanque j'aimerai donc déposer un cookie anglais, francais ou allemand quand la personne clique sur un drapeau, il y a qqchose de special pour envoyer un cookie en meme temps qu'un clique, jy arrive pas :-(

Merci,

Vincent

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 15:35:16

Tu devrais essayer avec ça:


Code:

<?php
//langue francaise
if ($HTTP_COOKIE_VARS["langue"]=='francais');
{
include ("francais.php");
}
//langue allemande
elseif ($HTTP_COOKIE_VARS["langue"]=='allemand');
{
include("allemand.php");
}
//langue anglaise
elseif ($HTTP_COOKIE_VARS["langue"]=='anglais');
{
include("anglais.php");
}
?>


Ou alors tu peux très bien essayer un truc dans le genre:


Code:

include ("$HTTP_COOKIE_VARS[\"langue\"].php3");


Je ne sais pas si ça peut marcher mais ton script sera beaucoup mon lourd. Mais c'est tout de même à essayer.

Voilà voilà ;)

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 15:42:38

Salut,
Merci pour ta réponse mais il me signale une erreur au niveau des elseif...
C'est peut etre mon cookie qui ne marche pas aussi, quand je regarde dans mon cache il ne me l'affiche pas? je dois le changer pi etre?

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 15:49:40

Ben pour verifié s'il marche tu peux très faire un


Code:
echo "$HTTP_COOKIE_VARS[\"langue\"]";


S'il affiche anglais, français ou allemand c'est qu'il marche ton cookie.
Sinon essaye de vider ta cache et recharge ton cookie.
Si tu galères tu peux allez jeter un coup d'oeil sur ce site:
http://www.phpdebutant.com/article40.php (http://www.phpdebutant.com/article40.php)

Bon taf
Trounday

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 16:54:11

Bon j'ai essayé une autre méthode et ca marche presque :

<?php
include ("francais.php");
?>

<?php
if ($langue=='allemand')
{
include ("allemand.php");
}

elseif ($langue=='anglais')
{
include ("anglais.php");
}

elseif ($langue=='francais')
{
include ("francais.php");
}
?>

<?php
echo "Choose your language :<BR>";
echo '<a href="index.php?langue=allemand">allemand</a><BR>';
echo '<a href="index.php?langue=anglais">anglais</a><BR>';
echo '<a href="index.php?langue=francais">francais</a><BR>';
?>
<BR>
<?php
echo "$titre";
?>
<BR><BR><BR><a href="?page=1">lien</a><BR><BR><BR>
<TABLE border=1 width=80%>
<TR>
<TD>
<?php
if (isset($_GET["page"])) $page = $_GET["page"];
else $page = 0;
switch ($page)
{
default : include("news.php"); break;
case 1 : include("lien.php"); break;
}
?>
</TD>
</TR>
</TABLE>

J'ai mis au debut comme langue par default francais, quand je change de langue ya tout qui change nikel, mais dès que j'appuie sur le lien, bien sur tout se réinitialise et se met en francais !
j'ai essayé en mettant index.php?langue=allemand&page=1
ca me met tout en allemand...
En fait il faudrait que le langue=allemand reste apres l'avoir selectionner.
Ou peut etre vous avez un autre systeme de cadre a me proposer?

a++
Vincent

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 18:43:34

Comme je te l'avais dit je ne connais pas vraiment ces scripts qui permettent de changer de langue donc les conseils que je te donne sorte de ma petite tête qui connait le strict minimum en PHP donc j'arrive un peu à s'atturation d'idée.
Mais pour l'instant je te dirait que c'est à ce moment qu'interviennent les cookies.
Une fois que la personne à choisi sa langue il faut que tu envoies un cookies. Ensuite lorsque la personne se connecte pour contourné la réinitialisation en français, tu verifie si le cookies existe donc en gros si la variable $HTTP_COOKIE_VARS["langue"] est renvoyé.
Si oui et ben ton utilisateur gardera son langage qu'il a choisie...

Je pense que ça devrait marcher comme ça

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 18:55:19

Voui je pense, mais c'est au niveau du cookie que j'ai un problème, j'ai fais le test que tu m'a dis et il le detect pas il marque :
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in e:\easyphp\easy php 1.6\www\tests\index.php on line 42
Pour le créé je met
setcookie("langue",$allemand,time()+365*24*3600);
tout en haut de la page, comprend pas:-/

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 19:03:22

Je pense que je ferais un truc dans le genre:

Il faut vérifier la présence du cookies:


Code:


include ("français.php");

$verif = $HTTP_COOKIE_VARS["langue"];

if($verif =="français" || "allemand" || "anglais")
{
include ("$verif.php");
}
else
{
include ("français.php");
}

Là on est parti du fait que le cookie existe donc il a choisi la langue qu'il a transmit. Et si le cookie n'existe pas il choisi par default la langue française.

Ensuite si l'utilisateur souhaite une autre langue, il clique sur le liens lui permettant de le faire. Et la tu crées tout de suite le cookie avec la veleur choisi. Comme ça quand la page va être rechargé, le script de départ va tout de suite se "connecter" sur le cookies.

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 19:06:23

Essaye avec ça...

setcookie("langue","allemand",time()+365*24*3600,"");


Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 19:25:39

Merci, c'est presque ca, le cookie se cré, pour changer la langue dans les liens j'ai penser quand la personne clique sur le lien index.php?langue=anglais et mettre un $langue dans le cookie pour que la valeur s'attribue mais apparement ca marche pas "fais n'imp lol" ;D

Voila ou j'en suis :

<?
setcookie("langue","$langue",time()+365*24*3600,"");
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php

include ("francais.php");

$verif = $HTTP_COOKIE_VARS["langue"];

if($verif =="français" || "allemand" || "anglais")
{
include ("$verif.php");
}
else
{
include ("français.php");
}
?>

<?php
echo "Choose your language :<BR>";
echo '<a href="index.php?langue=allemand">allemand</a><BR>';
echo '<a href="index.php?langue=anglais">anglais</a><BR>';
echo '<a href="index.php?langue=francais">francais</a><BR>';
?>

<BR>

<?php
echo "$titre";
?>

<BR><BR><BR><a href="?page=1">lien</a><BR><BR><BR>

<TABLE border=1 width=80%>
<TR>
<TD>
<?php
if (isset($_GET["page"])) $page = $_GET["page"];
else $page = 0;
switch ($page)
{
default : include("news.php"); break;
case 1 : include("lien.php"); break;
}
?>
</TD>
</TR>
</TABLE>
</body>
</html>

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 19:27:11

Si je change la langue du cookie, la langue change bien mais comment faire quand la personne clique sur le lien? ???

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 19:37:20

Quand la personne change de lien...


Code:

if ( $langue == "allemand")
{
setcookie("langue","allemand",time()+365*24*3600,"");
}
elseif ( $langue == "anglais")
{
setcookie("langue","anglais",time()+365*24*3600,"");
}
ETC...


Mais il doit y avoir une autre sollution que je ne connais pas pour l'instant... désolé mais essaye avec ça ;)

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 21:23:08

Bon voila j'en suis la, comme j'ai la valeur $langue il sait pas kel langue mettre, j'ai une erreur :
Warning: Failed opening '.php' for inclusion (include_path='.;E:\EasyPHP\Easy Php 1.6\php\pear\') in e:\easyphp\easy php 1.6\www\tests\index.php on line 32
la ligne 32 c o niveau du $verif=fr,all,ang
Ensuite je peux choisir ma langue et la seulement il m'envoie un cookie, puis ensuite je peux plus changer de langue, le cookie veut pas se remplacer ! c chiant lol

<?
// Envoie du cookie avec comme langue par default francais
setcookie("langue","$langue",time()+365*24*3600,"");

if ($langue=="allemand")
{
setcookie("langue","allemand",time()+365*24*3600,"");
}
elseif ($langue=="anglais")
{
setcookie("langue","anglais",time()+365*24*3600,"");
}
elseif ($langue=="francais")
{
setcookie("langue","francais",time()+365*24*3600,"");
}
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
// Verification si le cookie est bien présent
$verif = $HTTP_COOKIE_VARS["langue"];
// Si la valeur est une de ces trois alors ouverture de la page verif pour plus de précesion
if($verif=="français"||"allemand"||"anglais")
{
include ("$verif.php");
} else {
include ("français.php");
}
?>

<?php
echo "Choose your language :<BR>";
echo '<a href="index.php?langue=allemand">allemand</a><BR>';
echo '<a href="index.php?langue=anglais">anglais</a><BR>';
echo '<a href="index.php?langue=francais">francais</a><BR>';
?>

<BR>

<?php
echo "$titre";
?>

<BR><BR><BR><a href="?page=1">lien</a><BR><BR><BR>

<TABLE border=1 width=80%>
<TR>
<TD>
<?php
if (isset($_GET["page"])) $page = $_GET["page"];
else $page = 0;
switch ($page)
{
default : include("news.php"); break;
case 1 : include("lien.php"); break;
}
?>
</TD>
</TR>
</TABLE>
</body>
</html>

Titre: Re:Site Multilingue
Posté par: trounday le le 25-06-2003 a 22:01:30

Excuse moi gars mais je te promet que demain j'essayerais de mieu t'aider mais demain j'ai un oral de français et je suis pas très au point... :-[
Bonne chance pour cette nuit peut-être trouveras tu la réponse.
Moi je vais potasser ma liste de textes que je n'ai pas lu depuis un bon bout de temps autant te dire que je suis dans la merde...
Ciao bonne soirée
Trounday

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 22:08:28

Chui juste passé hier moi ::), bonne chance ;D

Tciao

Titre: Re:Site Multilingue
Posté par: Vinz le le 25-06-2003 a 22:12:13

MDR je regarde ton profil je vois mulhouse, je mate ton site et que vois-je benoit mislin, moi c'est vincent, de la 1ere ES 2 lol

Titre: Re:Site Multilingue
Posté par: trounday le le 26-06-2003 a 11:07:48

Hoooooooo merde je suis mort de rire... je pensais trop pas que c'etait toi...
Enfin bon ouais j'ai passé mon oral ce matin, c'etait trop la merde j'ai trop foiré mais bon c'etait previsible...
Sinon la je suis chez Marion donc je vais pas m'éterniser sur le net...

Dès que je peux je reviens te filer un coup de main.
Ca me fait plaisir de rencontrer quelqu'un que je connais sur le net.
A+ gars
Trounday

Titre: Re:Site Multilingue
Posté par: Shain le le 26-06-2003 a 15:53:49

Voila, je t'ai pondu un script qui fonctionne ...

<?PHP
// définition de la langue par défaut
$langue = 'francais';

// si un paramètre lang est passé en parammètre dans l'url on l'enregistre dans un cookie
if($_GET[lang])
{
setcookie("langue","$_GET[lang]",time()+365*24*3600,"");
$langue = $_GET[lang];
}
else if($_COOKIES[langue]) $langue = $_COOKIES[langue];

// inclusion du fichier de langue
if($langue == 'francais') include('francais.php');
if($langue == 'anglais') include('anglais.php');
if($langue == 'allemand') include('allemand.php');
?>

Les liens pour changer de langue :

nom_page.php?lang=francais
nom_page.php?lang=anglais
nom_page.php?lang=allemand

Titre: Re:Site Multilingue
Posté par: Vinz le le 26-06-2003 a 17:51:35

Encore un problème :( Voila mon code actuel, mais je dois cliquer deux foi sur la langue pour que ca change, comment éviter ca plz?

<?php

// langue par default
$langue = 'francais';

// parametre langue enregistré dans un cookie
if($_GET[langue])
{
setcookie("langue","$_GET[langue]",time()+365*24*3600,"");
$langue = $_GET[langue];
}
else if($_COOKIES[langue]) $langue = $_COOKIES[langue];

// inclusion du fichier de langue
if($langue == 'francais') include('francais.php');
if($langue == 'anglais') include('anglais.php');
if($langue == 'allemand') include('allemand.php');

// vérification après un lien quel est la langue
$verif = $HTTP_COOKIE_VARS["langue"];
if($verif == 'francais') include('francais.php');
if($verif == 'anglais') include('anglais.php');
if($verif == 'allemand') include('allemand.php');

?>

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
echo "Choose your language :<BR>";
echo '<a href="index.php?langue=allemand">allemand</a><BR>';
echo '<a href="index.php?langue=anglais">anglais</a><BR>';
echo '<a href="index.php?langue=francais">francais</a><BR>';
?>

<BR>

<?php
echo "$titre";
?>
<BR><BR><BR><a href="?page=1">lien</a><BR><BR><BR><a href="?page=2">lien2</a><BR><BR><BR>
<TABLE border=1 width=80%>
<TR>
<TD>

<?php
if (isset($_GET["page"])) $page = $_GET["page"];
else $page = 0;
switch ($page)
{
default : include("news.php"); break;
case 1 : include("lien.php"); break;
case 2 : include("all.php"); break;
}
?>

</TD>
</TR>
</TABLE>
</body>
</html>
Merci, vincent.

Titre: Re:Site Multilingue
Posté par: Vinz le le 26-06-2003 a 18:58:15

En fait ca marche si je met
// vérification après un lien quel est la langue
$verif = $HTTP_COOKIE_VARS["langue"];
if($verif == 'francais') include('francais.php');
if($verif == 'anglais') include('anglais.php');
if($verif == 'allemand') include('allemand.php');

dans chaque page (chaque lien koi) et non dans l'index, mais ca risque de faire beaucoup d'include, c lourd ca, comment je peux évité?

Titre: Re:Site Multilingue
Posté par: Shain le le 29-06-2003 a 15:58:36

Citation:
dans chaque page (chaque lien koi) et non dans l'index, mais ca risque de faire beaucoup d'include, c lourd ca, comment je peux évité?


Tu ne pourras pas l'éviter ... à moins d'utiliser une base de données pour stocker tes contenus ...

Titre: Re:Site Multilingue
Posté par: Vinz le le 29-06-2003 a 19:41:27

Sisi j'ai évité, en évitant de mettre $langue=francas par default j'ai mis
if($langue != 'allemand' || 'anglais' || 'francais' ) include('francais.php');
et ensuite ca marche perfect dans chaque page ;-)

Byou
Vincent

Titre: Re:Site Multilingue
Posté par: trounday le le 30-06-2003 a 13:10:10

Hey Vinz !
Alors ça y est ton script est enfin fini... :)
Au fait tu fais un site de quoi ?

A+
Trounday


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.