我正在使用嵌入式资源文件实现基于约定的本地化。这是我的示例代码。
父视图(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