2011-05-17 176 views
0

我讀了一些關於ASP.NET MVC應用程序的文章,但是我只找到關於靜態文本的文章。當下拉菜單的內容必須隨着語言而改變時,哪種策略?ASP.NET MVC本地化

我有一個IList<MyClass>()其中MyClass

public MyClass(){ 
     public int Id { get; set; } 
     public string Code { get; set; } 
     public string EN { get; set; } 
     public string FR { get; set; } 
     public string ES { get; set; } 
} 

根據我的UI的語言,我必須使用EN(英語),FR(法語),..值。

感謝,

回答

2

你可以使用這種方法:

public class LocalizableModel 
{ 
    private Dictionary<string,string> labels = new Dictionary<string,string>(); 
    public string LocalizedLabel 
    { 
     get { return this.labels[Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName]; } 
    } 
} 

而且在Global.asax中

protected void Session_Start(Object Sender, EventArgs e) 
{ 
    // set the correct culture, using cookie, querystring, whatever 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(1033);    
} 
+0

我可以有MyClass,MyClassShoes,MyClassCar,....但所有的時間都是相同的屬性。 – 2011-05-17 20:52:04

+0

所以,你添加一個字典給他們每個人 – mathieu 2011-05-17 21:04:58

2

在我們的情況下,我建議使用EF代碼優先(HTTP:/ /weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx)爲您的商業模式。我最簡單。

使用元數據屬性來本地化屬性名稱和驗證消息(http://afana.me/post/aspnet-mvc-internationalization.aspx)。

使用數據庫存儲的字典將實體代碼映射到人類可讀的本地化名稱。

如果您需要簡單的列表,請使用本地化的字符串資源來定義逗號分隔列表和string.Split()以創建項目列表。

+0

我使用NHibernate ... – 2011-05-19 04:02:44