Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

วิธีตรวจจับ locale ของ client อย่างง่ายใน PHP


PHP มีฟังก์ชันตั้งแต่ 5.3.0 เพื่อ parse ตัวแปร '$_SERVER['HTTP_ACCEPT_LANGUAGE']' เป็น locale:

ตัวอย่าง

$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']); echo $locale;

ฟังก์ชัน '$_SERVER['HTTP_ACCEPT_LANGUAGE']' ช่วยตรวจจับ locale โดยใช้ภาษาของ locale ปัจจุบันเป็นพารามิเตอร์

ผลลัพธ์

จะได้ผลลัพธ์ดังนี้:

en_US

เบราว์เซอร์ส่วนใหญ่ส่ง header Accept-Language HTTP ที่ระบุ en-us หากมาจาก US เบราว์เซอร์เก่าใช้ en เท่านั้น

ผู้ใช้ English-UK มักตั้งค่า locale เป็น English-UK ซึ่งเป็นค่าเริ่มต้นของเบราว์เซอร์ ทำให้ได้ en-gb เป็น Accept Language header ประเทศอื่นๆ มี en locales เช่น en-za (South Africa) เป็นต้น

การเดาจาก Geo-IP น่าจะไม่ถูกต้องสำหรับภาษา/locale ที่ต้องการ