Sascha Manns Ответов: 1

Как использовать локализатор в строке


Я написал этот код в своем блоге:

@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model BlogStory
@{
    var word_count = @Model.Body; // Get all content of the story
    var counts = word_count.Count(ch => ch == ' ') + 1;
    var minutes = counts / 200; // Calculate Minutes
    var seconds = counts % 200 / (200 / 60); // Calculate Seconds
    var str_minutes = (minutes == 1) ? Localizer["minute"].ToString() : Localizer["minutes"].ToString();
    var str_seconds = (seconds == 1) ? Localizer["second"].ToString() : Localizer["seconds"].ToString();
}
<div class="card card-body post-card">
    <div class="post-preview">
        <h3 itemprop="headline" class="post-title"><a href="/@Model.Slug">@Model.Title</a></h3>
        <p class="post-meta">
            class="fas fa-calendar"> @Model.DatePublished.AddHours(-4).ToString("MMMM dd, yyyy")
            class="fas fa-edit"> Sascha Manns
            class="fas fa-comments"> <span class="disqus-comment-count" data-disqus-identifier="@Model.UniqueId">@Localizer["comments"]</span>.
            class="fas fa-clock"> @minutes @str_minutes  @seconds @str_seconds
            <br />
            class="fas fa-tags">
            @foreach (var tag in Model.Categories.Split(','))
            {
                <a asp-controller="Tag" asp-action="Index" asp-route-tag="@tag" asp-route-page="">@tag</a>
            }
        </p>
        @Html.Raw(Model.GetSummary())
    </div>
</div>


Во время выполнения я получаю:
0 Microsoft.AspNetCore.В MVC.Локализации.LocalizedHtmlString
30 Microsoft.AspNetCore.В MVC.Локализации.LocalizedHtmlString

Она должна:
0 минут
30 секунд

Что я уже пробовал:

Я также попробовал Локализатор["минута"] без ".ToString()" но это дает ошибку.

Все изменения, которые я сделал для локализации, видны там: Как локализовать поставщика данных[^]

1 Ответов

Рейтинг:
1

Sascha Manns

Решение, которое я нашел, - это использование "значения". Вот я и воспользовался им так:

Localizer["minutes"].Value

Этот работает отлично.