2012-09-19 44 views
22

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

  1. 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.
  2. Dường như chính xác trong IE theo mặc định?
  3. 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)
  4. Giống như # 3 cho Opera trên Windows?

Nhược điểm

  1. Server side overhead và can thiệp với bộ nhớ đệm (hoặc một XHR thêm).
  2. 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.
  3. Không được gửi bởi Safari?
  4. Không chính xác theo mặc định trong Safari và Chrome nghĩa là http://mozilla.orghttp://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

  1. 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.
  2. Dường như chính xác trong IE theo mặc định?
  3. Dường như chính xác trong FF trên Windows theo mặc định?

Nhược điểm

  1. Luôn luôn "en-us" theo mặc định trong Safari trên mọi hệ thống.
  2. 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.
  3. 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

  1. 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

  1. 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.
  2. 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

  1. Nói chung chính xác như định vị IP mà không có chi phí máy chủ.

Nhược điểm

  1. Yêu cầu người sử dụng để cho phép bạn truy cập vào vị trí của họ.
  2. 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?

+0

Kể từ tháng 10 năm 2013, có vẻ như Accept-Language Header hoạt động trong Mobile Safari. – nthonygreen

Trả lời

1

Điều này phụ thuộc vào ý bạn là "ngôn ngữ của người dùng". Các khả năng được liệt kê trong câu hỏi phản ánh ý nghĩa khác nhau của "ngôn ngữ của người dùng".Không ai trong số họ phản ánh ý nghĩa đầy đủ trong nội địa hóa hiện đại, cụ thể là tập hợp các công ước văn hóa được người dùng ưa thích (bao gồm danh sách ngôn ngữ của con người theo thứ tự ưu tiên). Cách để tìm điều đó là hỏi người dùng về họ.

Một cách tự nhiên, bạn chỉ nên hỏi về các quy ước thực sự quan trọng trong ngữ cảnh và bạn có thể xem xét lưu trữ các tùy chọn, một khi được người dùng thể hiện, trong cookie, trong bộ nhớ HTML5, trong cơ sở dữ liệu người dùng hoặc ở nơi khác.

Trình duyệt thường cho phép người dùng chỉ định danh sách ngôn ngữ ưa thích, được gửi trong các tiêu đề Accept-Language. Tuy nhiên, điều này liên quan đến một khía cạnh duy nhất của khái niệm miền địa phương, hầu hết người dùng không biết, và nó được biết là có mặc định không chính xác rất thường xuyên.

Các vấn đề liên quan