2017-10-04 2 views
1

내 웹 사이트는 2 개 언어로 작업하고 있습니다.가변 언어 웹 사이트

그 목적으로 세션을 사용했습니다. 사용자가 언어 아이콘을 클릭하면 언어가 변경되고 모든 것이 잘되지만 언어를 선택하지 않고 웹 사이트를 처음 열면 기본 언어가로드되지 않고 단어가 나타나지 않습니다.

<?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> 

을 선택 아이콘 나는 단어의 번역 인쇄 내 language.inc.php 파일입니다 이것은 예입니다.

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; 
} 

문제의 이유는 아마 당신의 $_SESSION'en-us'처럼, 여러분의 기대와 다른 lang 값을 가지고 있다는 것입니다. 정확한 원인을 알고 싶으면 새 세션에서 문제를 재현하고 var_dump($_SESSION);으로 전화하십시오. lang이 있으면 문제가 그 원인입니다.

EDIT :

여기에 표시된 용액

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 예, 해당 GET 매개 변수가없는 경우이 부분이 실행되지 않는 if의 언어를 처리하는 코드가 있습니다. 초기 하중의 경우. –

+0

어떻게하면됩니까? –