5

私はウェブサイト www.tenxian.com を開発しました。

英語、日本語、中国語の 3 つの言語バージョンがあります。訪問者の IP アドレスに基づいて言語バージョンを自動的に選択できる効果的な PHP プログラムを作成するにはどうすればよいですか?

「if-else」を使用すると、コードが非常に複雑になります。switch-case を使用する場合、扱うべきデータは特定の数値ではなく IP 範囲であるため、どのように記述しますか。その上、私はこれらの IP 範囲を知りません

それを行う最も簡単な方法は何ですか?

4

8 に答える 8

26

IP==言語だと誤解しないでください。最初にブラウザのaccept-languageヘッダーを確認し、次にOS言語を含む可能性のあるブラウザ識別文字列を確認してからIPを考慮に入れます。すべての場合のほぼ100%で、ブラウザーのaccept-languageヘッダーが存在し、十分です。

そして、常にユーザーに別の言語に切り替える選択肢を与えます。

海外の外国人の単純なケースとは別に、彼らがフランス語、オランダ語、ドイツ語を話すベルギーの言語をどのように決定しますか?(多分それはあなたのケースには当てはまりませんが、哲学的に当てはまります。:))。

于 2010-02-23T05:43:16.633 に答える
2

はい、しないでください...グーグルはこれを行い、迷惑なことをします。私はいつもブラウザから英語版ではなくタイ語版を入手します。

ブラウザからhttpヘッダーを使用します。

于 2010-02-23T05:48:01.310 に答える
2
<?php
$ln = split(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
print_r($ln[0]);
?>
于 2010-02-23T07:53:22.487 に答える
2

GeoPlugin をチェックしてください:

http://www.geoplugin.com/webservices/php

于 2010-02-23T05:32:35.590 に答える
0

おそらく、何らかの形式のIPジオコーディングデータベースを使用することをお勧めします()。

于 2010-02-23T05:33:16.930 に答える
0

PHP用のmaxmindgeoipモジュール(http://www.maxmind.com/app/php)を見てください。データ構造については、返されるISO-3166-1国コードにキーを設定する可能性がありapache_note("GEOIP_COUNTRY_CODE");ます。

于 2010-02-23T05:32:59.600 に答える
0

IP範囲を選択した言語の1つに変換できると仮定すると、これを行うことができます(上記のすべての応答)。アプリケーション内のすべてのメッセージをこの形式の連想配列に格納します。

$MESSAGES[$USER_LANGUAGE][$msgId]

ここで$USER_LANGUAGE、中国語、日本語、または英語(またはその他の同等の列挙型)を使用できます。$msgId「login.successful」、「login.fail」などの場合があります。ユーザーにメッセージを表示する場合は常に、ハードコードされた文字列を表示しない場合は、を使用して変数を参照して$msgIdください。

グローバル変数としてアクセスすることも、$ msgIdをパラメーターとして取り込んでメッセージを返す関数を作成することもできます。また$USER_LANGUAGE、グローバル変数(ユーザーが最初にアクセスしたときに設定される)にすることもできます。

于 2010-02-23T05:42:12.697 に答える
0

おそらくこれが役立つでしょう:www.countryipblocks.net

于 2010-02-23T05:32:55.587 に答える