ASP.NET MVC中控制器名称的语言

时间:2009-04-07 11:33:00

标签: asp.net-mvc multilingual

我的控制器名称应该是我的母语还是英语?目前的最佳做法是什么?如果用英语,我该如何确保网址保留在我的母语中?

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

6 个答案:

答案 0 :(得分:2)

ASP.NET MVC中的约定是控制器和操作名称与URI中的控制器和操作相同,除非在特殊情况下,例如模糊重载。我认为遵循该约定是一个好主意,即使它意味着控制器和动作名称将使用您的母语,其余代码将使用英语。如果我被要求调试一个以某种语言显示的网站,我不会像斯瓦希里语那样理解,我会发现,如果某个页面反映了斯瓦希里语的URI,那么找到适当的控制器和操作会比我想象的要容易得多。被翻译成英文。

但请注意,大多数Unicode字符不能出现在URI中(没有Punycode)。 URI中只能出现受限制的ASCII字符子集。有关详细信息,请参阅the specification

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

杰夫阿特伍德写了一篇关于软件开发和英语的有趣post(不确定我同意,但它很有趣且相关)。它不会回答你的问题,但值得一读。

答案 4 :(得分:0)

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

请记住,命名约定适用于英语,而不适用于本地语言。这是一个问题。

答案 5 :(得分:0)

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

const string 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 ...

我希望它有所帮助, 干杯

佛瑞德。