使用@page 指令进行本地化

localization with @page directive

我可以将 blazor 的 @page 指令与 IStringLocalizer 一起使用吗?,如下所示:

@page @Localizer["myComponent"]

我知道我们不能在彼此之后使用两个 @ 但有人可以告诉我如何做到这一点吗?

谢谢

简单的回答是你不能这样做。

@page 指令在 C# 中为 Blazor 页面生成的 class 上生成一个 RouteAttribute。您可以在 /obj:

中生成的代码中看到这一点
    [Microsoft.AspNetCore.Components.RouteAttribute("/")]
    public partial class Index : Microsoft.AspNetCore.Components.ComponentBase
    {

这意味着路由是在编译时定义的。

Localize函数在运行时使用浏览器的语言设置来确定语言并翻译资源。

那怎么办呢? Blazor 页面的路由需要固定,但您需要为每种语言添加一组本地化路由:这意味着有一个本地化路由的“翻译映射”到 'actual route'.

例如"/fr/indice" => "/index"

与 Blazor 路由问题相比,这更像是一个 ASP.NET 核心端点路由问题。你应该找到几篇关于这方面路由的文章。