【问题标题】:How to organize multilingual URLs in ASP.Net Core Razor Pages?如何在 ASP.Net Core Razor 页面中组织多语言 URL?
【发布时间】:2019-09-03 01:12:35
【问题描述】:

ASP.NET Core 2.2.0

我正在 ASP.NET Core 中寻找基于语言的 url。在网上找到了很多 .NET Core MVC 的示例,但无法在 Razor Pages 中运行。

我想要实现的是:

  • domain.com/informatie -> 链接到默认语言的“信息”页面(对我来说是荷兰语)
  • domain.com/en/information -> 链接到相同的英文页面

为此我需要两个功能:

  1. 识别url中的语言,或者在没有提供语言标签时设置默认语言
  2. 翻译我的页面模型的名称

我将编写一个自定义方法来翻译内容。

最佳拟合示例

我发现了 2 个示例,它们的功能几乎与我想要的相同,但它们使用的是 MVC:

第二个看起来不错,我尝试为 Razor Pages 重写它,但卡在 LocalizationController.cs(因为我没有使用控制器,而是使用 Pagemodel)CultureActionLinkTagHelper.cs(我使用 asp-page属性)。

是否有人在 Razor Pages 中修复了此问题并愿意分享代码?或者有谁能帮我解决?

【问题讨论】:

    标签: c# asp.net-core razor


    【解决方案1】:

    您需要在构建应用时考虑全球化/本地化。

    这是来自微软的official documentation

    你可能会发现这个Developing Multicultural Web Application 的教程很有帮助,它适用于 DotNetCore 2.1 Razor Pages,但它也适用于 2.2。

    另外,她是 GitHub 中的sample project for localizing razor pages

    【讨论】:

    • 查看了教程,它对我有很大帮助。但对我来说最后一个缺失的链接是如何翻译 Pagemodels(网址中的页面名称)。这也可能吗?
    • 您是否想要以英语为<a href="/en/register/">Register</a> 和西班牙语为<a href="/es/registro/">Registro</a> 的示例?如果是这样,我不喜欢这样做,它会给路由添加一个复杂的逻辑,这并不是真正必要的。仅本地化显示文本就足够了。
    • 是的,这就是我想要的。我们有一家国际公司,向全世界销售产品,甚至面向不会说或读英语的人。我真的很想要它,以便每个人都能理解我们的网址。在这个例子中,link 是一个非常简单的逻辑,但它是为 MVC 而不是 Razor 编写的。
    • @CribAd 我一直希望在 MVC 中执行此操作,我很惊讶这似乎并不常见 - 我和你一样,对于我们的非英语客户来说,很高兴他们可以理解的 URL。毕竟 MVC 的驱动力是“使 URL 可被破解”......我知道你在寻找 Razor Pages 但我很高兴你找到了我可以在 MVC 中尝试的东西!
    • @KrishanPatel 不客气!确实,这 2 个链接示例非常适合 MVC!
    猜你喜欢
    • 2021-10-27
    • 2022-01-25
    • 2019-08-02
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多