我的Site Engine主类的开头有以下主要功能。这用于在我的网站上创建所有页面。所以,在此之前我使用以下内容:
$language = @$_GET['language'];
switch ($language) {
case 'en':
$_SESSION['lang'] = 'en';
break;
case 'tr':
$_SESSION['lang'] = 'tr';
break;
default:
$_SESSION['lang'] = 'en';
break;
}
Template::SetLanguage($_SESSION['lang']);
但是,如果我只刷新没有/?language=LANG_HERE
的页面,它只会恢复为默认的en
。如何编辑它,所以在第一次访问页面时,它将使用默认的ENGLISH,如果以后通过访问/?language=LANG_HERE
设置并加载任何其他页面,它将不会恢复为英语默认值?
答案 0 :(得分:1)
因为,如果您没有$_GET['language']
,则会发生案例default
。
//Starting the session
session_start();
//This is the default language. We will use it 2 places, so i am put it
//into a varaible.
$defaultLang = 'en';
//Checking, if the $_GET["language"] has any value
//if the $_GET["language"] is not empty
if (!empty($_GET["language"])) { //<!-- see this line. checks
//Based on the lowecase $_GET['language'] value, we will decide,
//what lanuage do we use
switch (strtolower($_GET["language"])) {
case "en":
//If the string is en or EN
$_SESSION['lang'] = 'en';
break;
case "tr":
//If the string is tr or TR
$_SESSION['lang'] = 'tr';
break;
default:
//IN ALL OTHER CASES your default langauge code will set
//Invalid languages
$_SESSION['lang'] = $defaultLang;
break;
}
}
//If there was no language initialized, (empty $_SESSION['lang']) then
if (empty($_SESSION["lang"])) {
//Set default lang if there was no language
$_SESSION["lang"] = $defaultLang;
}
答案 1 :(得分:0)
这是因为你有一个默认值,并且当你加载没有NULL
的页面时,$ {语言是/?language=LANG_HERE
,在交换机中选择了默认值。将其包裹在if(!is_null())
$language = @$_GET['language'];
if(!is_null(($laguage)) {
switch ($language) {
case 'en':
$_SESSION['lang'] = 'en';
break;
case 'tr':
$_SESSION['lang'] = 'tr';
break;
default:
$_SESSION['lang'] = 'en';
break;
}
}
答案 2 :(得分:0)
使用cookies。
setcookie('lang', 'en', time()+3600*24*7*4);
将记住您的选择一个月,如果您想让它记住更长时间,请在时间()中添加更大的数字。
另外,你不需要案例&#39; en&#39;在您的交换机中,如果在其他情况下找不到,则它将使用默认值。
$language = $_GET['lang'];
if(!is_null(($language))) {
switch ($language) {
case 'tr':
setcookie('lansg', 'tr', time()+3600*24*7*4);
break;
default:
setcookie('lang', 'en', time()+3600*24*7*4);
break;
}
}
Template::SetLanguage($_COOKIE['lang']);