• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Asp.netMVC多语言应用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这里以Mvc3模版项目的登录页为例,简单说一下过程:

首先准备资源文件,即语言包。为web site项目添加Resource文件夹,然后在Resource文件夹下添加两个resx文件

命令行工具ResGen.exe将这两个resx文件生成同名的resources文件,如zh-CN.resourcesen-US.resources,生成后将这两个resources文件放到Resource目录下

写一个静态getLang

namespace System.Web.Mvc
{
    using System.Collections;
    using System.Resources;
    using System.Linq;

    public static class LocalizationHelper
    {
        public static string Lang(this HtmlHelper html, string key)
        {
            return GetLang(key);
        }

        public static string GetLang(string key)
        {
            var filePath = HttpContext.Current.Server.MapPath("~/Resource");
            string language = HttpContext.Current.Session["CurrentLanguage"] == null ?
                "zh-CN" : HttpContext.Current.Session["CurrentLanguage"].ToString();
            string resxPath = string.Format(@"{0}\{1}.resources", filePath, language);
            ResourceReader reader = new ResourceReader(resxPath);
            var entry = reader.Cast<DictionaryEntry>().FirstOrDefault<DictionaryEntry>(x => x.Key.ToString() == key);
            reader.Close();
            return entry.Value == null ? "" : (string)entry.Value;
        }

        public static string GetLanguage(this HtmlHelper html)
        {
            return HttpContext.Current.Session["CurrentLanguage"].ToString();
        }
    }
}

  第二步、为动态切换语言,要在Global.asax文件中添加Application_AcquireRequestState事件,如:

protected void Application_AcquireRequestState(object sender, EventArgs e)
        {
            if (HttpContext.Current.Session != null)
            {
                System.Globalization.CultureInfo ci =
                    (System.Globalization.CultureInfo)this.Session["CurrentLanguage"];
                if (ci == null)
                {
                    ci = new System.Globalization.CultureInfo(Request.UserLanguages[0].ToString());
                    this.Session["CurrentLanguage"] = ci;
                }
                System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
                System.Threading.Thread.CurrentThread.CurrentCulture =
                    System.Globalization.CultureInfo.CreateSpecificCulture(ci.Name);
            }
        }

第三步、在HomeController中添加ChangeLanguage方法,很简单、就一句代码,如:

 

 public JsonResult ChangeLanguage()
        {
            string aa = Request["language"];
            Session["CurrentLanguage"] = new System.Globalization.CultureInfo(Request["language"]);
            return Json("操作成功!", JsonRequestBehavior.AllowGet);
        }

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap