c# - 在 Razor Pages 中为 ASP.NET Core 2 Localizer 指定语言

标签 c# asp.net-core asp.net-core-mvc

我正在开发一个 ASP Net Core 2 应用程序,它使用 Microsoft.Extensions.Localization.IStringLocalizerMicrosoft.AspNetCore.Mvc.Localization 来提供三语内容。资源文件(例如 Controllers.HomeController.fr.resxControllers.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 .

Visual Studio hint

我能找到的最接近的是 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/

相关文章:

c# - 使用 WHERE 子句重构简单的 SQL 语句

c# - 具有嵌套属性的动态 linq 表达式树

c# - 使用绑定(bind)文件从 JAXB WSDL 生成 C# 客户端代码

c# - ASP.NET Core 3.0 中 ExpressionHelper 的替代品?

c# - 如何在 ASP.NET Core 中设置 cookie validateInterval?

asp.net-mvc - ASP.NET Core MVC 验证不需要的字段

c# - 使用 AutoMapper 将 IList<TSource> 映射到 (Iesi.Collections.Generic) ISet<TDestination>

c# - .Net Core 2.1 是否支持 LINQ 和 Lambda 表达式?

asp.net-core - 使用 AD B2C 时如何添加 OnTokenValidated 事件处理程序?

c# - IServiceCollection 不包含 AddMvc() 的定义