【发布时间】:2010-10-18 00:50:30
【问题描述】:
我的控制器名称应该使用我的母语还是英文?当前的最佳实践是什么?如果是英语,我如何确保网址保持在我的母语中?
我知道我的 webapp 不会是多语言的,我宁愿不写很多样板。
【问题讨论】:
我的控制器名称应该使用我的母语还是英文?当前的最佳实践是什么?如果是英语,我如何确保网址保持在我的母语中?
我知道我的 webapp 不会是多语言的,我宁愿不写很多样板。
【问题讨论】:
ASP.NET MVC 中的约定是控制器和操作名称与 URI 中的控制器和操作名称相同,但在特殊情况下(如模棱两可的重载)除外。我认为遵循该约定是一个好主意,即使这意味着控制器和操作名称将使用您的母语,而其余代码将使用英语。如果我被要求调试一个网站,该网站以某种我不懂的语言(如斯瓦希里语)显示,我会发现如果它们反映了斯瓦希里语 URI,则为某个页面找到适当的控制器和操作要容易得多。被翻译成英文。
但是请注意,大多数 Unicode 字符不能出现在 URI 中(没有Punycode)。只有 ASCII 字符的受限子集可以出现在 URI 中。详情请见the specification。
【讨论】:
从 SEO 的角度来看,我认为在 MVC 网站所基于的控制器/视图/操作上使用相同的语言是一个很好的标准。
就我而言,我有一些基于我的母语瑞典语的网站,为了获得最佳的搜索引擎优化和页面排名,当我使用相同的语言时将我的控制器/视图/操作命名为网站上的内容语言。
在控制器/视图/操作中,我总是使用英语作为编码和评论语言。
我不知道这是否是最好的方法,但如果您关心搜索引擎优化和页面排名,感觉这是一个很好的模式.
【讨论】:
您可以用任何语言(UTF-8)编写控制器和控制器的方法名称,这不是问题。对于只支持一种语言的网站来说应该没问题。
【讨论】:
这是您的应用程序,所以当然是您的选择,但如果您有本地语言 URI,那么我也会选择本地语言控制器和操作名称,以确保一致性和易用性。
Jeff Atwood 写了一篇有趣的post,主题是软件开发和英语(我不确定我是否同意,但它很有趣且相关)。它不会回答您的问题,但值得一读。
【讨论】:
如果您要让国际团队查看您的代码,请使用英文名称。如果您要自己完成所有工作,或者让当地人说语言,那么您可以使用当地语言命名。
但请记住,命名约定适用于英语,而不适用于当地语言。所以这是个问题。
【讨论】:
我的意见可能是尝试在 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 ...
希望对你有帮助 干杯
弗雷德。
【讨论】: