如何翻译 Blazor 组件和 App.razor 中的字符串?

How can I translate strings in Blazor components and App.razor?

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

我设法按照 general .NET Core instruction and the more specific Blazor documentation 中所述翻译了我页面中的内容:

此方法对“NavMenu.razor”和“App.razor”均无效。

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

我在任何地方都找不到它的记录。非常感谢帮助。

简单:

  • 安装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”

这是一个 blazor WASM 项目repo