Blazor wasm 本地化仅显示按键

Upv*_*ote 5 c# blazor blazor-webassembly

接下来从 Accept-Language 标头动态设置区域性以本地化我的 blazor wasm 应用程序。

WebUI.csproj

<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
Run Code Online (Sandbox Code Playgroud)

程序.cs

builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
Run Code Online (Sandbox Code Playgroud)

添加的文件夹:

Resources
   Shared.resx
   Shared.en.resx
Run Code Online (Sandbox Code Playgroud)

_Imports.razor

@using WebUI.Resources
Run Code Online (Sandbox Code Playgroud)

视图中:

@using System.Globalization
@inject IStringLocalizer<Shared> loc
@CultureInfo.CurrentCulture
@loc["countries"]
Run Code Online (Sandbox Code Playgroud)

文化正在展示DE-DE。@loc["countries"] 仅打印国家/地区而不是本地化内容。有什么想法吗?

pfx*_*pfx 4

对于(共享)资源,Blazor遵循与ASP.NET Core.

简而言之,当您指定 an 时options.ResourcesPath,它的值将作为前缀添加到您的资源名称中,默认情况下为namespace+ 资源名称。

options.ResourcesPath设置为后,Resources您将得到Resources.WebUI.Resources.Shared.resx而不是WebUI.Resources.Shared.resx.

要解决这个问题,不要设置 a ResourcesPath,只需使用

builder.Services.AddLocalization();
Run Code Online (Sandbox Code Playgroud)

链接到 ASP.NET Core 问题