Sto usando Blazor 3.1 nell'ultima versione di VS 2019.
finora sono in grado di localizzare le etichette delle pagine (titolo, campi tabella ecc.)
Nella ListEmployee.razor
pagina sono in grado di localizzare l'intestazione della tabella ecc. E nella AddEmplyeeValidation.razor
pagina sono in grado di localizzare le etichette dei moduli ma ho problemi a localizzare il messaggio di convalida.
per il messaggio di Employee.cs
convalida per il messaggio di convalida sono definiti in questo file e Resources/Data
cartella con il nome definito come Data.Employee.ar.resx
e Data.Employee.ar.resx
questo non funziona
utilizzando System.ComponentModel.DataAnnotations;
namespace BlazorSPA1.Data {public class Employee {[MaxLength (50)] public string Id {get; impostato; }
[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; }
}
}
Come posso come messaggio di convalida dai file di risorse in base alla lingua per il modulo Aggiungi dipendente.
@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");
}
}
Ho letto alcuni articoli e provato poche cose, ma nulla sembra funzionare
Codice in 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;
});
Sto usando il seguente esempio di Localizzazione, non mostra come localizzare il messaggio di errore https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Immagine della struttura delle cartelle per riferimento
Esempio di file di risorse per la versione inglese allo stesso modo ho anche file arabo
Nella schermata seguente, il nome del campo viene estratto dal file di risorse, ma per il messaggio di convalida viene visualizzato solo in inglese perché non funziona