在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
朋友托我帮他做个小站,2钟语言版本的,我想既然是小站那也得给它加点料。刚学了 点资源文件的皮毛,那就用上了哈。示例网站如下http://www.donglongcf.cn. 下面开始如何一步步建立多语言化网站。 第一步: 新建2个资源文件,其中命名为Resource.resx,Resource_En.resx代表英文。 在界面上Aspx文件上,直接
1 <%= Resources.Resource.String1 %>
1 <asp:Label ID="lbl_global" runat="server" Text="<%# Resources.Resource.Button1 %>"></asp:Label>
也可以这样
1 <asp:TextBox ID="TextBox1" runat="server" Text="<%$ Resources:Resource, String1 %>" ></asp:TextBox>
就可以将对应的资源文件的值读取出来 但是,通常我们不是这样使用资源文件。只有在语言切换的时候,才显示不同的语言。比如 点击中文,显示中文语言包,英文则显示英文语言包。所以 我们要对当前语言环境进行设置 第二步: 在页面初始化的时候,设定当前语言环境,中文值为zh-CN,英文则为en-US
1 Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("zh-CN");
但是,我们依然不满足,我们没必要在每个页面的page_load里都加这么一句,太繁琐。 第三步,重写页面的InitializeCulture方法 新建一个InitialCulture
1 protected override void InitializeCulture() 2 { 3 //当前语言变量放在了Session里 也可以放Cookie 4 if (Session["lang"] != null) 5 { 6 Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString()); 7 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Session["lang"].ToString()); 8 // base.InitializeCulture(); 9 } 10 else 11 { 12 Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("zh-CN"); 13 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("zh-CN"); 14 } 15 base.InitializeCulture(); 16 }
1 public partial class _Default :InitialCulture
如果你是个懒惰的程序员,那么每个页面加这么一句肯定也不会满足你。这时 就嗅到了bad smell. 第四步, 建立httpMoudle 通过在httpModle实现全局的控制
1 //应用程序初始化 2 public void Init(HttpApplication app) 3 { 4 app.AcquireRequestState += new EventHandler(context_AcquireRequestState); 5 //这里委托在AcquireRequestState 进行操作是 因为我把全局语言变量 放在了session里 6 //而session 的生成是 在AcquireRequestState 才有效 7 } 8 9 void context_AcquireRequestState(object sender, EventArgs e) 10 { 11 HttpApplication app = sender as HttpApplication; 12 LangGuage(app); 13 } 14 15 private void LangGuage(HttpApplication app) 16 { 17 18 if (app.Context.Session["lang"] == null) 19 app.Context.Session["lang"] = "zh-CN"; 20 Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(app.Context.Session["lang"].ToString()); 21 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(app.Context.Session["lang"].ToString()); 22 } 23 #endregion 这样我们的网站多语言话就初步完成了 剩下的就只是对资源文件的使用而已了 源码下载地址 http://www/kobewang.cn |
请发表评论