Ich verwende Blazor 3.1 in der neuesten Version von VS 2019.
Bisher kann ich Seitenbeschriftungen (Titel, Tabellenfelder usw.) lokalisieren.
Auf ListEmployee.razor
Seite kann ich Tabellenüberschriften usw. lokalisieren und auf AddEmplyeeValidation.razor
Seite kann ich Formularbezeichnungen lokalisieren, aber ich habe Probleme beim Lokalisieren der Validierungsnachricht.
for Validation-Nachricht für Employee.cs
Validierungsnachricht werden in dieser Datei und in diesem Resources/Data
Ordner mit dem Namen definiert, der als definiert ist, Data.Employee.ar.resx
und Data.Employee.ar.resx
dies funktioniert nicht
using System.ComponentModel.DataAnnotations;
Namespace BlazorSPA1.Data {public class Employee {[MaxLength (50)] public string Id {get; einstellen; }}
[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; }
}
}}
Wie kann ich wie Validierungsnachricht aus Ressourcendateien basierend auf der Sprache für das Formular "Mitarbeiter hinzufügen".
@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");
}
}
Ich habe einige Artikel gelesen und einige Dinge ausprobiert, aber nichts scheint zu funktionieren
Code 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;
});
Ich verwende das folgende Beispiel für die Lokalisierung. Es zeigt nicht, wie die Fehlermeldung https://www.c-sharpcorner.com/article/localization-in-blazor-server/ lokalisiert wird.
Ordnerstrukturbild zur Auffrischung
Beispiel für eine Ressourcendatei für die englische Version, genauso wie ich auch eine arabische Datei habe
Im folgenden Screenshot sehen Sie, dass der Feldname aus der Ressourcendatei abgerufen wird. Die Meldung zur Validierung wird jedoch nur auf Englisch angezeigt, da sie nicht funktioniert
Dies wurde schon einmal gefragt:
Wie füge ich Blazor die ViewModel-Lokalisierung hinzu?
Ich schlug vor, dass die Verwendung von FluentValidation ein besserer Ansatz wäre. Hier ist ein Link zu meinem Github-Repo, der zeigt, wie es funktionieren könnte:
https://github.com/conficient/BlazorValidationLocalization
quelle
Ich habe das nicht ausprobiert!
In den offiziellen Dokumenten von asp.net core gibt es einen Abschnitt zum Lokalisieren.
DataAnnotations
Vielleicht finden Sie dort einige Hinweise .quelle