要在 PHP 裡取得可以使用 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 這個變數就可以直接取得,取得的內容大概會像這樣:
en-US, en;q=0.9, hi;q=0.8, fr;q=0.7
接著可以利用字串處理的方式擷取內容,像我這邊就取這個字串最前面兩個字元:
substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
台灣的話就會是 zh,就可以利用這個來判斷了。
如果只抓前面兩個要在判斷同一種語系,但不同的方言就會沒辦法判斷,像繁體中文是 zh-TW,簡體中文則是 zh-CN,要判斷更多的話可以把 substr 擷取的範圍加長,這邊取到第四個字元:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
接著利用正規表達式來判斷:
if (preg_match("/zh-c/i", $lang)) echo "简体中文"; else if (preg_match("/zh/i", $lang)) echo "繁體中文"; else if (preg_match("/en/i", $lang)) echo "English"; else if (preg_match("/fr/i", $lang)) echo "French"; else if (preg_match("/de/i", $lang)) echo "German"; else if (preg_match("/ja/i", $lang)) echo "Japanese"; else if (preg_match("/ko/i", $lang)) echo "Korean"; else if (preg_match("/es/i", $lang)) echo "Spanish"; else if (preg_match("/sv/i", $lang)) echo "Swedish";
語系後面加上 /i 是表示不區分大小寫,這樣就可以先判斷是否是簡體中文,如果一樣是 zh 但不是 zh-c 的話,就會判斷是繁體中文了。