2011-07-01 34 views

Trả lời

2

Các giải pháp tôi đã tìm thấy cho vấn đề này là để thiết lập các đại lý người dùng thông qua các thiết lập của webview:

WebSettings settings = wv.getSettings(); 
settings.setJavaScriptEnabled(true); 
settings.setUserAgentString(Locale.getDefault().getLanguage()); 

Trong WebContent của bạn sau đó bạn lấy nó thông qua:

var userLang = navigator.userAgent; 

Chỉ nên sử dụng phần này để xem web hiển thị nội dung địa phương.

2

này có thể giúp:

Locale.getDefault().getDisplayLanguage(); 
+0

Có cách nào để tải tệp này trực tiếp trong tệp html trong các lần xem trên web không? –

0

Nó thực sự phụ thuộc vào nơi bạn cần thông tin này. Nếu bạn cần Android OS Locale, Locale.getDefault() sẽ là đủ. Đối với phía máy chủ, cách tốt nhất để phát hiện Locale là đọc nội dung của tiêu đề Accept-Language của giao thức HTTP.
Trong trường hợp này, phát hiện Locale phụ thuộc vào công nghệ phía máy chủ được sử dụng. Đối với Servlet đơn giản, bạn chỉ cần thực hiện request.getLocale(), đối với JSF bạn sẽ đọc nó từ UIViewRoot, v.v.

+0

Tôi chỉ muốn thay đổi ngôn ngữ của html trong chế độ xem web. HTML tĩnh và được lưu trữ trong thư mục cục bộ, vì vậy tôi không thể sử dụng tiêu đề yêu cầu. hmmm –

+0

Đối với HTML tĩnh, bạn có thể đặt tên các tệp như something_de.html, something_en.html, v.v. và chọn tệp thích hợp khi chạy. –

3

Một cách để giải quyết vấn đề này là lấy userAgent - navigator.userAgent và chạy regex để tìm ngôn ngữ.

Ví dụ Android ua chuỗi (từ http://www.gtrifonov.com/2011/04/15/google-android-user-agent-strings-2/):

Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid xây dựng/ESD56) AppleWebKit/530,17 (KHTML, như Gecko) Version/4.0 Mobile Safari/530,17

vì vậy chỉ cần phù hợp cho ngôn ngữ: navigator.userAgent.match(/[a-z]{2}-[a-z]{2}/), mà trả về en-us

Nếu bạn muốn được thực sự an toàn, bạn có thể phù hợp cho sự hiện diện của Android 2.0.1; ngay trước ngôn ngữ. Regex cho rằng sẽ là:

navigator.userAgent.match(/Android \d+(?:\.\d+){1,2}; [a-z]{2}-[a-z]{2}/).toString().match(/[a-z]{2}-[a-z]{2}/)

+1

Các phiên bản mới hơn của Android không được đặt ngôn ngữ trong chuỗi tác nhân người dùng. –

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