Укажите язык для локализатора ASP.NET Core 2 в бритвенных страницах - PullRequest
2 голосов
/ 12 марта 2019

Я работаю над приложением ASP Net Core 2, которое использует Microsoft.Extensions.Localization.IStringLocalizer и Microsoft.AspNetCore.Mvc.Localization для предоставления трехъязычного контента.Файлы ресурсов (например, 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>

В остальной части приложения культура определяется заголовком браузера, как описано здесь .

Вопрос

Я создаю функцию, которая должна отображать контент на языке, указанном пользователем вформа, независимо от заголовка языка браузера. Примечание : Заголовок языка браузера по-прежнему обычно используется для определения языка, на котором отображается общее содержимое страницы, но этот конкретный контент предоставляется ViewComponentи используется для создания печатной метки для предоставления пользователям. Поэтому я также не могу предоставить язык в параметре URL lang, так как это повлияет на язык всей страницы.

Я хочу сделатьчто-то вроде следующего

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

, но я не думаю, что это существует (пробовал). То есть, установите язык / культуру на основе строки.

КакКак видно из подсказки в Visual Studio (см. скриншот), arguments может позволить мне установить язык, но я просто не могу найти много документации по нему, кроме общих руководств по локализации, таких как microsoft one .

Visual Studio hint

Самое близкое, что я могу найти, это это документы , но я до сих пор не вижу подробностей params object[] arguments

Заранее спасибо за любые предложения!

1 Ответ

1 голос
/ 12 марта 2019

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...