Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ERROR] Site multi langue

11 juin 2021 à 12:40:47

Bonjour à tous

Hier j'ai essayé le tuto d'un site multi langue, mais il y a l'erreur suivante qui s'affiche :

Notice: Undefined variable: HTTP_SERVER_VARS in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\Lang.php on line 12


Merci de votre aide !


Code :

<?php

//On vérifie si le cookie existe déjà
if(isset($HTTP_COOKIE_VARS['lang'])) {

        //Si oui, on créer une variable $lang avec pour valeur celle du cookie.
    $lang = $HTTP_COOKIE_VARS['lang'];

}
else {
    // si le cookie n'existe pas on tente de reconnaitre la langue par défaut du navigateur utilisé
    $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);

    //On définit la durée du cookie (avant son expiration)
    $expire = 365*24*3600;
    //Puis on créé le cookie
    setcookie("lang", $lang, time() + $expire);

    switch($lang) {
    //Si lang=fr on inclut le fichier de langue française
    case 'fr':
        include('lang/fr-lang.php');
    break;
    //Si lang=en on inclut le fichier de langue anglaise
    case 'en':
        include('lang/en-lang.php');
    break;
}
}
?>



  • Partager sur Facebook
  • Partager sur Twitter
11 juin 2021 à 12:52:35

Bonjour, change de tuto HTTP_SERVER_VARS est obsolète et à été supprimé. 

Voir https://www.php.net/manual/fr/reserved.variables.server.php

Édit :  version 4.1.0 Introduction de $_SERVER , rendant obsolète $HTTP_SERVER_VARS.

-
Edité par AbcAbc6 11 juin 2021 à 12:59:29

  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 15:34:16

Bonjour,

je reviens car j'ai essayé ce tuto à la lettre, mais les erreurs sont multiples lors de l'exécution du fichier index.php ; elles sont les suivantes :

Notice: Undefined index: lang in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 3

Notice: Undefined index: lang in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 7

Warning: include(lang/fr-lang.php): failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 12

Warning: include(): Failed opening 'lang/fr-lang.php' for inclusion (include_path='.;C:\php\pear') in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 12

Notice: Use of undefined constant TXT_ACCUEIL_INDEX - assumed 'TXT_ACCUEIL_INDEX' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\index.php on line 6
TXT_ACCUEIL_INDEX
Meteo du jour :
Notice: Use of undefined constant TXT_METEO - assumed 'TXT_METEO' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\index.php on line 8
TXT_METEO
Conseil du jour :
Notice: Use of undefined constant TXT_CONSEIL_INDEX - assumed 'TXT_CONSEIL_INDEX' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\index.php on line 10
TXT_CONSEIL_INDEX

Merci de votre aide !

http://www.phpdebutant.org/article107.php

-
Edité par barscha 14 juin 2021 à 15:34:55

  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 15:59:22

Bonjour, Peut-on avoir le code de ta page decide-lang stp?
  • Partager sur Facebook
  • Partager sur Twitter

Parfois, arrêter 5 minutes son développement permet de mieux repartir face à un problème ;)

14 juin 2021 à 17:20:30

Le voici :

<?php

  	 if ($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
  	 include('lang/fr-lang.php');
  	 }

  	 else if ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
  	 include('lang/en-lang.php');
  	 }

  	 else {                       // si aucune langue n'est déclarée on inclut le fichier fr-lang.php par défaut
  	 include('lang/fr-lang.php');
  	 }

  	 ?>



  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 17:23:20

Tu dois d'abord vérifier que $_GET['lang'] existe (if (isset($_GET['lang']))). Tu peux remplacer les $_GET['lang']=='fr' par isset($_GET['lang']) && $_GET['lang']=='fr' idem pour en.

Sinon une autre méthode, bien meilleure :

const DEFAULT_LANGUAGE = 'fr';
const AVAILABLE_LANGUAGES = [
    'fr' =&gt; 'lang/fr-lang.php',
    'en' =&gt; 'lang/en-lang.php',
];

include AVAILABLE_LANGUAGES[isset($_GET['lang']) &amp;&amp; array_key_exists($_GET['lang'], AVAILABLE_LANGUAGES) ? $_GET['lang'] : DEFAULT_LANGUAGE];

-
Edité par julp 14 juin 2021 à 17:30:20

  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 17:46:01

J'ai repris ton code, cependant il m'affiche comme erreur :

Parse error: syntax error, unexpected '=', expecting ']' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 4

  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 17:49:59

Ce qui correspond à ?

Pour quelle version de PHP ?

Tu as changé les &gt; en > et les &amp; en & ? (foutu forum)

-
Edité par julp 14 juin 2021 à 17:50:40

  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 23:42:35

Maintenant l'affichage de index.php est bon.

Mais comme j'ai dis j'ai suivi un tuto (le lien ci-dessus), mais je ne sais pas comment choisir la langue...

Comment je dois utiliser le cookie que j'ai créé ?

  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 23:47:53

barscha a écrit:

Comment je dois utiliser le cookie que j'ai créé ?

Bonsoir, avez vous lu le cours PHP de ce site partie cookies?



  • Partager sur Facebook
  • Partager sur Twitter
14 juin 2021 à 23:52:48

Non, je le ferai puis j'en dirais des nouvelles.
  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2021 à 16:07:11

BONJOUR

Je reviens car je n'ai pas trouvé comment faire choisir la langue au visiteur de la page index.php.

Comment faire alors, je n'ai pas trouvé sur le tuto ci-dessus.

Je vous remercie. (le code n'a pas changé)

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2021 à 16:31:32

Bonjour, c'est en paramètre dans l'URL.

index.php?lang=fr ou index.php?lang=en

Je ne vois pas ce qu'il y a de compliquer la dedans!!  C'est dans le cours PHP de ce site.

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2021 à 16:53:37

D'accord, mais je dois écrire manuellement dans l'URL ?

Ce que je cherche c'est mettre un menu déroulant où l'utilisateur choisit la langue, donc je dois créer le cookie dans ce bouton ?

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2021 à 20:12:27

Bonsoir,

>> D'accord, mais je dois écrire manuellement dans l'URL ?

Non c'est à écrire dans les liens que vous proposez à vos visiteurs. Le menu de choix de langue.

Le cookies, c'est pour mémorisé le choix de l'utilisateur si celui-ci change de page affin qu'il ne doive pas refaire son choix.

-
Edité par AbcAbc6 23 juin 2021 à 20:13:39

  • Partager sur Facebook
  • Partager sur Twitter