2011-12-08 33 views
1

我正在尋找決定網絡用戶語言的最佳方式,以便能夠以他的母語顯示內容。我想知道不同技術的優缺點。如何決定用戶的語言

我在看

幾個選項是:

  • 使用利用Maxminds數據庫(免費版)從瀏覽器中使用http_negotiate_language

正如我前面提到我

  • 訪問用戶語言PHP GEOIP擴展不想更深入地瞭解國家和城市。我只想根據用戶的位置/語言切換內容。

    你有什麼建議嗎?

  • +0

    我已將此標記爲php,但您也可以使用javascript navigator.language,具體取決於您需要知道的位置。語言不會在邊界清晰地變化,我敢肯定很多人說,美國,用西班牙語或中文的首選語言瀏覽,所以你的瀏覽器說你住在紐約,並不真正告訴我你的語言是什麼說請求標題確實說如何配置瀏覽器(選擇一種語言或本地化) – MatthewMartin

    +3

    詢問他們......? – Ben

    回答

    0

    最好的做法是讓用戶從選擇器中決定他們的語言。

    +0

    我上面的例子是這樣做的。首先你要問瀏覽器(他們在安裝時已經配置了它們),如果不夠好,那麼讓他們從下拉菜單中選擇一種語言並保存一個名爲「lang」的cookie來使用它。 – Xeoncross

    3

    取自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 
    
    +0

    使用cookies只是一個大缺陷,你不能同時打開多個不同語言的頁面,這就是爲什麼我傾向於使用基於URL的方法 –

    +0

    @Pekka,是的,但不要忘記你可以限制cookie某些路徑如果需要。 – Xeoncross

    +0

    @Pekka,在不同的語言環境中同時打開多個頁面的要點是什麼? –

    1
    1. 使用瀏覽器的語言

    2. 提供一個方便的菜單隨時切換語言。

    使用地理定位來設置的第一選擇是一個選項,以及,但它不是100%可靠的,而實際瀏覽器語言的用戶講什麼語言一個更好的指標。

    1

    在很多情況下,地理位置都會失敗。例如,一個講英語的人在旅行/度假時會在烏克蘭逗留時出現錯誤的語言。我認爲大多數用戶在瀏覽器設置中使用正確的語言。

    1

    自動獲取瀏覽器的使用語言($ _SERVER ['HTTP_USER_AGENT']),但提供了一個選擇框(或其他)來給用戶選擇另一種語言的可能性。如果你使用的是框架(你應該),它應該有一些輔助方法。

    我不會使用GeoIP,比如說一個美國人在法國度假期間瀏覽您的網站。