Я пытаюсь установить многоязычный веб-сайт с помощью cookie. Все в порядке, но у меня проблемы с настройкой языка по умолчанию. Я получаю сообщение об ошибке «undefined index» в php, когда я попадаю на корневой сайт без параметров.
<?php if (isset ($_COOKIE['CHOIXlang']) && $_GET['langue'] != 'fr' && $_GET['langue'] != 'en' && $_GET['langue'] != 'es') { $langue = $_COOKIE['CHOIXlang']; } else if ($_GET['langue'] == 'en' || $_GET['langue'] == 'fr' || $_GET['langue'] == 'es') { $langue = $_GET['langue']; set_cookie($langue); } else { $langue = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); set_cookie($langue); } ?> <?php function set_cookie($langue) { $expire = 365*24*3600; if (setcookie("CHOIXlang", $langue, time() + $expire) != TRUE) { } else { setcookie("CHOIXlang", $langue, time() + $expire); } } ?>
И в теле:
<?php if ($_GET['langue'] == "fr" || $langue == "fr") { include('lang/fr-lang.php'); } elseif ($_GET['langue'] == "en" || $langue == "en") { include('lang/en-lang.php'); } elseif ($_GET['langue'] == "es" || $langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if ($_GET['langue'] == "fr" || $langue == "fr") { include('lang/fr-lang.php'); } elseif ($_GET['langue'] == "en" || $langue == "en") { include('lang/en-lang.php'); } elseif ($_GET['langue'] == "es" || $langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if ($_GET['langue'] == "fr" || $langue == "fr") { include('lang/fr-lang.php'); } elseif ($_GET['langue'] == "en" || $langue == "en") { include('lang/en-lang.php'); } elseif ($_GET['langue'] == "es" || $langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if ($_GET['langue'] == "fr" || $langue == "fr") { include('lang/fr-lang.php'); } elseif ($_GET['langue'] == "en" || $langue == "en") { include('lang/en-lang.php'); } elseif ($_GET['langue'] == "es" || $langue == "es") { include('lang/es-lang.php'); } ?>
Что я пропустил, чтобы установить язык по умолчанию при открытии веб-сайта?
спасибо
Вам нужно проверить, установлен ли ваш параметр langue: isset($_GET['langue'])
<?php if (!isset($_GET['langue']) { include('lang/default-lang.php'); } elseif ($langue == "fr") { include('lang/fr-lang.php'); } elseif ($langue == "en") { include('lang/en-lang.php'); } elseif ($langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if (!isset($_GET['langue']) { include('lang/default-lang.php'); } elseif ($langue == "fr") { include('lang/fr-lang.php'); } elseif ($langue == "en") { include('lang/en-lang.php'); } elseif ($langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if (!isset($_GET['langue']) { include('lang/default-lang.php'); } elseif ($langue == "fr") { include('lang/fr-lang.php'); } elseif ($langue == "en") { include('lang/en-lang.php'); } elseif ($langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if (!isset($_GET['langue']) { include('lang/default-lang.php'); } elseif ($langue == "fr") { include('lang/fr-lang.php'); } elseif ($langue == "en") { include('lang/en-lang.php'); } elseif ($langue == "es") { include('lang/es-lang.php'); } ?>
в<?php if (!isset($_GET['langue']) { include('lang/default-lang.php'); } elseif ($langue == "fr") { include('lang/fr-lang.php'); } elseif ($langue == "en") { include('lang/en-lang.php'); } elseif ($langue == "es") { include('lang/es-lang.php'); } ?>
Также вам нужно изменить эту строку: $langue = $_GET['langue'];
к этому:
if (isset($_GET['langue'])) $langue = $_GET['langue'];
ОБНОВИТЬ
Вы не можете получить доступ к значению GET, которое не существует. Сначала вам нужно проверить, установлено ли это. isset($_GET['langue'])
возвращает true, если параметр был установлен, поэтому просто используйте эту проверку один раз в начале вашего кода. Я бы предложил следующее:
$langue = ""; if (!isset($_GET['langue']){ $langue = $_GET['langue']; }
затем используйте только $langue
вместо $_GET['langue']
.
Установить значение по умолчанию Lan может быть следующим образом:
if (@$_GET['lang'] == 'en') include('en-lang.php'); else include('fr-lang.php');
Для этого используйте $ _GET:
Это немного длинный, но может быть немного лучше подходит:
<?php session_start(); if (isset($_SESSION['lang'])) $lang = $_SESSION['lang']; if (isset($_GET['lang'])) { $lang = preg_replace('/[^a-zA-Z]/', '', $_GET['lang']); $_SESSION['lang'] = $lang; } if (!isset($lang)) $lang = 'fr'; $langfile = $lang . '-lang.php'; if (file_exists($langfile)) include ($langfile); else include('fr-lang.php'); ?>