我正在尋找決定網絡用戶語言的最佳方式,以便能夠以他的母語顯示內容。我想知道不同技術的優缺點。如何決定用戶的語言
我在看幾個選項是:
- 使用利用Maxminds數據庫(免費版)從瀏覽器中使用http_negotiate_language
正如我前面提到我
你有什麼建議嗎?
我正在尋找決定網絡用戶語言的最佳方式,以便能夠以他的母語顯示內容。我想知道不同技術的優缺點。如何決定用戶的語言
我在看幾個選項是:
正如我前面提到我
你有什麼建議嗎?
最好的做法是讓用戶從選擇器中決定他們的語言。
我上面的例子是這樣做的。首先你要問瀏覽器(他們在安裝時已經配置了它們),如果不夠好,那麼讓他們從下拉菜單中選擇一種語言並保存一個名爲「lang」的cookie來使用它。 – Xeoncross
取自MicroMVC framework。以下內容查找可以通過Javascript語言選擇器設置的cookie - 如果未找到,則使用用戶瀏覽器發送的設置。
// Get locale from user agent
if(isset($_COOKIE['lang']))
{
$preference = $_COOKIE['lang'];
}
else
{
$preference = Locale::acceptFromHttp(getenv('HTTP_ACCEPT_LANGUAGE'));
}
// Match preferred language to those available, defaulting to generic English
$locale = Locale::lookup(config()->languages, $preference, false, 'en');
// Default Locale
Locale::setDefault($locale);
setlocale(LC_ALL, $locale . '.utf-8');
//putenv("LC_ALL", $locale);
需要PHP 5.3和ICU INTL庫。
$ sudo apt-get install php5-intl
使用cookies只是一個大缺陷,你不能同時打開多個不同語言的頁面,這就是爲什麼我傾向於使用基於URL的方法 –
@Pekka,是的,但不要忘記你可以限制cookie某些路徑如果需要。 – Xeoncross
@Pekka,在不同的語言環境中同時打開多個頁面的要點是什麼? –
使用瀏覽器的語言
提供一個方便的菜單隨時切換語言。
使用地理定位來設置的第一選擇是一個選項,以及,但它不是100%可靠的,而實際瀏覽器語言的用戶講什麼語言一個更好的指標。
在很多情況下,地理位置都會失敗。例如,一個講英語的人在旅行/度假時會在烏克蘭逗留時出現錯誤的語言。我認爲大多數用戶在瀏覽器設置中使用正確的語言。
自動獲取瀏覽器的使用語言($ _SERVER ['HTTP_USER_AGENT']),但提供了一個選擇框(或其他)來給用戶選擇另一種語言的可能性。如果你使用的是框架(你應該),它應該有一些輔助方法。
我不會使用GeoIP,比如說一個美國人在法國度假期間瀏覽您的網站。
我已將此標記爲php,但您也可以使用javascript navigator.language,具體取決於您需要知道的位置。語言不會在邊界清晰地變化,我敢肯定很多人說,美國,用西班牙語或中文的首選語言瀏覽,所以你的瀏覽器說你住在紐約,並不真正告訴我你的語言是什麼說請求標題確實說如何配置瀏覽器(選擇一種語言或本地化) – MatthewMartin
詢問他們......? – Ben