[多國語系]-前端驗證測試記錄-後續作法

針對前篇測試,在參考相關的文章有提到:
Culture 屬性: 負責判定與文化特性相關功能的結果 (例如: 日期、數字和貨幣格式等)。
UICulture 屬性: 負責覺得要為網頁載入哪一國的資源檔。
根據以上的特性,程式調整如下:

1.南非語系維持en-ZA不變

針對英文語系的處理,在設定CurrentCulture時,設定成en,而設定CurrentUICulture則依使用者設定的語系,如下程式判斷en-開頭則取en來使用。
void MvcApplication_BeginRequest(object sender, EventArgs e)
{
 if (CurrentCultureName.StartsWith("en-"))
  System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en");
 else
     System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(CurrentCultureName);
    System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo(CurrentCultureName);
}

2.資源檔依.en-ZA及en-US 命名

不以en命名,這是用來給CurrentUICulture讀取資源檔用

image

優點


1.前端維持一持性的驗證方法,不用針對語系特性處理

2.後端不用處理轉型的問題,例:若前端通過驗證的數值小數是用小數點(1.123),而設定的CurrentCulture是en-ZA(小點是逗號)時,則Model繫結會發生轉型失敗,此問題是可以透過DefaultModelBinder Class來自行處理轉型問題。

3.透過設定CurrentUICulture,可以保有各國家獨立的顯示訊息、文字,例:美國en-us、南非en-za

缺點


針對其他國家需在另外作處理,例如:歐系德國

參考文章


http://blog.miniasp.com/post/2009/06/02/Auto-language-detection-by-browser-lang-settings-in-ASPNET.aspx

http://stackoverflow.com/questions/329033/what-is-the-difference-between-currentculture-and-currentuiculture-properties-of

測試程式


https://github.com/kimx/GlobalizeValidationLab/

這個網誌中的熱門文章

[TFS] 分支與合併

[.NET Core] 將專案發行至IIS