Estoy usando blazor 3.1 en la última versión de VS 2019.
hasta ahora puedo localizar etiquetas de página (título, campos de tabla, etc.)
En la ListEmployee.razor
página puedo localizar el encabezado de la tabla, etc. y en la AddEmplyeeValidation.razor
página puedo localizar las etiquetas del formulario, pero tengo problemas para localizar el mensaje de validación.
El mensaje de Employee.cs
validación para el mensaje de validación se define en este archivo y Resources/Data
carpeta con el nombre definido como Data.Employee.ar.resx
y Data.Employee.ar.resx
esto no funciona
usando System.ComponentModel.DataAnnotations;
espacio de nombres BlazorSPA1.Data {Public class Employee {[MaxLength (50)] public string Id {get; conjunto; }
[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; }
}
}
Cómo puedo cómo mensaje de validación de los archivos de recursos en función del idioma para el formulario Agregar empleado.
@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");
}
}
Leí algunos artículos y probé pocas cosas, pero parece que nada funciona.
Código en Startup.cs`
services.AddServerSideBlazor (opciones => opciones.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;
});
Estoy usando el siguiente ejemplo para Localización, no muestra cómo localizar el mensaje de error https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Imagen de estructura de carpeta para referencia
Ejemplo de archivo de recursos para la versión en inglés de la misma manera también tengo un archivo en árabe
En la siguiente captura de pantalla, el nombre del campo se extraerá del archivo de recursos, pero el mensaje de validación solo se muestra en inglés, ya que no funciona
Esto se ha preguntado antes:
¿Cómo agregar la localización de ViewModel a Blazor?
Sugerí que usar FluentValidation sería un mejor enfoque. Aquí hay un enlace a mi repositorio de Github que demuestra cómo podría funcionar:
https://github.com/conficient/BlazorValidationLocalization
fuente
¡No probé esto!
En los documentos oficiales de asp.net core hay una sección sobre cómo localizarlo.
DataAnnotations
Quizás encuentre algunas pistas allí .fuente