.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