Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2006, 13h22   #1
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
Par défaut [Cookies] multi langue PHP avec cookie

Bonjour,

voila je cherche à developper un site multi-lang en php. J'ai donc un script si dessous qui en fonction de la langue va orienter un vers un fichier contenant les traductions dans la langue choisie . Ce script utilise des cookies ....
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php   
 
    if(isset($HTTP_COOKIE_VARS['lang'])) {  
        $lang = $HTTP_COOKIE_VARS['lang'];  
    } else {  
        // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur  
        $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);   
    }  
 
    //script d'origine  
    if ($lang=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
        include('fr.php');   
    } elseif ($lang=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
        include('en.php');   
    }   
    //fin du script d'origine  
 
    //définition de la durée du cookie (1 an)  
    $expire = 365*24*3600;   
 
    //enregistrement du cookie au nom de lang  
    setcookie("lang", $lang, time() + $expire);   
 
    ?>
ma question est comment arriver à transmettre la variable 'lang' qui doit être enregistrée dans le cookie puis utilisée dans le script ci dessus pour determiner la langue. (en gros quel lien dois je mettre derriere le petit drapeau anglais ou Francais ?)
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2006, 13h27   #2
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Tu pouvais aussi poser ta question dans le post de Linon un peu plus bas et partagez ton experience avec lui.

Sinon pour ta question de lien à mettre il faut que tu l'envoi vers une page php ou tu recup la langue ( en GET par exemple). Ensuite tu pose le cookie avec setcookie

Voilà

Pierre

PS : plutôt que HTTp_COOKIE_VAR utilise $_COOKIE c'est plus court
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 17h03   #3
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
voilà j'ai mis mon code à jour

j'ai deux lien pour choisir la lang et acceder à ma page
<a href="page1.php?lang=en">anglais</a><br />
<a href="page1.php?lang=fr">francais</a><br />

cela appel le script ci-dessous (qui choisi la langue) et determine le ficher de traduction à utiliser.

....mais j'ai une erreur ....vous avez une idée ?

Code :
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\ser\multilang\decide-lang.php:1) in c:\program files\easyphp1-8\www\ser\multilang\decide-lang.php on line 22
voici mon script decide-lang.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 <?php   
    if(!empty($_GET['lang'])) 
    if(isset($_COOKIE['lang'])) {  
       $lang =$_COOKIE['lang'];  
    } else {  
       // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur  
       $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);   
   }  
 
   //script d'origine  
   if ($lang=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
       include('fr-lang.php');   
   } elseif ($lang=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
        include('en-lang.php');   
    }   
    //fin du script d'origine  
 
    //définition de la durée du cookie (1 an)  
    $expire = 365*24*3600;   
 
   //enregistrement du cookie au nom de lang  
    setcookie("lang", $lang, time() + $expire);   
 
 
?>
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2006, 17h46   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
L'envoi d'un cookie vers le poste de l'utilisateur ne peu se faire que si celui-ci n'a reçu aucune donnée de la part du script.

Verifies que tu n'as pas laissé un echo, du html, des espaces. Pour etre sur <? doivent etre les premiers caractères de ta page.
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 11h22   #5
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
j'avais effectivement un espace avant <?php.
Mais j'ai encore un pb....mon script ne marche pas du tout ! Le choix de la langue ne se fait pas .....c'est toujours en français meme quand je clique sur anglais ... je pense que le cookie ne s'initialise pas et qu'il prends la langue du navigateur ....une idée ?

j'ai une page index avec les liens
Code :
1
2
 <a href="page1.php?lang=en">anglais</a><br />
	<a href="page1.php?lang=fr">francais</a><br />

