ASP.NET MVC - 使用 MVC 實作多國語系(二)

摘要:ASP.NET MVC - 使用 MVC 實作多國語系(二)

在上一篇所介紹的多國語言方式,是透過改變 瀏覽器 的 語言 來達到切換不同語系,本篇將來實作讓使用者可以自行定義語系。

步驟一:在 Global.asax 中加入 Application_BeginRequest 事件

Code:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
 //將 Cookies 的 MyLang 取出,主要是要指定語系
 HttpCookie MyLang = Request.Cookies["MyLang"];
 if (MyLang != null)
 {
  System.Threading.Thread.CurrentThread.CurrentCulture =
   new System.Globalization.CultureInfo(MyLang.Value);
  System.Threading.Thread.CurrentThread.CurrentUICulture =
   new System.Globalization.CultureInfo(MyLang.Value);
 }
}

步驟二:在 Controller 中加入程式碼

Code:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string ddlMyLang)
{
 //建立一個 Cookies 來儲存語系
 //並搭配 Application_BeginRequest 事件來切換語系
 HttpCookie MyLang = new HttpCookie("MyLang");
 MyLang.Value = ddlMyLang.Trim();
 MyLang.Expires.AddMinutes(30);
 Response.Cookies.Add(MyLang);

 return Redirect(Url.Action("Index", "Home"));
}

步驟三:在 View 中稍為改寫一下

Code:

<%using (Html.BeginForm("Index", "Home"))
  { %>
 <h2><%= Html.Encode(ViewData["Message"]) %></h2>
 <p><%=Resources.Resource.l星期一l%></p>
 <p><%=Resources.Resource.l星期二l%></p>
 <p><%=Resources.Resource.l星期三l%></p>
 <p><%=Resources.Resource.l星期四l%></p>
 <p><%=Resources.Resource.l星期五l%></p>
 <p><%=Resources.Resource.l星期六l%></p>
 <p><%=Resources.Resource.l星期日l%></p>
 <%= Html.DropDownList("ddlMyLang", new List<SelectListItem>() { new SelectListItem() { Text = "繁體中文", Value = "zh-TW" }, new SelectListItem() { Text = "英文", Value = "en-US" } })%>
 <input type="submit" value="變更語系" />
<%} %>

結果: