我的网站使用2种语言。
我为此目的使用了会话。当用户点击语言图标时,语言会发生变化,一切都很好,但是当网站首次打开而没有选择语言时,不会加载默认语言,也不会显示单词。
这是我的language.inc.php文件
<?php
session_start();
$langForSelection = isset($_SESSION['lang']) ? $_SESSION['lang'] : 'en'; //default to english language
if(isset($_GET['langSelect'])){
//allow only 2 for now ( english / turkish)
$langForSelection = "";
switch($_GET['langSelect']){
case 'en':
$langForSelection = 'en';
break;
case 'tr':
$langForSelection = 'tr';
break;
default:
break;
}
if(isset($langForSelection)){
$langForSelection2=$_SESSION['lang']=$langForSelection;
// setcookie('lang',$langForSelection,time()+24*7*60*60);//set cookie to expire in 7 days
}
}
&#13;
这是用户选择语言的图标
<div><a href="?langSelect=en" title="English" id="English" class="active_lang"><img src="images/united-kingdom.png" class= "active" style="float: right; width: 24px;height:24px ;padding: 4px"> </a>
<a href="?langSelect=tr" title="Turkish" id="Turkish"><img src="images/turkey.png" style="float: right; width: 24px;height:24px; padding: 4px"> </a>
在这里我打印出单词的翻译 这是一个例子
require_once('inc/languages.inc.php');
require_once('Languages/common.inc.php');
$langForSelection2=$_SESSION['lang'];
<li><a href="Logs.php?id=access" class="details" data-ajax="false"><?php echo $arrLang[$langForSelection2]['log_login']; ?></a></li>
再次加载网页时,在用户点击语言图标之前,我的问题就会被重现,但是当他点击语言时,一切正常。
答案 0 :(得分:0)
您可以将开关更改为默认为英语:
switch($_GET['langSelect']){
case 'en':
$langForSelection = 'en';
break;
case 'tr':
$langForSelection = 'tr';
break;
default:
$langForSelection = 'en';
break;
}
您遇到问题的原因可能是$_SESSION
的{{1}}值与您的期望值不同,例如lang
。如果您想知道确切的原因,可以使用新会话重现问题并致电'en-us'
如果它有var_dump($_SESSION);
,那么这就是您遇到问题的确切原因。
编辑:
此处显示的解决方案还不够,因为这部分
lang
位于if(isset($langForSelection)){
$langForSelection2=$_SESSION['lang']=$langForSelection;
// setcookie('lang',$langForSelection,time()+24*7*60*60);//set cookie to expire in 7 days
}
内。您需要将其移到if
。