我正在开发一个 ASP Net Core 2 应用程序,它使用 Microsoft.Extensions.Localization.IStringLocalizer
和 Microsoft.AspNetCore.Mvc.Localization
来提供三语内容。资源文件(例如 Controllers.HomeController.fr.resx
和 Controllers.HomeController.nl.resx
工作正常,以下是典型的 Razor 页面 View :
@using Microsoft.Extensions.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@using System.Globalization;
@inject IStringLocalizer<HomeController> Localizer
@inject IHtmlLocalizer<HomeController> HtmlLocalizer
...
<span style="font-weight: bold">@Localizer["My string 1"]</span>
...
<li>@HtmlLocalizer["My string 2 <span style=\"font-weight: bold;\">with bold</span>."]</li>
在应用程序的其余部分,文化由浏览器 header 确定,如 here 所述.
问题
我正在构建一项功能,该功能必须以用户在表单中指定的语言显示内容,而不管浏览器语言 header 如何。 注意:浏览器语言 header 通常仍用于确定显示整个页面内容的语言,但此特定内容由 ViewComponent
提供并用于创建一个可打印的标签以提供给用户。因此,我也无法在 URL lang
参数中提供语言,因为这会影响整个页面的语言。
我想做类似下面的事情
<span style="font-weight: bold">@Localizer["Usage Instructions", "nl"]</span>
但我认为这不存在(尝试过)。即,在特定于字符串的基础上设置语言/文化。
但是,从 Visual Studio 中的提示(见屏幕截图)看来,arguments
可能允许我设置语言,除了一般本地化教程之外,我找不到太多关于它的文档例如microsoft one .
我能找到的最接近的是 this docs但我仍然看不到 params object[] arguments
提前感谢您的任何建议!
最佳答案
IHtmlLocalizer
包含方法 WithCulture
,它创建具有指定文化的本地化器
@inject IHtmlLocalizer<HomeController> HtmlLocalizer
@{
var nlHtmlLocalizer = HtmlLocalizer.WithCulture(new System.Globalization.CultureInfo("nl"));
}
<li>@nlHtmlLocalizer ["My string 2 <span style=\"font-weight: bold;\">with bold</span>."]</li>
关于c# - 在 Razor Pages 中为 ASP.NET Core 2 Localizer 指定语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121517/