Как обнаружить язык пользователя через их IP-адрес

Я разработал веб-сайт www.tenxian.com.

Это имеет три языковых версии, английский, японский язык и китайский язык. Как я могу записать эффективную программу PHP, которая может автоматически выбрать языковую версию на основе IP-адреса посетителя?

Если бы я использую, "если еще", код был бы очень сложным; Если я использую случай переключателя, как записать это начиная с данных, с которыми нужно иметь дело, диапазоны IP, не конкретные числа. Кроме того, я не знаю эти диапазоны IP

Что самый легкий путь состоит в том, чтобы сделать это?

5
задан Tyler Carter 23 February 2010 в 05:43
поделиться

8 ответов

ПОЖАЛУЙСТА, не ошибайтесь, думая, что IP == язык. Сначала посмотрите на заголовок браузера accept-language, затем на строку идентификации браузера, которая может содержать язык ОС, и только потом учитывайте IP. Почти в 100% всех случаев заголовок браузера на принимаемом языке будет присутствовать и быть достаточным.

И всегда давать пользователю возможность переключиться на другой язык.

Помимо простого случая иностранца за границей, как вы определяете язык для Бельгии, где они говорят на французском, голландском и немецком языках? (Возможно, это не относится к вашему случаю, но просто философски. :)).

23
ответ дан 18 December 2019 в 05:49
поделиться

Посмотрите GeoPlugin:

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

2
ответ дан 18 December 2019 в 05:49
поделиться

Да, пожалуйста, не делайте этого ... Google делает это и меня ужасно раздражает ... Я всегда получаю в браузере тайскую версию вместо английской. .

Используйте заголовки http из браузера.

2
ответ дан 18 December 2019 в 05:49
поделиться
<?php
$ln = split(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
print_r($ln[0]);
?>
2
ответ дан 18 December 2019 в 05:49
поделиться

Возможно, это поможет: www.countryipblocks.net

0
ответ дан 18 December 2019 в 05:49
поделиться

Вы, вероятно, захотите использовать какую-то форму базы данных IP-геокодирования (пример).

0
ответ дан 18 December 2019 в 05:49
поделиться

Предполагая, что вы можете конвертировать диапазоны IP-адресов в один из выбранных вами языков, вы могли бы сделать следующее (все ответы выше): пусть все ваши сообщения в приложениях хранятся в ассоциативном массиве такой формы.

$MESSAGES[$USER_LANGUAGE][$msgId]

где $USER_LANGUAGE может быть китайским, японским или английским (или любым другим эквивалентным перечислением). $msgId может быть таким, как "login.successful", "login.fail" и т.д. Когда вы выводите сообщения пользователю, не отображайте жестко закодированные строки, сделайте ссылку на переменную, используя $msgId.

Вы можете обращаться к ней как к глобальной переменной ИЛИ вы можете создать функцию, которая принимает $msgId в качестве параметра и возвращает сообщение, $USER_LANGUAGE также может быть глобальной переменной (которая устанавливается при первом входе пользователя).

0
ответ дан 18 December 2019 в 05:49
поделиться

посмотрите на модуль maxmind geoip для PHP (http://www.maxmind.com/app/php), что касается вашей структуры данных, то, возможно, она соответствует коду страны ISO-3166-1, который apache_note("GEOIP_COUNTRY_CODE"); возвращает.

0
ответ дан 18 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: