Razor не возвращает локализованный ресурс в соответствии с текущей культурой потоков, и я понятия не имею, почему. Он всегда возвращает строку в нейтральном файле resx.
PurchaseOrderModel.cs:
public class PurchaseOrderModel : ProfileSpecificEntityModel {
[Display(ResourceType = typeof(PurchaseOrderModelRes), Name = "ExpectedDeliveryOn")]
public DateTimeOffset? ExpectedDeliveryOn { get; set; }
}
В той же папке у меня есть:
PurchaseOrderModelRes.resx
-> Нейтральный ресурс. Модификатор доступа установлен на «public».
PurchaseOrderModelRes.fr.resx
-> Локализованный французский ресурс.
PurchaseOrderReport.cs:
<div>@Html.DisplayNameFor(purchaseOrder => purchaseOrder.ExpectedDeliveryOn)</div>
PurchaseOrderController.cs:
[HttpGet]
public async Task<IActionResult> PurchaseOrdersReportAsync([FromQuery] PurchaseOrderListQueryOptionsModel queryOptions) {
CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fr"); //Should use *.fr.resx files.
CultureInfo.CurrentUICulture = CultureInfo.GetCultureInfo("fr");
PaginatedList<PurchaseOrder> purchaseOrders = await _purchaseOrderService.GetPurchaseOrdersAsync(CurrentUser, queryOptions.ToQueryOptions());
PaginatedListModel<PurchaseOrderModel> purchaseOrderModels = _paginatedListModelConverter.Convert(purchaseOrders, p => _purchaseOrderModelConverter.Convert(p));
return View("PurchaseOrderReport", purchaseOrderModels.Items);
}
Startup.cs:
services.AddMvc().
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();