un script decide-lang
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?   
if(!empty($_GET['lang'])) 
if(isset($_COOKIE['lang'])){  
$lang=$_COOKIE['lang'];  
} else{  
// si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur  
$lang=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);   
}     
//script d'origine  
if ($lang=='fr'){           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
include('fr-lang.php');   
} elseif($lang=='en'){      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
include('en-lang.php');   
}   
//fin du script d'origine        
//définition de la durée du cookie (1 an)  
$expire =365*24*3600;       
//enregistrement du cookie au nom de lang  
setcookie("lang", $lang, time()+ $expire);   
?>
un fichier de traduction ici en français et le meme en anglais
Code :
1
2
3
4
<?php 
define('TXT_METEO', 'Il fait un soleil radieux !');  
define('TXT_CONSEIL_INDEX', 'Faites du PHP !'); 
?>
et la page d'affichage
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php  
 require("decide-lang.php");  
    ?>  
    <html>  
    <body>  
 
    <br>  
    Meteo du jour : <?php echo TXT_METEO; ?>  
    <br>  
    Conseil du jour : <?php echo TXT_CONSEIL_INDEX; ?>  
 
 
    </body>  
    </html>
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 12h46   #6
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Citation:
Envoyé par FCYPBA
PS : plutôt que HTTp_COOKIE_VAR utilise $_COOKIE c'est plus court
C'est surtout que $HTTP_COOKIE_VARS est obsolète... comme tous les $HTTP_*_VARS... .. .

Sinon voila comment je te conseil de faire... .. .

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// on crée un constante avec le chemin du répertoire courant
define('LANG_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);

// on cherche dans $_GET et $_COOKIE si la variable lang existe
if(isset($_GET['lang']) && !empty($_GET['lang']))
   $lang = $_GET['lang'];
elseif(isset($_COOKIE['lang']) && !empty($_COOKIE['lang']))
      $lang = $_COOKIE['lang'];
else
{
      // la variable lang n'existe pas on va donc chercher dans les languages acceptés par le navigateur
      $lang_codes = array();
      $accept_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : @getenv('HTTP_ACCEPT_LANGUAGE');
      
      if(!empty($accept_lang)) 
      {
            $accept_lang = explode(',',$accept_lang);
            // on recherche les languages acceptés en fonction de leur ordre d'importance
            foreach($accept_lang  as $lang_spec) 
            {
                  if (preg_match('/([a-z]+)(?:-[a-z]+)?(?:;q=(\d+\.\d+))?/', trim($lang_spec), $matches)) 
                  {
                        $lang_code = $matches[1];
                        $qvalue      = isset($matches[2]) ? $matches[2] : 1;
                        
                        if ($qvalue > 0.0001)
                              $lang_codes[$lang_code] = isset($lang_codes[$lang_code]) ? max($lang_codes[$lang_code], $qvalue) : $qvalue;
                  }
            }
            
            // on classe les languages acceptés du plus important au moins important
            arsort($lang_codes, SORT_NUMERIC);
            
            // on vérifie que les fichier langue existe le premier toruvé c'est le bon
            foreach(array_keys($lang_codes) as $lang_code) 
            {
                  if(is_file(LANG_PATH.$lang_code.'-lang.php'))
                  {
                        $lang = $lang_code;
                        break;
                  }
            }
      }
      else $lang = 'fr';
}

// on vérifie que le fichier langue existe
if(!is_file(LANG_PATH.$lang.'-lang.php'))
      $lang = 'fr';

// on inclu et on met à jour le cookie
include(LANG_PATH.$lang.'-lang.php');
setcookie("lang", $lang,( time()+(365*24*3600 )));
@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 16h27   #7
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
ok merci beaucoup pour ces corrections !
ça fonctionne très bien.
Je voudrais juste savoir maintenant quels liens je doit mettre lorsque je veux passer de page en page pour conserver la langue choisie initialement ?

merci
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 16h44   #8
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Citation:
Envoyé par heteroclite
Je voudrais juste savoir maintenant quels liens je doit mettre lorsque je veux passer de page en page pour conserver la langue choisie initialement ?
Aucun la langue est sauvée dans le cookie... la seule condition c'est que le navigateur de l'internaute accept les cookies... sinon tu dois juste créer un lien par langue sur chaque page en fonction de l'adresse de la page affichée... du genre...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// si PHP4
if(!function_exists('http_build_query'))
{
        function http_build_query($vars, $prefix = '')
        {
                  if(!is_array($vars))
                          return false;
                                    elseif(empty($vars))
                                            return '';
                  
                  $ret = '';
                  
                  foreach($vars as $name => $value)
                          $ret .= $prefix.$name.'='.urlencode($value).'&';
                  
                  return substr( $ret, 0, -1);
        }
}

// on recupere l'url de la page courante
$url = (!empty($_SERVER['HTTPS']) ? 'https' : 'http').' ://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

// on verifie si il y a des parametre passés dans l'url s'il y en a on les récupère
$query_str = '';

if(isset($_SERVER['QUERY_STRING']))
{
        if(!empty($_SERVER['QUERY_STRING']))
                  $query_str = $_SERVER['QUERY_STRING'].'&';
 
}
elseif(!empty($_GET))
      $query_str = http_build_query($_GET).'&';

// on vire lang s'il y est 
$query_str = preg_replace('~&?lang=[a-z]{2}~','',$query_str);

// on affiche les liens
echo '<a href="'.$url.'?'.$query_str.'lang=en">anglais</a><br />
      <a href="'.$url.'?'.$query_str.'lang=fr">francais</a><br />';
@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h01   #9
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
y' aurai pas un moyen pour eviter de selectionner la langue à chaque page de faire le choix sur l'index et de récupérer la variable enregistrée dans le cookie pour les autres pages ?

je m'explique

index: choix de la langue:
Code :
1
2
<a href="page1.php?lang=en">anglais</a><br />
<a href="page1.php?lang=fr">francais</a><br />
puis affichage de la page 1 avec des liens vers les autres pages (page 2) type

Code :
<a href="page2.php?lang=.$_COOKIE['lang'].'">
c'est possible ça ?
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h05   #10
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Les cookies sont transmis de page en page sans que tu est besoin de t'en soucier.

Le premier post de kankrelune te donne clairement la méthode a utiliser.
- Tu test le _GET['lang'] au cas ou l'utilisateur change de langue
- Tu test le _COOKIE['lang'] pour recupere la langue
- Si aucun des deux alors langue par défaut
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h25   #11
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Citation:
Envoyé par heteroclite
y' aurai pas un moyen pour eviter de selectionner la langue à chaque page de faire le choix sur l'index et de récupérer la variable enregistrée dans le cookie pour les autres pages ?

je m'explique

index: choix de la langue:
Code :
1
2
<a href="page1.php?lang=en">anglais</a><br />
<a href="page1.php?lang=fr">francais</a><br />
puis affichage de la page 1 avec des liens vers les autres pages (page 2) type

Code :
<a href="page2.php?lang=.$_COOKIE['lang'].'">
c'est possible ça ?
C'est déja le cas... mais prenons un autre cas de figure... si l'internaute arrive sur une autre page que l'acceuil par exemple après avoir suivi un lien qu'on lui a donné ou après avoir fait une recherche sur un moteur de recherche... il faut lui laisser la possibilité de changer de langue... d'où l'interet de la deuxieme portion de code que je te donne... tu laisse les deux liens dans un coin discret de tes pages (tu peux remplacer la langue en texte par une petite image avec le drapeau de la langue aussi) et comme ça on peut changer à tout moment... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h26   #12
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
il y a un truc que je comprends pas:

1 je selectionne la langue sur l'index (anglais)
2 mon script enregistre la langue dans le cookie
3 j'arrive sur la page 1 je clique sur un lien vers la page 2 (<a href="page2.php">) (page2 qui contient :
Code :
require("decide-lang.php");
)

la page 2 devrait s'afficher en anglais non ? puisque le le fichier decide-lang devrait voir dans le cookie que la langue = en


eh bien non ....elle s'affiche en francais ...


il y a un probleme ??? je vois pas ...
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h30   #13
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
peux tu mettre

Code :
1
2
3
4
 
echo '<pre>';
print_r($_COOKIE);
echo '</pre>';
dans ta page2... juste après le require('decide-lang.php'); puis refaire le test de changement de page et nous poster le tableau qui s'affiche sur ta page2... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h35   #14
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
resultat du tableau

je signale que lorsque je selectionne la langue sur l'index la page 1 s'affiche dans la langue choisie . lors du passage à la page 2 (avec un lien simple page2.php) ....la langue devient systematiquement le francais
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h39   #15
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Ton navigateur accepte les cookies au moins... .. ?

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h42   #16
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
oui....et pourtant ça a pas l'air de marcher
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h44   #17
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
met

error_reporting(E_ALL);

au début de ton fichier decide-lang.php puis retest... le cookie n'est pas écrit surement parce qu'il y a du contenu qui est envoyé en amont... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h50   #18
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
je viens de le rajouter.....aucun changement...même comportement...c'est sensé produire un log d'erreur ?
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 17h55   #19
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Citation:
Envoyé par heteroclite
je viens de le rajouter.....aucun changement...même comportement...c'est sensé produire un log d'erreur ?
Aucune erreur ne s'affiche ? tu l'as bien mis au début de ton fichier decid-lang... est ce que tu as des echo ou du html qui s'affiche avant l'inclusion de ton fichier decid-lang... .. ?

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 18h01   #20
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
Voici mes codes:

