2009-03-04 4 views
9

Có một số câu hỏi trên trang này liên quan đến các tệp tin how to access RESX trong ứng dụng ASP.NET MVC và best practices khi sử dụng chúng.Lợi ích của việc sử dụng bản địa hóa .resx cho một ứng dụng ASP.NET MVC là gì?

Tuy nhiên sau khi đọc (lần đầu tiên tôi có thể thêm) MSDN article on resources Tôi đang tự hỏi liệu có bất kỳ lợi thế nào khi sử dụng tệp RESX vì tôi sẽ không sử dụng các điều khiển máy chủ hay không. Tất cả những điều này nói về nội dung 'ngầm' và 'rõ ràng' nhưng tôi sẽ không được hưởng lợi từ điều đó với MVC.

Cuối cùng, ứng dụng của tôi sẽ cần tài nguyên chuỗi cho các nút và mục menu và cũng có nhiều mục HTML dài hơn cho nội dung khác dài hơn. Tôi muốn sử dụng một CMS cho các mục dài hơn bởi vì tôi khá chắc chắn tôi không muốn đi gắn bó chúng vào một tập tin RESX.

Có bất kỳ lý do thuyết phục nào để sử dụng hay không sử dụng tài nguyên ASP.NET trong ứng dụng mới mới. Tôi sẽ giả định rằng bất kỳ cải tiến MVC trong tương lai hoặc cải tiến RESX sẽ làm việc trong sự hài hòa với nhau, nhưng bây giờ tôi chỉ nhận được một IDictionary tôn vinh như xa như tôi có thể nhìn thấy.

Tôi có nên tiếp tục với RESX hoặc tìm nơi khác không? Tôi có nên xem xét một CMS cho các loại tài nguyên mà RESX được thiết kế không?

Bất kỳ bài học nào sẽ được đánh giá cao.

Trả lời

9

Có vài lợi thế cơ sở hạ tầng RESX:

  • bạn không cần phải tải phù hợp các nguồn lực cho mỗi ngôn ngữ. Khi miền địa phương của luồng được thiết lập, CLr sẽ quan tâm đến việc tìm kiếm lắp ráp phù hợp và tải các tài nguyên.
  • thật dễ dàng để phân phát các tài nguyên địa phương cụ thể cho các bản địa hóa cho các bên thứ ba.
  • có cơ chế dự phòng mặc định cho các tài nguyên không được bản địa hóa.

Ngoài ra còn có một bất lợi đặc biệt đến cách tiếp cận RESX:

  • rất khó để hỗ trợ mô hình dịch nơi người sử dụng dịch nguồn lực cho bạn.

Tôi muốn xây dựng một chút về điểm cuối cùng đó. Lấy ví dụ mô hình dịch Facebook. Facebook có cách khá đơn giản để mọi người cung cấp và bỏ phiếu cho các bản dịch các tài nguyên khác nhau. Nếu chúng được lưu trữ trong cơ sở dữ liệu, nó sẽ có thể sử dụng chúng sau quá trình biên tập thích hợp mà không cần xây dựng lại và triển khai lại ứng dụng. Với mô hình RESX, các hội đồng tài nguyên sẽ phải xây dựng lại và triển khai lại, có thể có chi phí đủ cao tùy thuộc vào quá trình triển khai. Do đó, trước khi quyết định xử lý nội địa hóa nào, tôi sẽ xem xét quyết định ai sẽ thực hiện nội địa hoá và quy trình triển khai cho các nguồn tài nguyên cục bộ sẽ là gì sau khi ứng dụng chính đã được triển khai.

EDIT: Tôi quên đề cập rằng những cân nhắc này là trực giao với lựa chọn khung ASP.NET (MVC hoặc WebForms).

+0

Điều gì về hiệu suất? – jsicary

4

Tôi muốn nói "có", tệp resx vẫn là tùy chọn tốt cho các ứng dụng mới. Tôi không nghĩ rằng ASP.NET MVC đặc biệt thay đổi bất cứ điều gì về lưu trữ các chuỗi của bạn.

Có gì tuyệt vời về việc sử dụng nguồn lực là

  • họ đang khá dễ dàng để quản lý
  • địa hóa trang web của bạn là một nhiệm vụ dễ dàng hơn nhiều so với khi không nguồn lực (và tôi nhấn mạnh nhiều dễ dàng hơn)
  • bạn có thể thay thế kho lưu trữ tài nguyên bất kỳ lúc nào vì tài nguyên sử dụng mô hình nhà cung cấp. Bạn có thể chuyển đổi các tệp resx cho các mục nhập db mà không thay đổi việc triển khai trang web của bạn.

Tôi khuyên bạn nên tạo các tệp tài nguyên cho "chuỗi trang web" khác với các khối dữ liệu lớn mà bạn có thể chỉnh sửa thường xuyên. Vì vậy, cho một đề nghị đầy đủ, tôi muốn nói sử dụng các tập tin tài nguyên (resx để bắt đầu) cho các nút, nhãn, vv, và một CMS cho nội dung thịt.

+0

cảm ơn ian. thats loại hướng tôi đã nghiêng về phía. tôi chỉ havent đã phải bản địa hóa bất cứ điều gì trước đây. trong thực tế, tôi không cần phải bản địa hóa bất cứ điều gì YET nhưng tôi muốn được chuẩn bị. tôi chỉ thấy mình bỏ qua hầu hết các nội dung không liên quan và nó để lại cho tôi tò mò về những gì tôi nên làm –

+0

Chúng tôi đang trải qua những cơn đau của bản địa hóa các trang web ngay bây giờ. Đối với chúng tôi, đó là một nhóm ứng dụng hoạt động cùng nhau và đã tồn tại được vài năm. Đó không phải là nhiệm vụ nhỏ :). Chắc chắn ít nhất hãy xem xét điều này trước khi cam kết làm thế nào bạn đang đi về mọi thứ. Tôi hy vọng rằng sẽ giúp và tiết kiệm cho bạn làm việc :) –

+0

Tôi tự hỏi quá nếu có bất kỳ lớp trừu tượng với các nguồn lực, ví dụ như vậy tôi có thể thêm một * ở đầu mỗi chuỗi và sau đó biết những gì tôi có và không đã bản địa hoá. Rõ ràng với một HtmlHelper tôi có thể làm điều đó bản thân mình khá dễ dàng - nhưng có lẽ theres một số những thứ khác để học quá –

3

Nếu bạn định sử dụng Resx và không sử dụng điều khiển máy chủ như bạn đang ở trong MVC, tại sao không mở rộng các phương thức trợ giúp MVC để bạn có thể tạo nhãn và văn bản được bản địa hóa? Sau đó, chỉ cần gọi văn bản từ tài nguyên trong phương thức trợ giúp.

ví dụ: '<% = Html.CultureLabel ("ResouceId")%>'

hoặc '<% = Html.CultureButton ("Name", "ResouceId", HtmlButtonType.Button)%>'

Just một ý nghĩ.

Đồng thời quản lý toàn cầu hóa trang web là MUCH dễ dàng hơn với resx cho văn bản.

+0

+1 để mở rộng phương thức trợ giúp - rất hay. –