2017-10-04 8 views
1

私のウェブサイトは2つの言語で動作しています。可変言語のウェブサイト

私はその目的のためにセッションを使用しました。ユーザーが言語アイコンをクリックすると言語が変更され、すべて正常ですが、言語を選択せず​​にWebサイトを初めて開くと、デフォルト言語が読み込まれず、その単語は表示されません。

これここに私の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; 
} 

問題の理由は、おそらくあなたの$_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はい、あなたは、if内の言語を扱うコードを持っています。つまり、対応するGETパラメータがない場合、この部分は実行されません。初期荷重の場合。 –

+0

どうすればいいですか? –

関連する問題