【问题标题】:Language for controllers names in ASP.NET MVCASP.NET MVC 中控制器名称的语言
【发布时间】:2010-10-18 00:50:30
【问题描述】:

我的控制器名称应该使用我的母语还是英文?当前的最佳实践是什么?如果是英语,我如何确保网址保持在我的母语中?

我知道我的 webapp 不会是多语言的,我宁愿不写很多样板。

【问题讨论】:

    标签: asp.net-mvc multilingual


    【解决方案1】:

    ASP.NET MVC 中的约定是控制器和操作名称与 URI 中的控制器和操作名称相同,但在特殊情况下(如模棱两可的重载)除外。我认为遵循该约定是一个好主意,即使这意味着控制器和操作名称将使用您的母语,而其余代码将使用英语。如果我被要求调试一个网站,该网站以某种我不懂的语言(如斯瓦希里语)显示,我会发现如果它们反映了斯瓦希里语 URI,则为某个页面找到适当的控制器和操作要容易得多。被翻译成英文。

    但是请注意,大多数 Unicode 字符不能出现在 URI 中(没有Punycode)。只有 ASCII 字符的受限子集可以出现在 URI 中。详情请见the specification

    【讨论】:

      【解决方案2】:

      从 SEO 的角度来看,我认为在 MVC 网站所基于的控制器/视图/操作上使用相同的语言是一个很好的标准。

      就我而言,我有一些基于我的母语瑞典语的网站,为了获得最佳的搜索引擎优化页面排名,当我使用相同的语言时将我的控制器/视图/操作命名为网站上的内容语言。

      在控制器/视图/操作中,我总是使用英语作为编码和评论语言。

      我不知道这是否是最好的方法,但如果您关心搜索引擎优化页面排名,感觉这是一个很好的模式.

      【讨论】:

        【解决方案3】:

        您可以用任何语言(UTF-8)编写控制器和控制器的方法名称,这不是问题。对于只支持一种语言的网站来说应该没问题。

        【讨论】:

        • 这不是真的。 URI 只能包含特定的、受限制的 ASCII 字符子集。因此,尽管您可以用任何语言编写控制器名称,但如果您遵循控制器名称出现在 URI 中的约定,则只能使用可以用罗马字符表示的名称。
        【解决方案4】:

        这是您的应用程序,所以当然是您的选择,但如果您有本地语言 URI,那么我也会选择本地语言控制器和操作名称,以确保一致性和易用性。

        Jeff Atwood 写了一篇有趣的post,主题是软件开发和英语(我不确定我是否同意,但它很有趣且相关)。它不会回答您的问题,但值得一读。

        【讨论】:

          【解决方案5】:

          如果您要让国际团队查看您的代码,请使用英文名称。如果您要自己完成所有工作,或者让当地人说语言,那么您可以使用当地语言命名。

          但请记住,命名约定适用于英语,而不适用于当地语言。所以这是个问题。

          【讨论】:

            【解决方案6】:

            我的意见可能是尝试在 global.asax 中按语言显式加载路线定义。

            常量字符串 DEFAULT_LANGUAGE = "en";

            routes.MapRoute("Product_EN", "en/Product/{action}", new { controller="Product", action="Index"} );

            routes.MapRoute("Product_FR", "fr/Produit/{action}", new { controller="Product", action="Index"} );

            routes.MapRoute("Product_ES", "es/Produto/{action}", new { controller="Product", action="Index"} );

            route.MapRoute("Default", "{language}/{controller}/{action}/{id}", new { language = DEFAULT_LANGUAGE, controller="Home", action="Index", id=" "});

            注意:这些是示例,您应该从全局资源中检索翻译后的名称。

            但是我们不得不在你的视图中引用正确的路由名称来使用 RouteActions。无论如何,这是一种解决方法,但允许您将 URL 翻译到您的网站中,例如:

            www.mysite.com/produit/afficher www.mysite.com/product/show ...

            希望对你有帮助 干杯

            弗雷德。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-12
              • 2011-03-01
              • 2016-01-25
              • 2011-01-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多