. net 6 Blazor服务器应用程序本地化



我想根据浏览器的语言首选项向我的应用程序添加语言资源。

Blazor server application, .net, c#

我将在razor页面上使用这样的语法。@localizer("helloworld"我希望本地化器知道浏览器中的语言设置,然后使用适当的资源文件。

我使用ISO语言代码的资源文件。应用程序需要支持英语和法语,所以我有资源。Resx和resource. first . Resx

我花了很多时间试图让这个工作。文档似乎很简单,但我没有成功过。

应用程序将编译并运行。不管浏览器的语言设置如何,默认的英语语言总是会出现。我的理论是浏览器语言没有被检测到,或者资源文件的命名不正确,阻止了本地化器使用它。

第一个教训是,当builder.Services.AddLocalization();在program.cs中声明是重要的。如果在错误的位置(行)

有没有人有使用。net6和Blazor服务器应用程序的任何经验?

谢谢,马克。

关于本地化的完整示例。

https://github.com/iso8859/AspNetCoreAuthMultiLang

#region Localization
builder.Services.AddLocalization(option => option.ResourcesPath = "Resources");
builder.Services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>()
{
new CultureInfo("en-US"),
new CultureInfo("fr-FR")
};
options.DefaultRequestCulture = new RequestCulture("en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
#endregion

#编辑因为服务器端blazor应用程序是单页应用程序,你不能改变cookie。更改cookie的唯一方法是进行页面刷新。这在AuthController.cs

中完成对于WASM项目,您可以使用Javascript设置cookie该值用于en-US

Set-Cookie: .AspNetCore.Culture=c%3Den-US%7Cuic%3Den-US; path=/

以上两篇文章都提供了我实现所需的信息。在假设您知道所有正确的参数设置时,MS文档中的一些内容有点含糊,但经过一些调整后,我成功地构建了应用程序所需的解决方案。谢谢大家的帮助。

相关内容

  • 没有找到相关文章

最新更新