Asp.net core 2.0 本地化在局部视图中不起作用。

Juw*_*wel 4 asp.net-core

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

父视图(Details.cshtml)

@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);
} 
Run Code Online (Sandbox Code Playgroud)

部分视图(_SendMessagePartial.cshtml)

@using Microsoft.AspNetCore.Mvc.Localization 
@model SampleLocalization.Models.BoatSendMessageViewModel 
@inject IViewLocalizer Localizer 

<h5 >@Localizer["Send Message"]</h5> 
Run Code Online (Sandbox Code Playgroud)

@Localizer["Send Message"] 翻译不正确

资源文件结构如下

  • 解决方案
    • 资源
      • 观看次数
          • 详细信息.de-DE.resx

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

Eug*_*tov 5

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

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