Tôi đang sử dụng blazor 3.1 trong phiên bản mới nhất của VS 2019.
cho đến nay tôi có thể bản địa hóa nhãn trang (tiêu đề, trường bảng, v.v.)
Trong ListEmployee.razor
trang tôi có thể bản địa hóa tiêu đề bảng, v.v. và trên AddEmplyeeValidation.razor
trang tôi có thể Bản địa hóa nhãn biểu mẫu nhưng tôi gặp vấn đề trong việc bản địa hóa thông báo xác thực.
đối với thông báo Xác thực cho thông báo Employee.cs
xác thực được xác định trong tệp & Resources/Data
thư mục này với tên được xác định là Data.Employee.ar.resx
và Data.Employee.ar.resx
điều này không hoạt động
sử dụng System.ComponentModel.DataAnnotations;
không gian tên BlazorSPA1.Data {lớp công khai Nhân viên {[MaxLạng (50)] chuỗi công khai Id {get; bộ; }
[Required (ErrorMessage ="Name is RRRequired")]
[StringLength(20, ErrorMessage = "Name is too long.")]
public string Name { get; set; }
[Required]
[StringLength(20)]
public string Department { get; set; }
[MaxLength(100)]
public string Designation { get; set; }
[MaxLength(100)]
public string Company { get; set; }
[MaxLength(100)]
public string City { get; set; }
}
}
Làm thế nào tôi có thể thông báo xác thực từ các tệp Tài nguyên dựa trên ngôn ngữ cho biểu mẫu Thêm nhân viên.
@page "/addemployeeValidation"
@inject NavigationManager NavigationManager
@inject IEmployeeService EmployeeService
@inject IStringLocalizer<AddEmployeeValidation> L
<h2>Create Employee</h2>
<hr />
<EditForm Model="@employee" OnValidSubmit="@CreateEmployee">
<DataAnnotationsValidator />
<ValidationSummary />
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="Name" class="control-label">@L["Name"]</label>
<input for="Name" class="form-control" @bind="@employee.Name" />
<ValidationMessage For="@(()=> employee.Name)" />
</div>
<div class="form-group">
<label for="Department" class="control-label">@L["Department"]</label>
<input for="Department" class="form-control" @bind="@employee.Department" />
</div>
<div class="form-group">
<label for="Designation" class="control-label">@L["Designation"]</label>
<input for="Designation" class="form-control" @bind="@employee.Designation" />
</div>
<div class="form-group">
<label for="Company" class="control-label">@L["Company"]</label>
<input for="Company" class="form-control" @bind="@employee.Company" />
</div>
<div class="form-group">
<label for="City" class="control-label">@L["City"]</label>
<input for="City" class="form-control" @bind="@employee.City" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Save" />
<input type="button" class="btn" @onclick="@Cancel" value="Cancel" />
</div>
</div>
</div>
</EditForm>
@code {
Employee employee = new Employee();
protected async Task CreateEmployee()
{
await EmployeeService.CreateEmployee(employee);
NavigationManager.NavigateTo("listemployees");
}
void Cancel()
{
NavigationManager.NavigateTo("listemployees");
}
}
Tôi đọc vài bài báo và thử vài thứ nhưng dường như không có gì hiệu quả
Mã trong Startup.cs`
services.AddServerSideBlazor (tùy chọn => tùy chọn.DetailedErrors = true);
services.AddLocalization(options => options.ResourcesPath = "Resources");
var supportedCultures = new List<CultureInfo> { new CultureInfo("en"), new CultureInfo("ar") };
services.Configure<RequestLocalizationOptions>(options =>
{
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en");
options.SupportedUICultures = supportedCultures;
});
Tôi đang sử dụng ví dụ sau để Bản địa hóa, nó không hiển thị cách bản địa hóa thông báo lỗi https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Hình ảnh cấu trúc thư mục cho sự điều chỉnh
Ví dụ về tệp tài nguyên cho phiên bản tiếng Anh giống như cách tôi có tệp tiếng Ả Rập
Trong ảnh chụp màn hình bên dưới, tên trường của bạn sẽ được kéo từ tệp Tài nguyên nhưng đối với thông báo Xác thực chỉ hiển thị bằng tiếng Anh vì nó không hoạt động