2014-08-30 81 views
0

我試圖直接更改我網站的語言,而無需重新加載頁面,當我點擊三種語言標誌(德語,法語和英語)中的任意一種時。更改語言而不重新加載

爲了與語言對應,我在點擊一個標誌後保存一個名爲lang的cookie。 我有這取決於客戶端的cookie已存儲在顯示右側的文本的功能LangText($de, $fr, $en);

這是我的功能:

function LangText($de, $fr, $us){ 
    if(!isset($_COOKIE["lang"]) || $_COOKIE["lang"] == "de") echo $de; 
    else if($_COOKIE["lang"] == "fr") echo $fr; 
    else if($_COOKIE["lang"] == "us") echo $us; 
    else return 0; 
} 

到現在爲止我被重定向一個PHP用戶是將Cookie存儲在中,並將用戶重定向到以前的站點。 有沒有可能實現這個沒有任何重新加載?

+0

如果您從未聽說過Ajax,那麼這將是一個選項。 – 2014-08-30 22:30:25

+0

我已經聽說過ajax,但我沒有想到實現這一點,並且我沒有在萬維網上找到任何有用的答案。 – PoTTii 2014-08-30 22:31:38

+1

如果您提供了有關您網站可搜索性的任何信息,那麼您不應該將該語言放入Cookie(搜索引擎不會發送Cookie),而是將其作爲URL的一部分。因爲它將是一個完全不同的資源,那麼只需鏈接到它就會更有意義。這整個「我不想重新加載我的網頁,我只想切換內容」的理念是很多情況下BS的負載,這裏這是其中之一恕我直言。 – CBroe 2014-08-30 22:34:35

回答

0

我也強烈建議語言特定的URI,但這應該工作。需要jQuery

function changeLanguage(lang){ 
    // Replace "lang" cookie with new language 
    document.cookie = "lang="+lang; 
    // Get html of current URI and replace page contents. 
    $("body").load(window.location.href); 
} 

// Call this to switch to German, for example 
changeLanguage("de"); 
0

如果您僅使用PHP管理您的多語言站點,因爲PHP是服務器端語言,您需要重新加載(因爲您需要前往服務器以計算新頁面)。

這沒什麼錯。 在您的應用程序引導程序中,您必須查找語言cookie,檢查其值,並設置語言環境值。

我建議你用cookies管理多種語言,因爲cookies很煩人,現在你必須處理關於cookies使用的法律政策。

您可以使用URI路徑(如en/pt/)來管理多種語言。幾乎所有的PHP框架都可以爲您提供開箱即用的功能。

+0

你是說PHP可以爲我開箱嗎?是否有像使用這樣的文件的簡單可能性?:'xxx.com/abc.php/de'? – PoTTii 2014-08-31 11:03:22

+0

我寫了「PHP框架」。看看,例如,[Yii Framewrok - 多語言和搜索引擎友好](http://www.yiiframework.com/wiki/579/multilanguage-and-seo-friendly/) – PauloASilva 2014-08-31 22:18:26

相關問題