2017-10-04 227 views
1

我的网站正在使用2种语言。muib语言网站

我为此目的使用了会话。当用户点击语言图标时,语言会发生变化并且一切正常,但是当网站第一次打开而未选择语言时,默认语言不会被加载,并且不会显示文字。

这是我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)){ 
 
\t \t $langForSelection2=$_SESSION['lang']=$langForSelection; 
 
     // setcookie('lang',$langForSelection,time()+24*7*60*60);//set cookie to expire in 7 days 
 
    } 
 
}

这里是其中的图标用户选择的语言

<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

你可以改变你的交换机默认为英语:

switch($_GET['langSelect']){ 
    case 'en': 
    $langForSelection = 'en'; 
    break; 
    case 'tr': 
    $langForSelection = 'tr'; 
    break; 
    default: 
    $langForSelection = 'en'; 
    break; 
} 

你的问题的原因可能就是你的$_SESSIONlang价值,这是与你的期望不同,像'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内。您需要将此移至if之外。

+0

谢谢你的回复,但它不起作用 –

+0

@ M.Bwe是的,你有代码处理if中的语言,也就是说,如果你没有相应的GET参数,这个部分将不会运行。在初始负载情况下。 –

+0

我该怎么做? –