Tôi muốn phát hiện ngôn ngữ của người dùng (không phải vị trí của họ). Vấn đề là không có phương pháp nào có vẻ đáng tin cậy.Cách tốt nhất để phát hiện ngôn ngữ của người dùng trình duyệt trong năm 2012 là gì?
Accept-Language Tiêu đề
Ưu
- Bạn đang có nghĩa là để có được một danh sách các giá trị mà có thể tiết lộ locale true nếu trình duyệt đã được thay đổi để mặc định cái gì khác.
- Dường như chính xác trong IE theo mặc định?
- Chính xác trong IE theo mặc định có nghĩa là chính xác trong FF trên Windows theo mặc định? (ví dụ: bạn tải xuống phiên bản chính xác từ mozilla.org)
- Giống như # 3 cho Opera trên Windows?
Nhược điểm
- Server side overhead và can thiệp với bộ nhớ đệm (hoặc một XHR thêm).
- Mặc định là "en-us" trong Chrome trên tất cả các hệ thống cho tiếng Anh trừ khi bạn cài đặt từ điển địa phương và kéo từ điển đó lên trên cùng.
- Không được gửi bởi Safari?
- Không chính xác theo mặc định trong Safari và Chrome nghĩa là http://mozilla.org và http://opera.com trực tiếp cho người dùng tải xuống sai và cũng sẽ cài đặt phiên bản "en-us" của chính họ.
Kết luận
- hoàn toàn không đáng tin cậy trên OSX vì mỗi trình duyệt sẽ là sai lầm theo mặc định. Tuy nhiên phải chính xác trong IE và FF trên Windows.
window.navigator.language/userLanguage
Ưu
- Phần tốt nhất của việc này là nó đẹp nhẹ giải pháp phía khách hàng.
- Dường như chính xác trong IE theo mặc định?
- Dường như chính xác trong FF trên Windows theo mặc định?
Nhược điểm
- Luôn luôn "en-us" theo mặc định trong Safari trên mọi hệ thống.
- Mặc định là "en-us" trong Chrome trên tất cả các hệ thống cho tiếng Anh trừ khi bạn cài đặt từ điển địa phương và kéo từ điển đó lên trên cùng.
- Luôn chỉ là "vi" trong Opera.
Kết luận
- Thậm chí không đáng tin cậy hơn Accept-Language.
IP Định vị
Ưu
- Làm việc độc lập với cài đặt trình duyệt và ngôn ngữ hệ điều hành.
Nhược điểm
- Làm việc độc lập với cài đặt trình duyệt và ngôn ngữ hệ điều hành.
- Tất cả các thông thường về hiệu suất, giá cả, giữ nó đến ngày vv
Kết luận
- Cho dù công trình này thực sự phụ thuộc vào tại sao bạn đang cố gắng để phát hiện địa phương của người dùng . Phương pháp này cung cấp cho bạn địa phương của người dùng không giống như ngôn ngữ theo nghĩa i18n.
HTML5 Định vị
Ưu
- Nói chung chính xác như định vị IP mà không có chi phí máy chủ.
Nhược điểm
- Yêu cầu người sử dụng để cho phép bạn truy cập vào vị trí của họ.
- Hỗ trợ trình duyệt (thực sự hỗ trợ trông khá tốt).
Kết luận
- Phải xin phép nói chung là một rào cản lớn. Cũng cùng một kết luận như định vị địa lý IP.
Tóm tắt
Nó bây giờ có vẻ như phát hiện locale của người dùng là khó khăn hơn bao giờ hết khi phát hiện vị trí vật lý của họ đã trở nên dễ dàng. Người phạm tội lớn là Safari nên ít nhất là phản ánh các thiết lập hệ điều hành theo mặc định trên OSX nhưng Chrome cũng không thiết lập bất kỳ ví dụ nào. Ngay cả khi mọi người cài đặt từ điển cục bộ của họ vào Chrome, tôi thực sự nghi ngờ họ cũng sẽ kéo từ điển đó lên đầu danh sách.
Tôi không thể đổ lỗi cho Mozilla và Opera vì đã bị các trình duyệt khác lôi kéo sai về các trang tải xuống của họ. Tuy nhiên, nó sẽ giảm thiểu vấn đề nếu họ sẽ chuyển đổi các trang tải xuống của họ để sử dụng vị trí địa lý thay vì có lẽ nhìn vào Accept-Language.
Nhưng thực sự, các tùy chọn còn lại để phát hiện ngôn ngữ của người dùng hiện tại là IE không còn thống trị nữa? Còn gì nữa không?
Kể từ tháng 10 năm 2013, có vẻ như Accept-Language Header hoạt động trong Mobile Safari. – nthonygreen