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

Jan*_*Jan 2 localization .net-core razor-pages blazor blazor-webassembly

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

我设法按照一般 .NET Core 指令和更具体的 Blazor 文档中的描述翻译页面中的内容:

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

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

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

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

Bri*_*ker 10

简单的:

  • 安装 Microsoft.Extensions.Localization

  • 在programs.cs中

    builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
    builder.Services.AddScoped<IStringLocalizer<App>,StringLocalizer<App>>();
    
    Run Code Online (Sandbox Code Playgroud)
  • 在您的客户端项目中创建一个 Resources 文件夹。添加一个 resx 文件,例如 App.resx,这将是您的默认资源。然后为您希望支持的每种语言添加更多文件。App.fr.resx App.es.resx 等。

在此输入图像描述

然后在组件中注入

    @inject IStringLocalizer<App> L
    
    @L["YourText"]
Run Code Online (Sandbox Code Playgroud)

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

这是 blazor WASM 项目存储库