2014-11-24 60 views
0

我正在爲娛樂公司製作網站。因爲我們爲很多外國人工作,我試圖讓網站成爲多語言。但是,當我測試完所有內容後,文本回到空白處。我認爲問題在於common.php文件,但我不確定。我用一個做幾乎相同事情的小夥子的common.php。如何讓我的包含功能正常工作?

我在一個頁面上有整個網站(index.php),用戶使用js滑塊功能到下一節。翻譯腳本應該像這樣工作:common.php文件包含在我的index.php中。它檢查用戶使用的語言。然後common.php應該在index.php中加載匹配的字典文件。但它不...

任何關於如何讓我的翻譯文本加載在網站上的幫助將非常感激!

<?php 
/* 
------------------ 
Taal: Nederlands 
------------------ 
*/ 

$lang = array(); 

// Menu 

$lang['MENU_FOTO'] = 'Fotogalerij'; 
$lang['MENU_INFO'] = 'Over ons'; 
$lang['MENU_AGENDA'] = 'Koncerten'; 
$lang['MENU_CONTACT'] = 'Contact'; 
?> 

在我的index.php

<header> 
    <div class="sticky-nav"> 
     <a id="mobile-nav" class="menu-nav" href="#menu-nav"></a> 

     <div id="logo"> 
      <a id="goUp" href="#home-slider" title="Entertainment">Home</a> 
     </div> 

     <nav id="menu"> 
      <ul id="menu-nav"> 

       <li><a href="#foto"><?php echo $lang['MENU_FOTO']; ?></a></li> 
       <li><a href="#work"><?php echo $lang['MENU_INFO']; ?></a></li> 
       <li><a href="#about"><?php echo $lang['MENU_AGENDA']; ?></a></li> 
       <li><a href="#contact"><?php echo $lang['MENU_CONTACT']; ?></a></li> 
      </ul> 
     </nav> 

    </div> 
</header> 

而且的common.php頭部分

<?php 
session_start(); 
header('Cache-control: private'); 

if(isSet($_GET['lang'])) 
{ 
$lang = $_GET['lang']; 

// register the session and set the cookie 
$_SESSION['lang'] = $lang; 

setcookie('lang', $lang, time() + (3600 * 24 * 30)); 
} 
else if(isSet($_SESSION['lang'])) 
{ 
$lang = $_SESSION['lang']; 
} 
else if(isSet($_COOKIE['lang'])) 
{ 
$lang = $_COOKIE['lang']; 
} 
else 
{ 
$lang = 'nl'; 
} 

switch ($lang) { 
    case 'nl': 
    $lang_file = 'nederlands.php'; 
    break; 

    case 'ba': 
    $lang_file = 'bosnisch.php'; 
    break; 

include_once .$lang_file; 
?> 

編輯

我現在甚至試圖在語言文件中的一個直接進入index.php。但是現在我感到非常困惑,因爲這種方式並不適用!

+1

不知道如何讓它工作,但Koncerten使用C不是K – Naruto 2014-11-24 15:53:46

+0

您的語言文件與腳本位於同一目錄中嗎? – Konstantin 2014-11-24 15:58:10

+0

您是否檢查過以確保'$ _GET'已填充? '$ _SESSION'如何? – 2014-11-24 15:58:21

回答

0
include_once($lang_file); 

它是一個函數不是構造

+0

糟糕,你說得對。我改變了它,但它沒有任何區別。 – 2014-11-24 15:54:28

+2

其實它是一個構造而不是一個函數,所以你不應該需要()。 – luator 2014-11-24 15:56:59

+0

@luator可以雙向工作,'include_once $ file;'或'include_once($ file);'是同樣的事情。我更喜歡用() – Refilon 2014-11-24 15:58:10

2

刪除.

include_once $lang_file

1

試圖關閉開關指令。

switch ($lang) { 
    case 'nl': 
    $lang_file = 'nederlands.php'; 
    break; 

    case 'ba': 
    $lang_file = 'bosnisch.php'; 
    break; 
} // close switch 

include_once $lang_file; 
+0

試過,沒有成功.. – 2014-11-24 16:24:56

+0

我嘗試包含代碼,它在我的電腦中工作。所以我認爲問題不在於inlude_once。如果我有其他的想法,我會發佈一個新的答案。 – doydoy44 2014-11-24 16:43:34

0

我發現了。這個問題並不在於de php的編碼。由於某種原因,我的apache服務器的設置搞砸了,它沒有讀取任何php,只有html。所以它實際上顯示了網站,就像你從計算機上而不是從服務器上加載它一樣。

無論如何,感謝您的努力!