2008-08-06 57 views
64

Cách tốt nhất để hỗ trợ nhiều ngôn ngữ cho giao diện trong ứng dụng ASP.NET MVC là gì? Tôi đã thấy mọi người sử dụng các tệp tài nguyên cho các ứng dụng khác. Đây có phải là cách tốt nhất không?Nhiều ngôn ngữ trong ứng dụng ASP.NET MVC?

+0

thể trùng lặp của [Làm thế nào để bản địa hoá ứng dụng ASP.NET MVC?] (Http: // stackoverflow.com/questions/192465/how-to-localize-asp-net-mvc-application) – Marijn

+0

trang web đa ngôn ngữ với tham số truyền đi, hãy kiểm tra [Trang web đa ngôn ngữ này trong MVC 4 C#] (http: //lesson8.blogspot .in/2013/03/multi-language-website-in-mvc-4-c.html) – Sender

Trả lời

40

Nếu bạn đang sử dụng công cụ xem mặc định thì tài nguyên cục bộ sẽ hoạt động trong chế độ xem. Tuy nhiên, nếu bạn cần lấy các chuỗi tài nguyên trong một hành động điều khiển, bạn không thể lấy các tài nguyên cục bộ và phải sử dụng các tài nguyên toàn cầu.

Điều này có ý nghĩa khi bạn nghĩ về nó vì tài nguyên cục bộ là cục bộ cho trang aspx và trong bộ điều khiển, bạn thậm chí không chọn chế độ xem của mình.

+0

điều này cũng sẽ hoạt động trong công cụ xem dao cạo? –

+0

Có điều này có ý nghĩa đối với bộ điều khiển. Nhưng những gì về Xem mô hình? Chúng thường (cụ thể) dành riêng cho chế độ xem và sẽ có ý nghĩa khi tham chiếu các tài nguyên cụ thể xem trong mã mô hình chế độ xem. Tôi tự hỏi nếu có một cơ chế để làm cho một tập tin tài nguyên địa phương để xem và xem mô hình của nó ... –

+0

@Haacked, hi, chúng tôi có một trang web mua sắm trong asp mvc, vì vậy khi người dùng chọn ngôn ngữ arabic, chúng tôi muốn làm cho toàn bộ trang web arabic, chúng tôi có thể sử dụng microsoft bing [dịch giả] (https://www.bing.com/translator/) hoặc microsoft [translator API] (http://www.microsoft.com/en-us/translator/products) .aspx) hoặc tôi nên mua [localize.js] (https://localizejs.com/features) để đạt được điều này nhanh chóng? – stom

3

Có tài nguyên vẫn là cách tốt nhất để hỗ trợ nhiều ngôn ngữ trong môi trường .NET. Bởi vì chúng dễ tham khảo và thậm chí dễ dàng hơn để thêm các ngôn ngữ mới.

Site.resx 
Site.en.resx 
Site.en-US.resx 
Site.fr.resx 
etc... 

Vì vậy, bạn vẫn phải sử dụng các tệp tài nguyên.

+0

Chúng nên được đặt như thế nào để hoạt động? –

21

tôi thấy this resource là rất hữu ích

nó một wrapper quanh HttpContext.Current.GetGlobalResourceStringHttpContext.Current.GetLocalResourceString cho phép bạn gọi các nguồn lực như thế này ...

// default global resource 
Html.Resource("GlobalResource, ResourceName") 

// global resource with optional arguments for formatting 
Html.Resource("GlobalResource, ResourceName", "foo", "bar") 

// default local resource 
Html.Resource("ResourceName") 

// local resource with optional arguments for formatting 
Html.Resource("ResourceName", "foo", "bar") 

Vấn đề duy nhất tôi thấy là bộ điều khiển không có quyền truy cập vào các chuỗi khôi phục cục bộ.

1

Một số giải pháp khác được đề cập là câu trả lời không hoạt động đối với phiên bản phát hành MVC (họ đã làm việc với các phiên bản alpha/beta trước đó).

Đây là một bài viết tốt mô tả một cách để thực hiện nội địa hóa sẽ được mạnh mẽ, đánh máy và sẽ không phá vỡ các kiểm tra đơn vị của bộ điều khiển và quan điểm: localization guide for MVC v1

2

dự án The Orchard sử dụng một phương pháp tắt gọi là "T" để làm tất cả các bản dịch chuỗi trong trang. Vì vậy, bạn sẽ thấy các thẻ có @T ("A String to Translate").

Tôi có ý định xem xét cách thực hiện điều này sau hậu trường và có khả năng sử dụng nó trong các dự án trong tương lai. Tên viết tắt giữ mã sạch hơn vì nó sẽ được sử dụng rất nhiều.

Điều tôi thích về cách tiếp cận này là chuỗi gốc (tiếng Anh, trong trường hợp này) vẫn dễ thấy trong mã và không yêu cầu tra cứu trong công cụ tài nguyên hoặc một số vị trí khác để giải mã chuỗi thực đây.

Xem http://orchardproject.net để biết thêm thông tin.

+0

Có những trường hợp chuỗi nguồn chính xác giống hệt nhau "A String to Translate" sẽ phải được dịch khác nhau dựa trên bối cảnh xung quanh. Điều này đặc biệt xảy ra với các chuỗi một từ. – springy76

0

Đây là một lựa chọn khác, và bạn sẽ có quyền truy cập vào các CurrentUICulture trong bộ điều khiển:

Kiểm tra MVC3-multi-language

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