Blazor 应用程序中的多元化

问题描述 投票:0回答:1

我尝试将

PO
文件添加到我的 Blazor WASM 应用程序 (.NET 8 / ASPNET Core 8),但我无法成功。 我关注了 AspNetCore docs,其中提到了
OrchardCore.Localization.Core
包,但是当我将其安装到 WASM 应用程序时,它就开始显示错误:

0>Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(491,5): Error NETSDK1082 : There was no runtime pack for Microsoft.AspNetCore.App available for the specified RuntimeIdentifier 'browser-wasm'.
0>------- Finished building project: BlazorApp1. Succeeded: False. Errors: 1. Warnings: 0

无论如何。我只是问 Blazor WebAssembly 应用程序中是否存在任何可能支持复数化的包。 如果没有,我该如何解决多元化问题,因为我在网上找不到任何好的例子。

感谢您的帮助!

.net asp.net-core localization blazor
1个回答
0
投票

正如您提到的,您不想使用像 Humanizer 这样的大包来进行轻量级项目,您可以尝试使用自定义方法。以下是样本:

1)创建多元化服务:

public static class PluralizationService
{
    public static string Pluralize(int count, string singular, string plural)
    {
        return count == 1 ? singular : plural;
    }
}

2) 创建

.resx
本地化文件
Resources.resx
Resources.es.resx

3)在您的组件中应用复数:

@inject IStringLocalizer<MyComponent> Localizer

<h1>@GetPluralizedItemsCount(itemCount)</h1>

@code {
    private int itemCount = 5;

    private string GetPluralizedItemsCount(int count)
    {
        var singular = Localizer["ItemOne"];
        var plural = Localizer["ItemOther", count];
        return PluralizationService.Pluralize(count, singular, plural);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.