Blazor wasm 本地化仅显示键
Blazor wasm localization showing just keys
跟随 Dynamically set the culture from the Accept-Language header 本地化了我的 blazor wasm 应用程序。
WebUI.csproj
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
Program.cs
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
已添加文件夹:
Resources
Shared.resx
Shared.en.resx
_Imports.razor
@using WebUI.Resources
在视图中:
@using System.Globalization
@inject IStringLocalizer<Shared> loc
@CultureInfo.CurrentCulture
@loc["countries"]
文化正在显示DE-DE。 @loc["countries"] 只打印国家而不是本地化。有什么想法吗?
您只指定了一个英文本地化文件:Shared.en.resx
。
当您在组件中指定 @loc["countries"]
时,它会尝试使用浏览器区域设置来翻译文本“国家/地区”。
本地化程序查找资源文件 Shared.de.resx
但该文件不存在,因此它默认为基本翻译,在本例中为英语。
对于(共享)资源,Blazor
遵循与 ASP.NET Core
相同的 setup/rules。
简而言之,当您指定 options.ResourcesPath
时,它的值将作为前缀添加到您的资源名称中,
默认情况下是 namespace
+ 资源名称。
如果 options.ResourcesPath
设置为 Resources
,您将得到 Resources.WebUI.Resources.Shared.resx
而不是 WebUI.Resources.Shared.resx
。
求解,不用设置ResourcesPath
,直接用
builder.Services.AddLocalization();
跟随 Dynamically set the culture from the Accept-Language header 本地化了我的 blazor wasm 应用程序。
WebUI.csproj
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>
Program.cs
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
已添加文件夹:
Resources
Shared.resx
Shared.en.resx
_Imports.razor
@using WebUI.Resources
在视图中:
@using System.Globalization
@inject IStringLocalizer<Shared> loc
@CultureInfo.CurrentCulture
@loc["countries"]
文化正在显示DE-DE。 @loc["countries"] 只打印国家而不是本地化。有什么想法吗?
您只指定了一个英文本地化文件:Shared.en.resx
。
当您在组件中指定 @loc["countries"]
时,它会尝试使用浏览器区域设置来翻译文本“国家/地区”。
本地化程序查找资源文件 Shared.de.resx
但该文件不存在,因此它默认为基本翻译,在本例中为英语。
对于(共享)资源,Blazor
遵循与 ASP.NET Core
相同的 setup/rules。
简而言之,当您指定 options.ResourcesPath
时,它的值将作为前缀添加到您的资源名称中,
默认情况下是 namespace
+ 资源名称。
如果 options.ResourcesPath
设置为 Resources
,您将得到 Resources.WebUI.Resources.Shared.resx
而不是 WebUI.Resources.Shared.resx
。
求解,不用设置ResourcesPath
,直接用
builder.Services.AddLocalization();