【问题标题】:Specify language for ASP.NET Core 2 Localizer in Razor Pages在 Razor 页面中指定 ASP.NET Core 2 本地化程序的语言
【发布时间】:2019-08-02 22:15:45
【问题描述】:

我正在开发一个使用Microsoft.Extensions.Localization.IStringLocalizer 和Microsoft.AspNetCore.Mvc.Localization 提供三语内容的ASP Net Core 2 应用程序。资源文件(例如 Controllers.HomeController.fr.resx 和 Controllers.HomeController.nl.resx 工作正常,以下是典型的 Razor 页面视图:

@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>

在应用程序的其余部分中,文化由浏览器标头确定,如 here 所述。

问题

我正在构建一项功能,该功能必须以用户指定的语言在表单中显示内容,而不管浏览器语言标题如何。 注意:浏览器语言标头通常仍用于确定显示整体页面内容的语言,但此特定内容由ViewComponent 提供,用于创建可打印标签给予用户。因此我也无法在 URL lang 参数中提供语言,因为这会影响整个页面的语言。

我想做如下的事情

<span style="font-weight: bold">@Localizer["Usage Instructions", "nl"]</span>

但我认为这不存在(尝试过)。即,在特定字符串的基础上设置语言/文化。

但是,从 Visual Studio 中的提示(见屏幕截图)看来,arguments 可能允许我设置语言,除了microsoft one 等一般本地化教程之外,我找不到太多关于它的文档.

我能找到的最接近的是this docs,但我仍然看不到params object[] arguments 的详细信息

提前感谢您的任何建议!

【问题讨论】:

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


    【解决方案1】:

    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>
    

    【讨论】:

      猜你喜欢
      • 2021-07-04
      • 1970-01-01
      • 2020-06-16
      • 2019-09-03
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多