Я использую Blazor 3.1 в последней версии VS 2019.
пока я могу локализовать ярлыки страниц (заголовок, поля таблицы и т. д.)
На ListEmployee.razor
странице я могу локализовать заголовок таблицы и т. Д., А на AddEmplyeeValidation.razor
странице я могу локализовать метки форм, но у меня проблема с локализацией сообщения проверки.
для проверки сообщения для Employee.cs
проверки сообщения определены в этом файле и Resources/Data
папке с именем, определенным как, Data.Employee.ar.resx
и Data.Employee.ar.resx
это не работает
using System.ComponentModel.DataAnnotations;
пространство имен BlazorSPA1.Data {публичный класс Employee {[MaxLength (50)] публичная строка Id {get; набор; }
[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; }
}
}
Как я могу, как проверка сообщения из файлов ресурсов на основе языка для формы Добавить сотрудника.
@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");
}
}
Я прочитал несколько статей и попробовал немного, но, похоже, ничего не работает
Код в 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;
});
Я использую следующий пример для локализации, он не показывает, как локализовать сообщение об ошибке https://www.c-sharpcorner.com/article/localization-in-blazor-server/
Изображение структуры папок для справки
Пример файла ресурсов для английской версии таким же образом, у меня также есть арабский файл
На скриншоте ниже вы увидите, что имя поля извлекается из файла ресурсов, но для сообщения проверки отображается только на английском языке, поскольку оно не работает.
Это было задано ранее:
Как добавить локализацию ViewModel в Blazor?
Я предположил, что лучше использовать FluentValidation. Вот ссылка на мой репозиторий Github, который демонстрирует, как это может работать:
https://github.com/conficient/BlazorValidationLocalization
источник
Я не пробовал это!
В официальных документах ядра asp.net есть раздел, как локализовать.
DataAnnotations
Может быть, вы найдете там некоторые подсказки .источник