2011-02-23 107 views
0

我想在mvc.net中创建多语言应用程序。我想添加屏幕顶部的标志,以便用户可以更改语言。 普莱指导我这样做。mvc .net多语言应用程序

感谢 Munish

+0

[ASP.NET MVC应用程序中的多种语言的可能重复?](http://stackoverflow.com/questions/4034/multiple-languages-in-an-asp-net-mvc-application) – 2011-02-23 07:12:53

+0

是你的问题如何创建多语言应用程序或如何在屏幕顶部添加标志?可能的重复http://stackoverflow.com/questions/4034/multiple-languages-in-an-asp-net-mvc-application – 2011-02-23 07:14:41

回答

2

定义这条路线:

routing.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, lang = "en" } 
); 

你所有的旗帜在顶部应该做的事,如:

<a href="<%= Url.Action(this.ViewContext.RouteData.Values["action"], this.ViewContext.RouteData.Values["controller"], new { lang = "de" }) %>"> 
    <img scr="..." /> 
</a> 

所以他们总是指向当前页面一种不同的语言。如果您的语言变体为1:1,这很有用。但是,如果你的语言页面不同,你应该总是用特定的语言指向主页。

关于翻译,您可以使用资源,也可以将它们存储在数据库中。尽管最近我在资源文件中保存了静态接口字符串,但在过去我都使用过。不仅仅是一个,因为它变得太压倒了,而是每个文件需要一个资源文件。这样我得到一些重复的定义(如确定,取消等),但它更容易这样维护它。因为如果你只有一个资源文件,事情变化的地方变得非常不可预测。

所以我所有的*.cs需要字符串(即异常消息)的文件都有它们的*.resx伴侣。我的看法也是一样。几乎所有的视图都有自己的公司*.resx,它定义了所有的静态内容。

如果您有多种语言,则必须为您需要的每种语言提供*.lang.resx