• ASP.NET 下的资源文件使用


    资源文件通常用在Winform中比较多,其实ASP.NET也可以使用资源文件实现多语言化。
    朋友托我帮他做个小站,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
  • 相关阅读:
    《Linux性能及调优指南》第二章:监控和基准工具2.1-2.2
    《Linux 性能及调优指南》1.5 网络子系统
    《Linux 性能及调优指南》1.4 硬盘I/O子系统
    《Linux性能及调优指南》1.3 Linux文件系统
    《linux性能及调优指南》 3.5 网络瓶颈
    《linux性能及调优指南》 3.4 硬盘瓶颈
    《linux性能及调优指南》 3.3 内存瓶颈
    你应该使用Python3里的这些新特性
    python异步编程
    异步网络编程aiohttp的使用
  • 原文地址:https://www.cnblogs.com/kobewang/p/1629707.html
Copyright © 2020-2023  润新知