2018/06/26

[C#] 替 Model 狀態訊息添加多國語系吧

在 MVC 中使用多國語系其實沒有很大的問題。但若將 Model 的狀態訊息 (如: Display, ErrorMessage) 也套用多國語系,這倒是第一次嘗試,因此這篇就來記錄一下。

Step.1 建立語系檔

首先在 Visual Stuio 中建立語系片語檔。除了可用 VS 內建的工具外,推薦安裝 ResXManager 套件,可在一個視窗內同時編輯所有語系內容,功能可說是非常強大呢。

建立兩個語系、兩個片語

Step.2 建立 Model 及語系

接著建立 SignIn 資料模型,並將 Model 驗證的錯誤訊息進行多語系設定。
using System.ComponentModel.DataAnnotations;

namespace WebApplication1.Models
{
    public class SignIn
    {
        [Required(ErrorMessageResourceType =typeof(MsgResource), ErrorMessageResourceName = "AccountIsRequired")]
        public string Account { get; set; }

        [Required(ErrorMessageResourceType = typeof(MsgResource), ErrorMessageResourceName = "PasswordIsRequired")]
        public string Password { get; set; }
    }
}


其實這樣基本上就大功告成了。不過實際運行時卻發現:雖然語系有正確設定,但 Model 驗證回傳的錯誤訊息卻還是回傳預設語系 (英文)。原來 Web.Config 中 system.web 區段內的 Globalization 還需要額外設定:
<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />

搞定!

沒有留言 :

張貼留言

注意:只有此網誌的成員可以留言。