我想本地化共享组件的字符串,例如“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 进行主导航。
我在任何地方都找不到它的记录。非常感谢您的帮助。
Easy:
-
安装 Microsoft.Extensions.Localization
-
在programs.cs中
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.AddScoped<IStringLocalizer<App>,StringLocalizer<App>>();
-
在您的客户端项目中创建一个 Resources 文件夹。添加一个resx文件到
例如 App.resx 这将是您的默认资源。然后
为您希望支持的每种语言添加更多文件。应用程序.fr.resx
App.es.resx 等。
然后在组件中注入
@inject IStringLocalizer<App> L
@L["YourText"]
本地化程序将使用浏览器语言,并在我的例子中按 App.en-AU.resx、App.en.resx、App.resx 顺序查找密钥。如果没有找到,它将使用“YourText”
这是一个 Blazor WASM 项目repo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)