2009-02-08 30 views
8

Tôi đang phát triển một trang web đa ngôn ngữ và đang tự hỏi cách tốt nhất để lưu trữ ngôn ngữ mà người dùng đã chọn là gì?Lưu trữ ngôn ngữ trong URL hoặc phiên hoặc khác

Hoặc thông qua QueryString hoặc nó có trong Phiên làm việc..hoặc bất kỳ tùy chọn nào khác không?

Trả lời

2

Tôi nghĩ rằng nó phụ thuộc rất nhiều vào cách ứng dụng của bạn xử lý (mong muốn xử lý) ngôn ngữ người dùng. Nếu người dùng của bạn phải đăng nhập vào trang web của bạn, thì bạn có thể có một trang cài đặt tài khoản ở đâu đó với một đối tượng hồ sơ người dùng thích hợp hoặc một cái gì đó tương tự đằng sau. Trong trường hợp này, tôi đoán bạn sẽ lưu các cài đặt này trên DB và khi người dùng quay lại trang web của bạn, bạn sẽ nhận được thông tin người dùng (ví dụ: từ cookie), bạn tải đối tượng hồ sơ người dùng của mình từ DB. Thông tin sẽ được giữ trong một phiên vì tôi nghĩ rằng nó sẽ phù hợp nhất trong trường hợp này. Nếu người dùng của bạn không phải đăng nhập, do đó về cơ bản bạn không thể xác định trực tiếp chúng, tôi sẽ lưu trữ cài đặt ngôn ngữ trong cookie. Điều này mang lại cho người dùng của bạn giá trị rằng anh ấy sẽ luôn tìm thấy trang web bằng ngôn ngữ ưa thích của mình khi anh ấy quay lại sau (vì anh ấy không xóa cookie và tuổi thọ của cookie đủ dài). Là một khả năng thứ ba, bạn chỉ có thể xác định ngôn ngữ người dùng theo cài đặt trình duyệt mặc định của mình (giống như "regex" đã đề cập ở trên).

Như tôi đã nói, điều đó thực sự phụ thuộc vào nhu cầu của ứng dụng của bạn. Tuy nhiên, điều bạn cần lưu ý là:

  • đối tượng được lưu trong phiên được giữ ở phía máy chủ, sử dụng bộ nhớ máy chủ. Vì vậy, không giữ những thứ vô dụng trong bộ nhớ nếu bạn không cần chúng. Tuy nhiên đối tượng phiên là thích hợp để lưu trữ dữ liệu liên quan đến lượt truy cập và cấu hình của người dùng.
  • Dữ liệu được lưu trữ trong cookie hoặc đối tượng Viewstate được gửi qua lại giữa trình duyệt ứng dụng khách và máy chủ web. Vì vậy, điều này gây ra lưu lượng truy cập bổ sung và có thể làm giảm hiệu suất.

Bye

1

Profile properties được tạo riêng để cho phép bạn lưu trữ các tùy chọn dành riêng cho người dùng. Đây sẽ là nơi tốt để lưu trữ loại dữ liệu này.

0

Có thuộc tính được chuyển khi trình duyệt đưa ra yêu cầu mà bạn có thể sử dụng. Thuộc tính này được tham chiếu trong mã của bạn sau bằng cách tham chiếu:

Request.UserLanguages // returns an array 

Hoặc, bạn có thể nhắc người dùng chỉ định ngôn ngữ ưa thích và lưu nó vào cookie.

Trong handler Page.Load bạn đặt một cái gì đó như sau:

string prefLan;  
if(Request.Cookies["preferedLanguage"] != null) 
     prefLan = Server.HtmlEncode(Request.Cookies["preferedLanguage"].Value); 
0

QueryString không phải là nơi thích hợp cho này, trừ khi nó được đọc ban đầu từ chuỗi truy vấn và lưu trữ ở một nơi khác.

Lưu trữ trong cookie hoặc nếu cookie bị tắt, lưu trữ trong phiên hoặc chế độ xem.

Câu trả lời của Kevin "thuộc tính hồ sơ" là cách dễ dàng để thư viện được thiết lập thực hiện việc nâng hạng nặng cho bạn với nỗ lực tối thiểu từ phía bạn.

2

nếu bạn xem xét kịch bản này mà người dùng đã duyệt một loạt các trang trong "en" và các thông tin ngôn ngữ được lưu trữ trong phiên cookie và trang đã được lưu trữ (http, trình duyệt, ứng dụng) ..

khi ngôn ngữ được người dùng chuyển sang "cy", thay đổi sẽ xảy ra cho trang hiện tại, nhưng khi người dùng quay lại trang họ đã truy cập trước đó (nơi bộ nhớ tiêu đề đã hết hạn chưa hết hạn) sẽ tải lên trang trong "vi" vì chuỗi truy vấn không nói ngôn ngữ - để nó phân phối nội dung bằng ngôn ngữ đó.

không chắc rằng người dùng muốn thay đổi ngôn ngữ thường xuyên - nhưng với tư cách là nhà phát triển, đó là một scenraio cần được xử lý.

bất kỳ ý tưởng nào, vui lòng gọi to.

7

Một xem xét khác không được đề cập trong bất kỳ câu trả lời nào khác, là tính thân thiện với Công cụ tìm kiếm. Nếu bạn sử dụng một url khác cho từng ngôn ngữ như

http://{en|cy}.example.com/subdir/ or http://example.com/ {en|cy}/subdir)
thì công cụ tìm kiếm có thể lập chỉ mục trang web của bạn bằng nhiều ngôn ngữ.

+0

Thực ra tôi nghĩ đây sẽ là lý do "THE" để sử dụng phương pháp này. Nó cũng có lợi thế là khi người dùng đánh dấu trang, anh ta sẽ nhận được ngôn ngữ chính xác, độc lập với dữ liệu hết hạn (cookie/phiên/cache/etc ...) – Cohen

+1

Quay trở lại vấn đề này Tôi đã tìm thấy một so sánh tốt đẹp từ Google: http://support.google.com/webmasters/bin/answer.py?hl=vi&answer=182192 – Cohen

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