如何解决如何在Blazor组件和App.razor中转换字符串?
我想本地化诸如“ NavMenu.razor”或“ App.razor”页面之类的共享组件的字符串。
我设法按照general .NET Core instruction 和更多specific Blazor documentation中的描述来翻译网页中的内容:
- 使用正确的名称(例如PageName.de.resx)创建资源文件。
- 使用
@inject Microsoft.Extensions.Localization.IStringLocalizer<PageName> _l10n
将本地化器注入Razor页面。 - 使用
_l10n["Product name"]
将页面内的文本翻译成正确的“产品名称”。
此方法不适用于“ NavMenu.razor”和“ App.razor”。
请注意:我使用MatBlazor UI库中的MatNavMenu进行主导航。
我在任何地方都找不到文档。非常感谢您的帮助。
解决方法
简单:
-
安装Microsoft.Extensions.Localization
-
在programs.cs中
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); builder.Services.AddScoped<IStringLocalizer<App>,StringLocalizer<App>>();
-
在客户端项目中创建一个Resources文件夹。将resx文件添加到 例如App.resx,这将是您的默认资源。然后 为您希望支持的每种语言添加更多文件。 App.fr.resx App.es.resx等
然后在组件中注入
@inject IStringLocalizer<App> L
@L["YourText"]
本地化程序将使用浏览器语言,并在本例中以App.en-AU.resx,App.en.resx,App.resx顺序查找密钥。如果找不到,它将使用“ YourText”
这是一个出色的WASM项目repo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。