如何在Blazor组件和App.razor中转换字符串?

时间:2020-08-27 11:19:57

标签: .net-core localization blazor razor-pages blazor-webassembly

我想本地化诸如“ NavMenu.razor”或“ App.razor”页面之类的共享组件的字符串。

我设法按照general .NET Core instruction 和更多specific Blazor documentation中的描述来翻译网页中的内容:

  • 使用正确的名称(例如PageName.de.resx)创建资源文件。
  • 使用@inject Microsoft.Extensions.Localization.IStringLocalizer<PageName> _l10n将本地化器注入Razor页面。
  • 使用_l10n["Product name"]将页面内的文本翻译成正确的“产品名称”。

此方法不适用于“ NavMenu.razor”和“ App.razor”。

请注意:我使用MatBlazor UI库中的MatNavMenu进行主导航。

我在任何地方都找不到文档。非常感谢您的帮助。

1 个答案:

答案 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等

enter image description here

然后在组件中注入

    @inject IStringLocalizer<App> L
    
    @L["YourText"]

本地化程序将使用浏览器语言,并在本例中以App.en-AU.resx,App.en.resx,App.resx顺序查找密钥。如果找不到,它将使用“ YourText”

这是一个出色的WASM项目repo