วิธีที่เหมาะสมคือดูที่ส่วนหัวHTTP Accept-Language ที่ส่งไปยังเซิร์ฟเวอร์ รายการนี้ประกอบด้วยรายการภาษาที่เรียงลำดับและถ่วงน้ำหนักที่ผู้ใช้กำหนดค่าเบราว์เซอร์ให้เป็นที่ต้องการ
น่าเสียดายที่ส่วนหัวนี้ไม่สามารถอ่านได้จาก JavaScript สิ่งที่คุณจะได้รับคือnavigator.language
สิ่งที่บอกคุณว่ามีการติดตั้งเว็บเบราว์เซอร์เวอร์ชันที่แปลเป็นภาษาท้องถิ่น สิ่งนี้ไม่จำเป็นต้องเหมือนกับภาษาที่ผู้ใช้ต้องการ ใน IE คุณจะได้รับsystemLanguage
(ภาษาที่ติดตั้งระบบปฏิบัติการ), browserLanguage
(เหมือนlanguage
) และuserLanguage
(ผู้ใช้กำหนดค่าภูมิภาค OS) ซึ่งไม่ช่วยเหลือในทำนองเดียวกัน
ถ้าผมต้องเลือกระหว่างคุณสมบัติเหล่านั้นผมสูดอากาศสำหรับuserLanguage
ครั้งแรกลดลงกลับไปlanguage
และหลังจากที่ (ถ้าผู้ที่ไม่ตรงกับภาษาใด ๆ ) กำลังมองหาที่และในที่สุดbrowserLanguage
systemLanguage
หากคุณสามารถวางสคริปต์ฝั่งเซิร์ฟเวอร์ไว้ที่อื่นที่อยู่บนเน็ตก็เพียงแค่อ่านส่วนหัวยอมรับภาษาและแยกออกเป็นไฟล์ JavaScript ที่มีค่าส่วนหัวในสตริงเช่น:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
จากนั้นคุณสามารถรวม <script src> ชี้ไปที่บริการภายนอกนั้นใน HTML และใช้ JavaScript เพื่อแยกส่วนหัวของภาษา ฉันไม่ทราบรหัสห้องสมุดใด ๆ ที่มีอยู่ในการทำเช่นนี้เนื่องจากการแยกวิเคราะห์ยอมรับภาษามักจะทำในฝั่งเซิร์ฟเวอร์
ไม่ว่าคุณจะทำอะไรคุณต้องลบล้างผู้ใช้อย่างแน่นอนเพราะบางคนจะเดาผิด บ่อยครั้งที่ง่ายที่สุดในการตั้งค่าภาษาใน URL (เช่น http: //www.example.com/en/site vs http: //www.example.com/de/site) และให้ผู้ใช้คลิก ลิงก์ระหว่างสอง บางครั้งคุณต้องการ URL เดียวสำหรับทั้งสองภาษาซึ่งในกรณีนี้คุณต้องจัดเก็บการตั้งค่าในคุกกี้ แต่สิ่งนี้อาจทำให้ตัวแทนผู้ใช้สับสนโดยไม่สนับสนุนคุกกี้และเครื่องมือค้นหา