Blazor wasm本地化只显示密钥



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

WebUI.csproj

<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>

程序.cs

builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");

添加的文件夹:

Resources
Shared.resx
Shared.en.resx

_进口剃须刀

@using WebUI.Resources

视图:

@using System.Globalization
@inject IStringLocalizer<Shared> loc
@CultureInfo.CurrentCulture
@loc["countries"]

文化正在显示DE-DE@loc["countries"]只是打印国家而不是本地化。有什么想法吗?

对于(共享(资源,Blazor遵循与ASP.NET Core相同的设置/规则。

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

如果将options.ResourcesPath设置为Resources,则会得到Resources.WebUI.Resources.Shared.resx而不是WebUI.Resources.Shared.resx

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

builder.Services.AddLocalization();

链接到ASP。NET核心问题

您只指定了一个英文本地化文件:Shared.en.resx

当您在组件中指定@loc["countries"]时,它会尝试使用浏览器区域设置来翻译文本";国家";。

本地化程序查找资源文件Shared.de.resx,但该文件不存在,因此它默认为基本翻译,在本例中为英语。

相关内容

  • 没有找到相关文章

最新更新