我尝试将
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 应用程序中是否存在任何可能支持复数化的包。 如果没有,我该如何解决多元化问题,因为我在网上找不到任何好的例子。
感谢您的帮助!
正如您提到的,您不想使用像 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);
}
}