2016-02-16 20 views
8

Tôi đã dành khoảng một tuần để tìm hiểu cách Localization hoạt động trong ASP.NET Core 1.0. Tôi đã thử nghiệm rất nhiều tùy chọn, nhưng tôi không thể làm cho nó hoạt động.ASP.NET 5 (MVC 6) - Tài nguyên Bản địa hóa

Tôi đã đọc về các lỗi trong Visual Studio, tôi đã đọc tất cả các bài viết về cách hoạt động của ngay bây giờ (Article1, Article2, Article3) và tôi đã kiểm tra và thử nghiệm tất cả về example trên Công GitHub Repository.

My Goal:

tôi chỉ muốn làm cho nó hoạt động giống như tôi đã làm trong ASP.NET MVC 5.

Tôi đã cấu hình Startup.cs của tôi như thế này:

Configure Phần:

var requestLocalizationOptions = new RequestLocalizationOptions 
      { 
       // Set options here to change middleware behavior 
       SupportedCultures = new List<CultureInfo> 
       { 
        new CultureInfo("en-US"), 
        new CultureInfo("es-ES") 
       }, 
       SupportedUICultures = new List<CultureInfo> 
       { 
        new CultureInfo("en-US"), 
        new CultureInfo("es-ES") 

       } 
      }; 

      app.UseRequestLocalization(requestLocalizationOptions, defaultRequestCulture: new RequestCulture("en-US")); 

Định cấu hình dịch vụ Mục:

// Add MVC services to the services container. 
      services 
       .AddMvc() 
       .AddViewLocalization(options => options.ResourcesPath = "Resources") 
       .AddDataAnnotationsLocalization(); 

Trong thư mục của tôi Tài nguyên, tôi có các tệp .resx của mình. Tôi đã sao chép nó từ ví dụ chính thức, nhưng không có cách nào ... Không có lỗi, chỉ cần không làm việc.

Nếu tôi kiểm tra ví dụ Bản địa hóa của Repo chính thức, nó hoạt động. Nhưng tôi không thể sửa đổi để thích ứng với MVC 6.

Tôi đã tạo một kho lưu trữ trên GitHub cho mã của tôi và kiểm tra nó. (https://github.com/chemitaxis/Localization.StackOverflow)

Ai đó có thể giúp tôi không? Tôi nghĩ rất nhiều người đang gặp phải những vấn đề này.

Cảm ơn !!

Trả lời

5

Ok, tôi đã giải quyết nó ... Tôi sẽ cập nhật ví dụ của mình về GitHub vào ngày mai.

tôi đã tạo ra một _ViewImports, và thêm nó:

@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" 
@using System.Threading.Tasks 
@using AspNet5Localization 
@using AspNet5Localization.Resources 
@using Microsoft.AspNet.Mvc.Localization 
@using Microsoft.Extensions.Localization 
@inject IStringLocalizer<AmazingResource> SR 

Sau đó, tôi đã tạo ra một HomeController Views/Home/Index.cshtml tập tin.

Giống như tôi đã tiêm trong xem tôi trong _ViewImports các IStringLocalizer SR tôi có thể sử dụng nó trong Razor xem tôi chỉ sử dụng:

@SR["Name"] 

Tôi không biết nếu nó là cách tốt nhất để làm điều đó, nhưng nó hoạt động. Nếu ai đó có thể giải thích cách tốt nhất để làm điều đó, vui lòng trả lời câu hỏi này.

Giải pháp hoàn chỉnh hoạt động: https://github.com/chemitaxis/Localization.StackOverflow

Cảm ơn.

+0

Đây chính xác là những gì tôi đang tìm kiếm. Tôi đã cố gắng chạy ví dụ cho RC2 https: // github.com/damienbod/AspNet5Localization/tree/rc2 tuy nhiên tôi không thể quản lý. Tôi đã có vấn đề liên quan đến phiên bản rc2 của dnx. Bạn đã quản lý để chạy phiên bản này chưa? – feradz

+0

Chưa ... Tôi sẽ làm sau. Tôi sẽ nâng cấp chi nhánh mới – chemitaxis

+0

Bạn có thể thêm nội địa hóa ví dụ với chú thích dữ liệu không. Tôi đã thử '[Bắt buộc (ErrorMessageResourceName =" Name_is_required ", ErrorMessageResourceType = typeof (PersonalInfo))] [MaxLength (Constants.MaxNameLength)] tên chuỗi công khai {get; bộ; } 'nhưng nó không hoạt động. – feradz

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