Saya menggunakan blazor 3.1 dalam versi terbaru dari VS 2019.
sejauh ini saya dapat melokalkan label halaman (judul, bidang tabel dll.)
Di ListEmployee.razor
halaman saya bisa melokalkan judul tabel dll. Dan pada AddEmplyeeValidation.razor
halaman saya bisa melokalkan label formulir tetapi saya punya masalah melokalisasi pesan validasi.
untuk pesan Validasi untuk pesan Employee.cs
validasi didefinisikan dalam file & Resources/Data
folder ini dengan nama yang ditentukan Data.Employee.ar.resx
dan Data.Employee.ar.resx
ini tidak berfungsi
menggunakan System.ComponentModel.DataAnnotations;
namespace BlazorSPA1.Data {karyawan kelas publik {[MaxLength (50)] public string Id {get; set; }
[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; }
}
}
Bagaimana saya bisa bagaimana memvalidasi pesan dari file Sumber Daya berdasarkan bahasa untuk formulir Tambahkan Karyawan.
@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");
}
}
Saya membaca beberapa artikel dan mencoba beberapa hal tetapi sepertinya tidak ada yang berhasil
Kode dalam Startup.cs`
services.AddServerSideBlazor (options => options.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;
});
Saya menggunakan contoh berikut untuk Pelokalan, itu tidak menunjukkan bagaimana melokalkan pesan kesalahan https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Gambar struktur folder untuk perbaikan
Contoh file sumber daya untuk versi bahasa Inggris dengan cara yang sama saya punya file Arab juga
Pada tangkapan layar di bawah ini Anda akan Nama bidang ditarik dari file Sumber Daya tetapi untuk pesan Validasi hanya ditampilkan dalam Bahasa Inggris karena tidak berfungsi
Ini telah ditanyakan sebelumnya:
Bagaimana cara menambahkan lokalisasi ViewModel ke Blazor?
Saya menyarankan agar menggunakan FluentValidation akan menjadi pendekatan yang lebih baik. Berikut ini tautan ke repo Github saya yang menunjukkan cara kerjanya:
https://github.com/conficient/BlazorValidationLocalization
sumber
Saya tidak mencoba ini!
Dalam dokumen resmi inti asp.net ada bagian cara melokalkan
DataAnnotations
Mungkin Anda menemukan beberapa petunjuk di sana .sumber