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"] 仅打印国家/地区而不是本地化内容。有什么想法吗?
对于(共享)资源,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)
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |