2010-07-24 65 views
2

langauage web。我設置3個鏈接,法語......(HREF = changeLanguage.php?LANG = FR,ES,EN)幫助您更改頁面語言而不更改當前頁面(PHP)

changLanguage.php

session_start(); 

if(isset($_SESSION['bckTo']) && isset($_GET['lang'])){ 

    $lang = preg_replace('/[^a-z]/','',trim($_GET['lang'])); 

    #TODO 
    #More vlidation ... 

    $full_url = $_SESSION['bckTo']; 
    $full_url = str_replace(array('&lang=en','&lang=es','&lang=fr'),'',$full_url); 

header('Location: '.$full_url.'&lang='.$lang.''); 
} 

$ _SESSION [ 'bckTo']保存當前URL例如:mysite.com/index.php?id=x & n_d = y 問題是,標題將網址轉換爲:mysite.com/index.php?id=x & n_d = y & lang = en。

任何想法會感激

回答

4

爲什麼不直接設置在會話中的語言,而不是通過GET的?然後你只需要放一個鏈接來改變語言,然後重定向到頁面。考慮到你已經在使用會話,這可能是最好的。

例子: <a href="changeLanguage.php?lang=en">English</a>

在changeLanguage:

//code up here 
if (isset($_SESSION['bckTo') && isset($_GET['lang'])) { 
    // $lang code here 
    $_SESSION['lang'] = $lang; 
    header('Location: ' . $_SESSION['bckTo']); 
}

那麼你只需要改變你的語言檢查/顯示的代碼來檢查會話變量,而不是GET(實際頁面)。

+0

謝謝您的回答,在這裏,我如何進行,我定義的語言變量(定義(「INDEX_TITLE」,「歡迎......」);),我有一個腳本會檢查獲得變量幷包含正確的翻譯文件。 (en,lang.en.php)... – jartaud 2010-07-25 00:25:32

+1

需要注意的是,每個網頁的語言版本都會存在於同一個網址下。在同一個網址下提供不同的內容對搜索引擎優化不利,因爲替代語言版本從未被編入索引,或者運行哪個版本的索引。如果是可公開訪問的資源,則URL *應包含該語言。對於像會員專頁這樣的東西,這並不重要。 – deceze 2010-07-25 00:26:38

+0

感謝哥們,這是一個好點,但如果我們關心搜索引擎優化,我們需要一個多語言網站,我們可以做些什麼? – jartaud 2010-07-25 00:40:30