Самый простой способ обнаружить клиентскую локаль в PHP

Казалось бы, вы пытаетесь получить доступ к параметру в вашем API, не передавая его в своем запросе. Вы просите параметры здесь:

await reports.findOne({_id: new mongodb.ObjectID( req.params.id)})

, но не передали ни одного в вашем запросе. Это должно сделать это:

return axios.get('/:id', {
  params: {
    id: `${id}`
  }
})
32
задан nickf 18 November 2008 в 01:07
поделиться

8 ответов

Не гарантируемый, но большинство браузеров отправляют HTTP-заголовок Принимать-языка, который указывает en-us, если они из США. Некоторые более старые браузеры только сказали, что они - en, все же. И не все машины настраиваются правильно для указания, какую локаль они предпочитают. Но это - хорошее первое предположение.

англо-британские основанные пользователи обычно устанавливают свою систему или пользовательскую локаль к англо-британскому, который в конфигурациях браузера по умолчанию должен привести к en-ГБ как Принять заголовок Языка. (Более ранняя версия этого сказала en-Великобританию; это было опечаткой, извините.) Другие страны также имеют en локали, такие как en-za (Южная Африка), и, прежде всего, теоретически, комбинации как en-мировой-судья также возможны.

основанные на гео-IP предположения менее вероятно будут корректны на предпочтительном языке/локали, как бы то ни было. Google думает, что довольное согласование на основе геолокации IP-адреса имеет смысл, который действительно раздражает меня, когда я нахожусь в Японии или Корее...

21
ответ дан 27 November 2019 в 20:20
поделиться

Можно проверить HTTP_ACCEPT_LANGUAGE заголовок (от $ _SERVER), который отправит большинство браузеров.

Смотрят на Zend_Locale для примера, или возможно Вы могли бы даже хотеть использовать lib.

13
ответ дан 27 November 2019 в 20:20
поделиться

Можно сделать некоторый IP comparaison без наличие целой библиотеки, чтобы сделать это.

Использование Решения № 1

API, этот путь ничто не необходимо с Вашей стороны. Это - веб-API, которые сообщают страну:

 Example: http://api.hostip.info/get_html.php?ip=12.215.42.19
 Return : Country: UNITED STATES (US)

Решение № 2

, Но, Сделайте, чтобы Вы думали для использования языка агента браузера? Вы смогли знать тип английского языка от него.

Решение № 3

Этот веб-сайт, названный , BlockCountry позволил Вам иметь список IP страной. Конечно, Вы не хотите блокироваться, но можно использовать список IP и сравнить их (получите весь американский IP...), это не могло бы быть точно...

6
ответ дан 27 November 2019 в 20:20
поделиться

Для идентификации Вашей страны посетителей я использовал расширение GeoIP, очень простое использовать.

1
ответ дан 27 November 2019 в 20:20
поделиться

$ синтаксического анализа _SERVER ["HTTP_ACCEPT_LANGUAGE"] для получения страны и локали браузера

2
ответ дан 27 November 2019 в 20:20
поделиться

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

2
ответ дан 27 November 2019 в 20:20
поделиться

http://countries.nerd.dk сервис - то, что я использую для отображения IP в страну. Это работает действительно хорошо и бывший основанный DNS, кэшируется хорошо также.

можно также загрузить базу данных для локального использования, если Вы не хотите полагаться на внешний сервис.

0
ответ дан 27 November 2019 в 20:20
поделиться

Расширение GeoIP - хороший выбор.

0
ответ дан 27 November 2019 в 20:20
поделиться
Другие вопросы по тегам:

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