簡體   English   中英

如何通過IP地址檢測用戶的語言

[英]How to detect a user's language through their IP Address

我開發了一個網站www.tenxian.com。

它有三種語言版本,英語,日語和中文。 如何編寫有效的PHP程序,可以根據訪問者的IP地址自動選擇語言版本?

如果我使用“if-else”,代碼將會非常復雜; 如果我使用switch-case,如何寫它,因為應該處理的數據是IP范圍,而不是特定的數字。 此外,我不知道這些IP范圍

最簡單的方法是什么?

請,請不要錯誤地認為IP ==語言。 首先查看瀏覽器accept-language標頭,然后查看可能包含OS語言的瀏覽器標識字符串,然后再考慮IP。 在幾乎100%的情況下,瀏覽器接受語言標題將存在並且足夠。

並始終讓用戶選擇切換到另一種語言。

除了國外外國人的簡單案例之外,您如何確定比利時的語言,他們會說法語,荷蘭語和德語? (也許這不適用於你的情況,但只是哲學上的。:))。

是的,請不要這樣做...谷歌這樣做並且令人討厭...我總是從我的瀏覽器獲得泰語版本而不是英文版本。

使用瀏覽器中的http標頭。

<?php
$ln = split(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
print_r($ln[0]);
?>

也許這會有所幫助: www.countryipblocks.net

看一下PHP的maxmind geoip模塊( http://www.maxmind.com/app/php ),你的數據結構可能是關鍵到ISO-3166-1國家代碼apache_note("GEOIP_COUNTRY_CODE"); 回報。

您可能想要使用某種形式的IP地理編碼數據庫( 示例 )。

假設您可以將IP范圍轉換為您的一種語言選擇,您可以執行此操作(上面的所有回復):將應用程序中的所有消息存儲在此表單的關聯數組中。

$MESSAGES[$USER_LANGUAGE][$msgId]

其中$USER_LANGUAGE可以是中文,日文或英文(或任何其他等效的枚舉)。 $msgId可以是“login.successful”,“login.fail”等。如果您向用戶顯示消息,則不顯示硬編碼字符串,請使用$msgId引用該變量。

您可以將其作為全局變量訪問,或者您可以創建一個函數,該函數將$ msgId作為參數接收並返回消息, $USER_LANGUAGE也可以是全局變量(在用戶第一次進入時設置)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM