J'utilise blazor 3.1 dans la dernière version de VS 2019.
jusqu'à présent, je suis capable de localiser les étiquettes de page (titre, champs de table, etc.)
Dans la ListEmployee.razor
page je suis en mesure de localiser la table , etc. rubrique et la AddEmplyeeValidation.razor
page que je suis en mesure d'étiquettes en Localize mais j'ai problème localisant le message de validation.
pour le message de Employee.cs
validation pour le message de validation sont définis dans ce fichier et Resources/Data
dossier avec un nom défini comme Data.Employee.ar.resx
et Data.Employee.ar.resx
cela ne fonctionne pas
using System.ComponentModel.DataAnnotations;
espace de noms BlazorSPA1.Data {public class Employee {[MaxLength (50)] public string Id {get; ensemble; }
[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; }
}
}
Comment je peux comment le message de validation des fichiers de ressources basé sur la langue du formulaire Ajouter un employé.
@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");
}
}
J'ai lu quelques articles et essayé peu de choses mais rien ne semble fonctionner
Code dans 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;
});
J'utilise l'exemple suivant pour la localisation, il ne montre pas comment localiser le message d'erreur https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Image de structure de dossier pour la réfrence
Exemple de fichier de ressources pour la version anglaise de la même manière que j'ai également un fichier arabe
Dans la capture d'écran ci-dessous, le nom du champ est extrait du fichier de ressources, mais le message de validation ne s'affiche qu'en anglais car il ne fonctionne pas
la source
Cela a déjà été demandé:
Comment ajouter la localisation de ViewModel à Blazor?
J'ai suggéré que l'utilisation de FluentValidation serait une meilleure approche. Voici un lien vers mon dépôt Github qui montre comment cela pourrait fonctionner:
https://github.com/conficient/BlazorValidationLocalization
la source
Je n'ai pas essayé ça!
Dans les documents officiels du noyau asp.net, il y a une section sur la localisation
DataAnnotations
Peut-être que vous y trouvez des indices .la source