index
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<p>
    <a href="page1.php?lang=en">anglais</a><br />
	<a href="page1.php?lang=fr">francais</a><br />
 
</p>
 
</body>
 
</html>
decide-lang
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?
error_reporting(E_ALL);
 
// on crée un constante avec le chemin du répertoire courant
define('LANG_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
 
// on cherche dans $_GET et $_COOKIE si la variable lang existe
if(isset($_GET['lang']) && !empty($_GET['lang']))
   $lang = $_GET['lang'];
elseif(isset($_COOKIE['lang']) && !empty($_COOKIE['lang']))
      $lang = $_COOKIE['lang'];
else
{
      // la variable lang n'existe pas on va donc chercher dans les languages acceptés par le navigateur
      $lang_codes = array();
      $accept_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : @getenv('HTTP_ACCEPT_LANGUAGE');
 
      if(!empty($accept_lang)) 
      {
            $accept_lang = explode(',',$accept_lang);
            // on recherche les languages acceptés en fonction de leur ordre d'importance
            foreach($accept_lang  as $lang_spec) 
            {
                  if (preg_match('/([a-z]+)(?:-[a-z]+)?(?:;q=(\d+\.\d+))?/', trim($lang_spec), $matches)) 
                  {
                        $lang_code = $matches[1];
                        $qvalue      = isset($matches[2]) ? $matches[2] : 1;
 
                        if ($qvalue > 0.0001)
                              $lang_codes[$lang_code] = isset($lang_codes[$lang_code]) ? max($lang_codes[$lang_code], $qvalue) : $qvalue;
                  }
            }
 
            // on classe les languages acceptés du plus important au moins important
            arsort($lang_codes, SORT_NUMERIC);
 
            // on vérifie que les fichier langue existe le premier toruvé c'est le bon
            foreach(array_keys($lang_codes) as $lang_code) 
            {
                  if(is_file(LANG_PATH.$lang_code.'-lang.php'))
                  {
                        $lang = $lang_code;
                        break;
                  }
            }
      }
      else $lang = 'fr';
}
 
// on vérifie que le fichier langue existe
if(!is_file(LANG_PATH.$lang.'-lang.php'))
      $lang = 'fr';
 
// on inclu et on met à jour le cookie
include(LANG_PATH.$lang.'-lang.php');
setcookie("lang", $lang, time())+(365*24*3600);   
?>
page1

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php  
 require("decide-lang.php");  
    ?>  
    <html>  
    <body>  
 
    <br>  
    Meteo du jour : <?php echo TXT_METEO; ?>  
    <br>  
    Conseil du jour : <?php echo TXT_CONSEIL_INDEX; ?>  
	<a href="page2.php">page2</a><br />
 
    </body>  
    </html>
page2
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php  
 require("decide-lang.php");  
 echo '<pre>';
print_r($_COOKIE);
echo '</pre>';
    ?>  
    <html>  
    <body>  
 
    <br>  
    Meteo du jour : <?php echo TXT_METEO; ?>  
    <br>  
    Conseil du jour : <?php echo TXT_CONSEIL_INDEX; ?>  
    </body>  
    </html>
fichier de traduction fr
Code :
1
2
3
4
<?php 
define('TXT_METEO', 'Il fait un soleil radieux !');  
define('TXT_CONSEIL_INDEX', 'Faites du PHP !'); 
?>
fichier de trad en
Code :
1
2
3
4
5
<?php  
define('TXT_METEO', 'The sun is shining !');  
define('TXT_CONSEIL_INDEX', 'Let/s do some PHP !');  
 
?>
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h23.


 
 
 
 
Partenaires

Hébergement Web