使用@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 核心端点路由问题。你应该找到几篇关于这方面路由的文章。
我可以将 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 核心端点路由问题。你应该找到几篇关于这方面路由的文章。