.net 使用資原始檔實現多語言切換
1,建幾個你需要的語言資原始檔,如圖:
2,
public class Localization3Attribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var DefaultLg = string.Empty;
var queryString = filterContext.HttpContext.Request.QueryString["lang"];
if (queryString != null && !string.IsNullOrWhiteSpace(queryString.ToString()))
{
///從路由資料(url)裡設定語言
DefaultLg = queryString.ToString();
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(DefaultLg);
}
else
{
//從Cookie裡面讀取語言
var tc = filterContext.HttpContext.Request.Cookies["LG"];
if (tc == null)
{
//從Session裡讀取語言設定
var Sessionlang = filterContext.HttpContext.Session["LG"];
if (Sessionlang == null)
{
//如果Session為空,則從Cokkie裡面讀取客戶端語言首選項已排序陣列
DefaultLg = filterContext.HttpContext.Request.UserLanguages[0];
//設定預設語言
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(DefaultLg);
}
else
{
DefaultLg = Sessionlang.ToString();
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(DefaultLg);
}
}
else
{
DefaultLg = tc.Value;
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(DefaultLg);
}
}
//設定Session語言值
filterContext.HttpContext.Session["LG"] = DefaultLg;
//設定Cookie語言值
HttpCookie _cookie = new HttpCookie("LG", Thread.CurrentThread.CurrentUICulture.Name);
_cookie.Expires = DateTime.Now.AddYears(1);
filterContext.HttpContext.Response.SetCookie(_cookie);
base.OnActionExecuting(filterContext);
}
}
3
4
5