2011-08-21 67 views
1

我目前正在開發一個國際化的網站,因此需要使用不同的語言。使用PHP的多語言網站

我有一個名爲「lang」的文件夾,其中包含諸如en.php,no.php等等文件。這些文件由具有不同單詞的數組組成。

我的問題是我應該如何使用它。我應該使用cookie將個人電腦中的語言保存起來嗎?或者我應該保存IP地址併爲其分配一種語言並將其保存在數據庫中,或者我應該在整個網站的url中傳遞一個& land = en參數嗎?

關於如何處理多語言網站的想法和想法?

最佳regarsds的, 亞歷山大

回答

4

我認爲這可能是最好保存用戶的語言在cookie中,因此你不需要通過查詢參數周圍通過。您也可以將其設置爲$_SESSION但是,您應該在每個頁面中接受參數lang=,這將允許任何用戶輕鬆地立即更改語言。新語言應該覆蓋現有的cookie。

$valid_langs = array('en','fr','de','no'); 
if (isset($_GET['lang'])) { 
    // verify that it is a valid language choice before attempting to use it 
    // you may store an array of possibilities. 

    if (in_array($_GET['lang'], $valid_langs)) { 
    $language = $_GET['lang']; 
    setcookie('lang', $_GET['lang']); 
    } 
} 
else if (isset($_COOKIE['lang'])) { 

    // also be sure to check that the language is a valid choice in a cookie too. 
    if (in_array($_GET['lang'], $valid_langs)) { 
    $language = $_COOKIE['lang']; 
    } 
} 
+0

也可以考慮使用HTTP內容協商頭在請求中選擇默認語言,如果您既沒有看到也沒有餅乾明確的參數。 –

+0

+1,讓我再提一下'url = lang ='的另一個好處是你可以提供永久鏈接到頁面的某個語言版本。 – nobody

0

我使用了一些簡單的方法......我確實保持calculla的網站。這就像兩個語言:波蘭語(PL)和英語(EN)。

如果有人進入域calculla.pl那麼我確實假設默認值是波蘭語。如果有人輸入域名calculla.com,我認爲它是英文。但後來,網站內部的每個「鏈接」都可以像calculla.pl/en/something - 這會變成英語而忽略默認的域名。

用戶始終可以通過單擊 - 重新選擇語言,然後將所有鏈接「切換」爲所選語言。

這只是一種可能的方法,但我認爲它可能適合您的需求 - 根本沒有cookie,沒有其他依賴關係,只是URL決定。

1

如果您可以選擇在主域上使用CNAME別名,那麼一種廣泛使用的方法是使用語言特定的域名,例如。除了www.site.comno.site.com挪威,en.site.com英語等等,這些都指向同一個網站。然後使用當前域名檢測要使用的語言。

這樣檢測的語言看起來是這樣的:

$language = substr($_SERVER['HTTP_HOST'],0,2);