我想本地化诸如“ NavMenu.razor”或“ App.razor”页面之类的共享组件的字符串。
我设法按照general .NET Core instruction 和更多specific Blazor documentation中的描述来翻译网页中的内容:
@inject Microsoft.Extensions.Localization.IStringLocalizer<PageName> _l10n
将本地化器注入Razor页面。_l10n["Product name"]
将页面内的文本翻译成正确的“产品名称”。此方法不适用于“ NavMenu.razor”和“ App.razor”。
请注意:我使用MatBlazor UI库中的MatNavMenu进行主导航。
我在任何地方都找不到文档。非常感谢您的帮助。
答案 0 :(得分:0)
简单:
安装Microsoft.Extensions.Localization
在programs.cs中
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.AddScoped<IStringLocalizer<App>,StringLocalizer<App>>();
在客户端项目中创建一个Resources文件夹。将resx文件添加到 例如App.resx,这将是您的默认资源。然后 为您希望支持的每种语言添加更多文件。 App.fr.resx App.es.resx等
然后在组件中注入
@inject IStringLocalizer<App> L
@L["YourText"]
本地化程序将使用浏览器语言,并在本例中以App.en-AU.resx,App.en.resx,App.resx顺序查找密钥。如果找不到,它将使用“ YourText”
这是一个出色的WASM项目repo