2010-04-13 48 views
1

我想把第二語言放在我的網頁上。我決定使用不同的文件來分隔不同的語言 - language/pl/projects.ln包含波蘭文,language/en/projects.ln - 英文。這些擴展只是告訴其他語言文件,內容是簡單的PHP:PHP4包括會話期間的文件

$lang["desc"]["fabrics"]["title"] = "MATERIAŁY"; 
$lang["desc"]["fabrics"]["short_text"] = "Jakiś tam tekst na temat materiałów"; 
$lang["desc"]["services"]["title"] = "USŁUGI"; 
$lang["desc"]["services"]["short_text"] = "Jakiś tam tekst na temat usłóg"; 

然後在索引頁我用它像這樣:

session_start(); 
if (isset($_SESSION["lang"])) { 
    $language = $_SESSION["lang"]; 
} else { 
    $language = "pl"; 
} 
include_once("language/$language/projects.ln"); 
print $lang["desc"]["fabrics"]["title"]; 

的問題是,如果會話變量沒有設置一切工作正常,數組項目內容顯示,但一旦我改變和設置$_SESSION["lang"]什麼都不顯示。我測試了包含本身是否可以工作,將print "sth";放置在項目的開始位置,並且該文件與$_SESSION["lang"]的設置和取消設置都可以正常工作。

請幫忙。

回答

1
  1. 你可以測試session_start()的返回值 - 如果它是false,它無法啓動會話。
  2. 是否在向瀏覽器輸出任何內容之前調用它?如果頭文件已經發送並且您的error_reporting級別太低,您甚至不會看到錯誤消息。
  3. 很愚蠢,但是 - 您將$ _SESSION ['lang']的值設置爲像「en」這樣的有效值嗎?當您將其作爲默認值在其他塊而不是「pl」中時,英文翻譯是否正確加載?
  4. 「JakiśTAM tekst吶TEMATusłóg」 - > 「usług」 :)

你能告訴我們什麼呢這一個輸出:

if(session_start()) { 
    echo SID, '<br/>'; 
    if(isset($_SESSION['lang'])) { 
     echo 'lang = "',$_SESSION['lang'], '"'; 
    } 
} 
0

會話啓動正常,不小心我設法解決它。

我將$_SESSION['lang']更名爲$_SESSION['curr_lang'],現在它工作的很好。它接近它不喜歡具有相同名稱(?)的數組和會話變量。