ASP.NETCore 3.1路由(Route,ActionName)本地化怎么做?

How to do ASP.NET Core 3.1 routing (Route, ActionName) localization?

我正在开发一个 ASP.NET 核心 3.1 MVC 网站,该网站使用域名来确定本地化的文化。

例如,进入域 example.com 的所有请求都将具有 en-US 文化,而进入域 example.org 的所有请求将具有 de-DE 文化.

我修改了我以前未本地化的网站以在视图等中使用本地化。我使用了自己的 RequestCultureProvider 实现来设置基于域名的文化。结果如下:

注意:Products是控制器,My-Application是应用程序的名称(URL来自数据库的slug),HelpProducts 控制器中的操作。 URL 结构是我在网站上使用的实际结构。

但是,我也想翻译 URL,同时依赖实际源代码中的英文名称(控制器 类 和动作函数)。

例如,这是一个只有一个动作的虚拟控制器(由于简化而与上面的示例 URL 不同)。

[Controller]
[Route("/Products")]
public class ProductController : Controller
{
    [ActionName("EnglishName")]
    public IActionResult EnglishName()
    {
        return View();
    }
}

对于这个简化的例子:

如何在不手动构建动态路由的情况下实现这一点table?

目前,我没有起点。搜索结果例如ASP.NET 核心路由本地化 只是提出在 URL 中具有文化的答案(域名除外),但这不是我的用例。我尝试为属性使用变量名,但这当然行不通。

Filip Woj 在他的 blog post.

中指出了一个解决方案

他展示了 MapDynamicControllerRouteDynamicRouteValueTransformer class 结合使用来转换路由。