Asp.net核心2.0本地化在部分视图中不起作用



我正在使用嵌入式资源文件实现基于约定的本地化。这是我的示例代码。

父视图(Details.cs.html(

@using Microsoft.AspNetCore.Mvc.Localization
@model SampleLocalization.Models.BoatDetailsViewModel
@inject IViewLocalizer Localizer
<section class="location-map">
<h4 class="section-title">
@Localizer["Location"]
</h4>
<input type="hidden" asp-for="Latitude" />
<input type="hidden" asp-for="Longitude" />
<section id="map_canvas" style="min-height:525px;"></section>
</section>
@{
await Html.RenderPartialAsync("_SendMessagePartial", 
Model.SendMessageViewModel);
} 

部分视图(_SendMessagePartial.cs.html(

@using Microsoft.AspNetCore.Mvc.Localization 
@model SampleLocalization.Models.BoatSendMessageViewModel 
@inject IViewLocalizer Localizer 
<h5 >@Localizer["Send Message"]</h5> 

@本地化程序["发送消息"]未正确翻译

资源文件结构如下

  • 解决方案
    • 资源
      • 视图
          • 细节.de-de.resx

注意:资源文件夹结构与视图文件夹结构相同

基本上,问题是因为它是一个不同的文件,所以翻译应该在Solution/Resources/Views/Boat/_SendMessagePartial.de-DE.resx中。解决方法是创建共享资源文件。您可以将空的SharedResource类添加到项目的根目录中,然后在视图中使用IStringLocalizer<SharedResource>而不是IViewLocalizer

以下是与此相关的文档https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-2.2

最新更新