2011-02-23 76 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