2011-08-02 36 views
4

我用這樣的代碼:MVC不同語言的數據註釋?

@Html.LabelFor(m => m.Login.Password, new { @class = "adm" }) 
    @Html.PasswordFor(m => m.Login.Password, new { @class = "adm", size = 30 }) 
    @Html.ValidationMessageFor(m => m.Login.Password) 

它作爲我的數據註解/消息/標籤全是英文工作正常。然而,有什麼方法可以讓我有多種語言並在它們之間切換?

如果我的網站有一個選擇日語和英語的語言選擇器,該怎麼辦?我可以爲每種語言使用不同的數據註釋嗎?

回答

5

1的資源文件的一些詳細信息>您需要創建一個資源文件爲每種語言

2>然後創建模型,如

public class User 
{ 
    [Required(ErrorMessageResourceType=typeof(Languages.Resource),ErrorMessageResourceName="required")] 
    [Display(ResourceType=typeof(Languages.Resource),Name="name")] 
    public string Name { get; set; } 

} 

3>您的看法s是okie

4>要選擇和設置不同的語言:你可以創建一個淹沒菜單(或任何你想要的),然後在服務器上,將選定的語言存儲在cookie中。併爲每個請求設置current_culture_info如下

string currentChoosenLanguage= readFromCookie(); //or may be from Database, whatever suits you 
    CultureInfo ci = new CultureInfo(currentChoosenLanguage); //i think jp: for japanese 
    System.Threading.Thread.CurrentThread.CurrentUICulture = ci; 
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); 

請檢查下面的鏈接

http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx/

+0

鏈接到Haacked已經死了。這一個有相關的信息:http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx/ – Jowen

1

你將不得不使用全球化/本地化,

您可以resourcenames添加到您的錯誤消息。

例如:

[Required(ErrorMessageResourceName= "PasswordRequired", ErrorMessageResourceType = typeof(MyResource)] 

我建議你的樣子了關於全球化/本地化